From 4a31dce4e2f69d40ef1ef24d254fe7b844a9613b Mon Sep 17 00:00:00 2001 From: John Bowen Date: Thu, 25 May 2023 10:03:59 -0700 Subject: [PATCH 01/30] Adding GUI prototype apps --- App/Cosmos.DataTransfer.App/App.xaml | 26 + App/Cosmos.DataTransfer.App/App.xaml.cs | 28 + App/Cosmos.DataTransfer.App/AppSettings.cs | 7 + .../Cosmos.DataTransfer.App.csproj | 63 ++ .../Data/AppDataService.cs | 149 +++++ .../Features/Execution/AddLogMessageAction.cs | 19 + .../Execution/CancelExecutionAction.cs | 23 + .../Features/Execution/ClearLogsAction.cs | 18 + .../Features/Execution/ExecutionExtensions.cs | 19 + .../Features/Execution/ExecutionState.cs | 19 + .../Execution/ExportSettingsFileAction.cs | 51 ++ .../Execution/GenerateCommandAction.cs | 49 ++ .../Execution/RunMigrationJobAction.cs | 50 ++ .../Features/Job/JobState.cs | 11 + .../Features/Settings/LoadExtensionsAction.cs | 26 + .../Features/Settings/SelectSinkAction.cs | 31 + .../Features/Settings/SelectSourceAction.cs | 31 + .../Features/Settings/SettingsState.cs | 22 + .../Features/StateActionHandler.cs | 9 + .../IAppDataService.cs | 10 + App/Cosmos.DataTransfer.App/Main.razor | 11 + App/Cosmos.DataTransfer.App/MainPage.xaml | 14 + App/Cosmos.DataTransfer.App/MainPage.xaml.cs | 9 + App/Cosmos.DataTransfer.App/MauiProgram.cs | 44 ++ App/Cosmos.DataTransfer.App/Pages/Index.razor | 31 + .../Pages/Index.razor.cs | 29 + .../Pages/Index.razor.css | 5 + .../Platforms/MacCatalyst/AppDelegate.cs | 9 + .../Platforms/MacCatalyst/Info.plist | 30 + .../Platforms/MacCatalyst/Program.cs | 15 + .../Platforms/Windows/App.xaml | 8 + .../Platforms/Windows/App.xaml.cs | 24 + .../Platforms/Windows/Package.appxmanifest | 46 ++ .../Platforms/Windows/app.manifest | 15 + .../Properties/launchSettings.json | 8 + .../Resources/AppIcon/appicon.svg | 4 + .../Resources/AppIcon/appiconfg.svg | 8 + .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 107124 bytes .../Resources/Images/dotnet_bot.svg | 93 +++ .../Resources/Raw/AboutAssets.txt | 15 + .../Resources/Splash/splash.svg | 8 + .../SavedWindowState.cs | 57 ++ .../Shared/ExecutionToolbar.razor | 58 ++ .../Shared/JobToolbar.razor | 37 ++ .../Shared/MainLayout.razor | 35 ++ .../Shared/MainLayout.razor.css | 86 +++ .../Shared/NavMenu.razor | 29 + .../Shared/NavMenu.razor.css | 62 ++ App/Cosmos.DataTransfer.App/_Imports.razor | 13 + .../wwwroot/css/app.css | 84 +++ .../wwwroot/css/bootstrap/bootstrap.min.css | 7 + .../css/bootstrap/bootstrap.min.css.map | 1 + .../wwwroot/css/open-iconic/FONT-LICENSE | 86 +++ .../wwwroot/css/open-iconic/ICON-LICENSE | 21 + .../wwwroot/css/open-iconic/README.md | 114 ++++ .../font/css/open-iconic-bootstrap.min.css | 1 + .../open-iconic/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 ++++++++++++++++ .../open-iconic/font/fonts/open-iconic.ttf | Bin 0 -> 38220 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes .../wwwroot/favicon.ico | Bin 0 -> 5430 bytes .../wwwroot/index.html | 33 + .../Cosmos.DataTransfer.Ui.csproj | 23 + .../ExtensionDefinition.cs | 15 + .../ExtensionManifestUtility.cs | 235 +++++++ .../ExtensionSelector.razor | 24 + .../ExtensionSelector.razor.cs | 36 ++ .../ExtensionSetting.cs | 84 +++ App/Cosmos.DataTransfer.Ui/IDataService.cs | 13 + .../MessageOutput/MessageLog.razor | 30 + .../MessageOutput/MessageLog.razor.cs | 74 +++ .../MessageOutput/MessageLog.razor.css | 14 + .../MessageOutput/MessageLog.razor.js | 3 + .../SettingEditor.razor | 61 ++ App/Cosmos.DataTransfer.Ui/SettingsList.razor | 15 + App/Cosmos.DataTransfer.Ui/_Imports.razor | 4 + .../wwwroot/background.png | Bin 0 -> 378 bytes .../wwwroot/exampleJsInterop.js | 6 + App/Cosmos.DataTransfer.Web/App.razor | 12 + .../Cosmos.DataTransfer.Web.csproj | 58 ++ .../Pages/ClientDataService.cs | 54 ++ App/Cosmos.DataTransfer.Web/Pages/Index.razor | 25 + .../Pages/Index.razor.cs | 62 ++ .../Pages/Index.razor.css | 15 + App/Cosmos.DataTransfer.Web/Program.cs | 21 + .../Properties/launchSettings.json | 38 ++ .../Shared/MainLayout.razor | 13 + .../Shared/MainLayout.razor.css | 87 +++ App/Cosmos.DataTransfer.Web/SinkManifest.json | 586 ++++++++++++++++++ .../SourceManifest.json | 255 ++++++++ App/Cosmos.DataTransfer.Web/_Imports.razor | 11 + .../wwwroot/css/app.css | 101 +++ .../wwwroot/css/bootstrap/bootstrap.min.css | 7 + .../css/bootstrap/bootstrap.min.css.map | 1 + .../wwwroot/css/open-iconic/FONT-LICENSE | 86 +++ .../wwwroot/css/open-iconic/ICON-LICENSE | 21 + .../wwwroot/css/open-iconic/README.md | 114 ++++ .../font/css/open-iconic-bootstrap.min.css | 1 + .../open-iconic/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 ++++++++++++++++ .../open-iconic/font/fonts/open-iconic.ttf | Bin 0 -> 28028 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes .../wwwroot/favicon.png | Bin 0 -> 1148 bytes .../wwwroot/icon-192.png | Bin 0 -> 2626 bytes .../wwwroot/index.html | 32 + App/CosmosDbApp.sln | 45 ++ .../ExtensionManifestBuilder.cs | 10 + .../Manifest/PropertyType.cs | 1 + 110 files changed, 5190 insertions(+) create mode 100644 App/Cosmos.DataTransfer.App/App.xaml create mode 100644 App/Cosmos.DataTransfer.App/App.xaml.cs create mode 100644 App/Cosmos.DataTransfer.App/AppSettings.cs create mode 100644 App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj create mode 100644 App/Cosmos.DataTransfer.App/Data/AppDataService.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Job/JobState.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs create mode 100644 App/Cosmos.DataTransfer.App/Features/StateActionHandler.cs create mode 100644 App/Cosmos.DataTransfer.App/IAppDataService.cs create mode 100644 App/Cosmos.DataTransfer.App/Main.razor create mode 100644 App/Cosmos.DataTransfer.App/MainPage.xaml create mode 100644 App/Cosmos.DataTransfer.App/MainPage.xaml.cs create mode 100644 App/Cosmos.DataTransfer.App/MauiProgram.cs create mode 100644 App/Cosmos.DataTransfer.App/Pages/Index.razor create mode 100644 App/Cosmos.DataTransfer.App/Pages/Index.razor.cs create mode 100644 App/Cosmos.DataTransfer.App/Pages/Index.razor.css create mode 100644 App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs create mode 100644 App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist create mode 100644 App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs create mode 100644 App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml create mode 100644 App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs create mode 100644 App/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest create mode 100644 App/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest create mode 100644 App/Cosmos.DataTransfer.App/Properties/launchSettings.json create mode 100644 App/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg create mode 100644 App/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg create mode 100644 App/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 App/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg create mode 100644 App/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt create mode 100644 App/Cosmos.DataTransfer.App/Resources/Splash/splash.svg create mode 100644 App/Cosmos.DataTransfer.App/SavedWindowState.cs create mode 100644 App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor create mode 100644 App/Cosmos.DataTransfer.App/Shared/JobToolbar.razor create mode 100644 App/Cosmos.DataTransfer.App/Shared/MainLayout.razor create mode 100644 App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css create mode 100644 App/Cosmos.DataTransfer.App/Shared/NavMenu.razor create mode 100644 App/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css create mode 100644 App/Cosmos.DataTransfer.App/_Imports.razor create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/app.css create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/favicon.ico create mode 100644 App/Cosmos.DataTransfer.App/wwwroot/index.html create mode 100644 App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj create mode 100644 App/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs create mode 100644 App/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs create mode 100644 App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor create mode 100644 App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs create mode 100644 App/Cosmos.DataTransfer.Ui/ExtensionSetting.cs create mode 100644 App/Cosmos.DataTransfer.Ui/IDataService.cs create mode 100644 App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor create mode 100644 App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs create mode 100644 App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css create mode 100644 App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js create mode 100644 App/Cosmos.DataTransfer.Ui/SettingEditor.razor create mode 100644 App/Cosmos.DataTransfer.Ui/SettingsList.razor create mode 100644 App/Cosmos.DataTransfer.Ui/_Imports.razor create mode 100644 App/Cosmos.DataTransfer.Ui/wwwroot/background.png create mode 100644 App/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js create mode 100644 App/Cosmos.DataTransfer.Web/App.razor create mode 100644 App/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj create mode 100644 App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs create mode 100644 App/Cosmos.DataTransfer.Web/Pages/Index.razor create mode 100644 App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs create mode 100644 App/Cosmos.DataTransfer.Web/Pages/Index.razor.css create mode 100644 App/Cosmos.DataTransfer.Web/Program.cs create mode 100644 App/Cosmos.DataTransfer.Web/Properties/launchSettings.json create mode 100644 App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor create mode 100644 App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css create mode 100644 App/Cosmos.DataTransfer.Web/SinkManifest.json create mode 100644 App/Cosmos.DataTransfer.Web/SourceManifest.json create mode 100644 App/Cosmos.DataTransfer.Web/_Imports.razor create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/app.css create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/favicon.png create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/icon-192.png create mode 100644 App/Cosmos.DataTransfer.Web/wwwroot/index.html create mode 100644 App/CosmosDbApp.sln diff --git a/App/Cosmos.DataTransfer.App/App.xaml b/App/Cosmos.DataTransfer.App/App.xaml new file mode 100644 index 00000000..cdfb7e1e --- /dev/null +++ b/App/Cosmos.DataTransfer.App/App.xaml @@ -0,0 +1,26 @@ + + + + + + #512bdf + White + + + + + + + + \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/App.xaml.cs b/App/Cosmos.DataTransfer.App/App.xaml.cs new file mode 100644 index 00000000..11984653 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/App.xaml.cs @@ -0,0 +1,28 @@ + +namespace Cosmos.DataTransfer.App; + +public partial class App : Application +{ + public App() + { + InitializeComponent(); + + MainPage = new MainPage(); + } + + protected override Window CreateWindow(IActivationState? activationState) + { + var window = base.CreateWindow(activationState); + window.Title = "Azure Cosmos DB Desktop Data Migration Tool"; + var windowState = new SavedWindowState("Main"); + + if (windowState.X != null) window.X = windowState.X.Value; + if (windowState.Y != null) window.Y = windowState.Y.Value; + if (windowState.Width != null) window.Width = windowState.Width.Value; + if (windowState.Height != null) window.Height = windowState.Height.Value; + + window.SizeChanged += (_, _) => { new SavedWindowState("Main", window).Save(); }; + + return window; + } +} diff --git a/App/Cosmos.DataTransfer.App/AppSettings.cs b/App/Cosmos.DataTransfer.App/AppSettings.cs new file mode 100644 index 00000000..0343a637 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/AppSettings.cs @@ -0,0 +1,7 @@ +namespace Cosmos.DataTransfer.App +{ + public class AppSettings + { + public string? CoreAppPath { get; set; } + } +} diff --git a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj new file mode 100644 index 00000000..e3699a85 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj @@ -0,0 +1,63 @@ + + + + net7.0-maccatalyst + $(TargetFrameworks);net7.0-windows10.0.19041.0 + Exe + Cosmos.DataTransfer.App + true + true + enable + false + + + Cosmos.DataTransfer.App + + + com.companyname.cosmos.datatransfer.app + 68154905-4482-46BB-8408-005D875D578B + + + 1.0 + 1 + + 14.0 + 10.0.17763.0 + 10.0.17763.0 + enable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/Cosmos.DataTransfer.App/Data/AppDataService.cs b/App/Cosmos.DataTransfer.App/Data/AppDataService.cs new file mode 100644 index 00000000..9a1072ce --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Data/AppDataService.cs @@ -0,0 +1,149 @@ +using System.Diagnostics; +using System.Text.Json; +using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.MessageOutput; + +namespace Cosmos.DataTransfer.App.Data; + +public class AppDataService : IAppDataService +{ + private readonly AppSettings _appSettings; + private ExtensionManifest? _sources; + private ExtensionManifest? _sinks; + + public async Task GetSourceManifest() + { + if (_sources == null || _sources == ExtensionManifest.Empty) + { + _sources = await GetExtensionManifest(ExtensionDirection.Source); + } + return _sources; + } + + public async Task GetSinkManifest() + { + if (_sinks == null || _sinks == ExtensionManifest.Empty) + { + _sinks = await GetExtensionManifest(ExtensionDirection.Sink); + } + return _sinks; + } + + private async Task GetExtensionManifest(ExtensionDirection direction) + { + string tempFilePath = Path.GetTempFileName(); + await RunCoreAppAsync($"settings --output \"{tempFilePath}\" {(direction == ExtensionDirection.Sink ? "--sink" : "--source")}"); + ExtensionManifest manifest; + await using (FileStream stream = File.OpenRead(tempFilePath)) + { + manifest = await JsonSerializer.DeserializeAsync(stream, ExtensionManifestUtility.JsonOptions) ?? ExtensionManifest.Empty; + } + File.Delete(tempFilePath); + return manifest; + } + + public AppDataService(AppSettings appSettings) + { + _appSettings = appSettings; + } + + public async Task GetExtensionsAsync() + { + if (_appSettings.CoreAppPath == null) + { + throw new InvalidOperationException(); + } + + var sourceManifest = await GetSourceManifest(); + var sinkManifest = await GetSinkManifest(); + + return ExtensionManifestUtility.CombineManifestExtensions(sourceManifest, sinkManifest); + } + + public async Task GetSettingsAsync(string name, ExtensionDirection direction) + { + if (_appSettings.CoreAppPath == null) + { + throw new InvalidOperationException(); + } + + var manifest = direction == ExtensionDirection.Sink ? await GetSinkManifest() : await GetSourceManifest(); + return manifest.GetExtensionSettings(name); + } + + public async Task BuildSettingsAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink) + { + string json = ExtensionManifestUtility.CreateMigrationSettingsJson(selectedSource, selectedSink, source, sink); + return json; + } + + public async Task BuildCommandAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink) + { + string command = ExtensionManifestUtility.CreateRunCommandJson(selectedSource, selectedSink, source, sink); + return command; + } + + public async Task ExecuteWithSettingsAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink, Func sendLogMessage, CancellationToken cancellationToken) + { + string json = ExtensionManifestUtility.CreateMigrationSettingsJson(selectedSource, selectedSink, source, sink); + var path = Path.Combine(Path.GetTempPath(), "migrationsettings.json"); + await File.WriteAllTextAsync(path, json, cancellationToken); + + return await RunCoreAppAsync($"run --settings \"{path}\"", sendLogMessage, cancellationToken); + } + + + private Task RunCoreAppAsync(string arguments) + { + return RunCoreAppAsync(arguments, m => Task.CompletedTask, CancellationToken.None); + } + + private async Task RunCoreAppAsync(string arguments, Func sendLogMessage, CancellationToken cancellationToken) + { + var process = Process.Start(new ProcessStartInfo + { + FileName = _appSettings.CoreAppPath, + Arguments = arguments, + UseShellExecute = false, + RedirectStandardOutput = true, + CreateNoWindow = true, + }); + + try + { + MessageType? activeType = null; + while (!process!.StandardOutput.EndOfStream) + { + cancellationToken.ThrowIfCancellationRequested(); + var line = await process.StandardOutput.ReadLineAsync(cancellationToken); + if (line != null) + { + if (!line.StartsWith('\t') && !line.StartsWith(" ")) + { + activeType = null; + } + var message = LogMessage.App(line); + if (activeType != null) + { + message.Type = activeType.Value; + } + + await sendLogMessage(message); + + activeType = message.Type; + } + } + + await process!.WaitForExitAsync(cancellationToken); + return true; + } + catch + { + process!.Kill(); + throw; + } + + return false; + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs new file mode 100644 index 00000000..c5e860c4 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs @@ -0,0 +1,19 @@ +using BlazorState; +using Cosmos.DataTransfer.Ui.MessageOutput; + +namespace Cosmos.DataTransfer.App.Features.Execution; + +public partial class ExecutionState +{ + public record AddLogMessageAction(LogMessage Message) : IAction; + + public class AddLogMessageHandler : StateActionHandler + { + public AddLogMessageHandler(IStore aStore) : base(aStore) { } + + public override async Task Handle(AddLogMessageAction action, CancellationToken cancellationToken) + { + State._logs.Add(action.Message); + } + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs new file mode 100644 index 00000000..08bc7295 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs @@ -0,0 +1,23 @@ +using BlazorState; + +namespace Cosmos.DataTransfer.App.Features.Execution; + +public partial class ExecutionState +{ + public record CancelExecutionAction(bool Completed) : IAction; + + public class CancelExecutionHandler : StateActionHandler + { + public CancelExecutionHandler(IStore aStore) : base(aStore) { } + + public override async Task Handle(CancelExecutionAction action, CancellationToken cancellationToken) + { + if (!action.Completed) + { + State.CurrentExecutionAction?.Cancel(); + } + State.CurrentExecutionAction = null; + State.IsExecuting = false; + } + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs new file mode 100644 index 00000000..e683493d --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs @@ -0,0 +1,18 @@ +using BlazorState; + +namespace Cosmos.DataTransfer.App.Features.Execution; + +public partial class ExecutionState +{ + public record ClearLogsAction() : IAction; + + public class ClearLogsHandler : StateActionHandler + { + public ClearLogsHandler(IStore aStore) : base(aStore) { } + + public override async Task Handle(ClearLogsAction action, CancellationToken cancellationToken) + { + State._logs.Clear(); + } + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs new file mode 100644 index 00000000..fe894aef --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs @@ -0,0 +1,19 @@ +using Cosmos.DataTransfer.Ui.MessageOutput; +using MediatR; + +namespace Cosmos.DataTransfer.App.Features.Execution; +public static class ExecutionExtensions +{ + public static void ThenReset(this Task task, IMediator mediator) + { + task.ContinueWith(t => + { + mediator.Send(new ExecutionState.CancelExecutionAction(true)); + }); + } + + public static async void Log(this IMediator mediator, LogMessage message) + { + await mediator.Send(new ExecutionState.AddLogMessageAction(message)); + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs new file mode 100644 index 00000000..01add949 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs @@ -0,0 +1,19 @@ +using BlazorState; +using Cosmos.DataTransfer.Ui.MessageOutput; + +namespace Cosmos.DataTransfer.App.Features.Execution; + +public partial class ExecutionState : State +{ + private List _logs = new(); + public IEnumerable? Logs => _logs; + public bool IsExecuting { get; private set; } + public CancellationTokenSource? CurrentExecutionAction { get; private set; } + + public override void Initialize() + { + _logs = new List(); + IsExecuting = false; + CurrentExecutionAction = null; + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs new file mode 100644 index 00000000..aff4ec28 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs @@ -0,0 +1,51 @@ +using BlazorState; +using Cosmos.DataTransfer.App.Features.Settings; +using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.MessageOutput; +using MediatR; + +namespace Cosmos.DataTransfer.App.Features.Execution; + +public partial class ExecutionState +{ + public record ExportSettingsFileAction(SettingsState Settings, string filePath) : IAction; + + public class ExportSettingsFileHandler : StateActionHandler + { + private readonly IAppDataService _dataService; + private readonly IMediator _mediator; + + public ExportSettingsFileHandler(IStore aStore, IAppDataService dataService, IMediator mediator) : base(aStore) + { + _dataService = dataService; + _mediator = mediator; + } + + public override async Task Handle(ExportSettingsFileAction action, CancellationToken cancellationToken) + { + State.CurrentExecutionAction = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + State.IsExecuting = true; + + Execute(action.Settings, State.CurrentExecutionAction.Token) + .ThenReset(_mediator); + } + + private async Task Execute(SettingsState settingsState, CancellationToken cancellationToken) + { + try + { + cancellationToken.ThrowIfCancellationRequested(); + var output = await _dataService.BuildSettingsAsync(settingsState.SelectedSource ?? throw new InvalidOperationException("No Source selected"), + settingsState.SelectedSink ?? throw new InvalidOperationException("No Sink selected"), + settingsState.SourceSettings?.Settings, + settingsState.SinkSettings?.Settings); + + _mediator.Log(LogMessage.Data(output)); + } + catch (Exception ex) + { + _mediator.Log(LogMessage.Error(ex.Message)); + } + } + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs new file mode 100644 index 00000000..891ace7f --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs @@ -0,0 +1,49 @@ +using BlazorState; +using Cosmos.DataTransfer.App.Features.Settings; +using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.MessageOutput; +using MediatR; + +namespace Cosmos.DataTransfer.App.Features.Execution; + +public partial class ExecutionState +{ + public record GenerateCommandAction(SettingsState Settings) : IAction; + + public class GenerateCommandHandler : StateActionHandler + { + private readonly IAppDataService _dataService; + private readonly IMediator _mediator; + public GenerateCommandHandler(IStore aStore, IAppDataService dataService, IMediator mediator) : base(aStore) + { + _dataService = dataService; + _mediator = mediator; + } + + public override async Task Handle(GenerateCommandAction action, CancellationToken cancellationToken) + { + State.CurrentExecutionAction = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + State.IsExecuting = true; + + Execute(action.Settings, State.CurrentExecutionAction.Token) + .ThenReset(_mediator); + } + + private async Task Execute(SettingsState settingsState, CancellationToken cancellationToken) + { + try + { + cancellationToken.ThrowIfCancellationRequested(); + var output = await _dataService.BuildCommandAsync(settingsState.SelectedSource ?? throw new InvalidOperationException("No Source selected"), + settingsState.SelectedSink ?? throw new InvalidOperationException("No Sink selected"), + settingsState.SourceSettings?.Settings, + settingsState.SinkSettings?.Settings); + _mediator.Log(LogMessage.Data(output)); + } + catch (Exception ex) + { + _mediator.Log(LogMessage.Error(ex.Message)); + } + } + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs new file mode 100644 index 00000000..461931db --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs @@ -0,0 +1,50 @@ +using BlazorState; +using Cosmos.DataTransfer.App.Features.Settings; +using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.MessageOutput; +using MediatR; + +namespace Cosmos.DataTransfer.App.Features.Execution; + +public partial class ExecutionState +{ + public record RunMigrationJobAction(SettingsState Settings) : IAction; + + public class RunMigrationJobHandler : StateActionHandler + { + private readonly IMediator _mediator; + private readonly IAppDataService _dataService; + public RunMigrationJobHandler(IStore aStore, IAppDataService dataService, IMediator mediator) : base(aStore) + { + _dataService = dataService; + _mediator = mediator; + } + + public override async Task Handle(RunMigrationJobAction action, CancellationToken cancellationToken) + { + State.CurrentExecutionAction = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + State.IsExecuting = true; + + Execute(action.Settings, State.CurrentExecutionAction.Token) + .ThenReset(_mediator); + } + + private async Task Execute(SettingsState settingsState, CancellationToken cancellationToken) + { + try + { + cancellationToken.ThrowIfCancellationRequested(); + bool completed = await _dataService.ExecuteWithSettingsAsync(settingsState.SelectedSource ?? throw new InvalidOperationException("No Source selected"), + settingsState.SelectedSink ?? throw new InvalidOperationException("No Sink selected"), + settingsState.SourceSettings?.Settings, + settingsState.SinkSettings?.Settings, + async m => _mediator.Log(m), + cancellationToken); + } + catch (Exception ex) + { + _mediator.Log(LogMessage.Error(ex.Message)); + } + } + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/Job/JobState.cs b/App/Cosmos.DataTransfer.App/Features/Job/JobState.cs new file mode 100644 index 00000000..92f2db51 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Job/JobState.cs @@ -0,0 +1,11 @@ +using BlazorState; + +namespace Cosmos.DataTransfer.App.Features.Job; + +public partial class JobState : State +{ + public override void Initialize() + { + + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs new file mode 100644 index 00000000..c66a8e5d --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs @@ -0,0 +1,26 @@ +using BlazorState; +using Cosmos.DataTransfer.Ui; + +namespace Cosmos.DataTransfer.App.Features.Settings; + +public partial class SettingsState +{ + public record LoadExtensionsAction : IAction; + + public class LoadExtensionsHandler : StateActionHandler + { + private readonly IAppDataService _dataService; + + public LoadExtensionsHandler(IStore aStore, IAppDataService dataService) : base(aStore) + { + _dataService = dataService; + } + + public override async Task Handle(LoadExtensionsAction aAction, CancellationToken aCancellationToken) + { + AppExtensions extensions = await _dataService.GetExtensionsAsync(); + State.AvailableExtensions = extensions; + } + } + +} diff --git a/App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs new file mode 100644 index 00000000..ec63ef54 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs @@ -0,0 +1,31 @@ +using BlazorState; +using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui; + +namespace Cosmos.DataTransfer.App.Features.Settings; + +public partial class SettingsState +{ + public record SelectSinkAction(string? Sink) : IAction; + + public class SelectSinkHandler : StateActionHandler + { + private readonly IAppDataService _dataService; + public SelectSinkHandler(IStore aStore, IAppDataService dataService) : base(aStore) + { + _dataService = dataService; + } + + public override async Task Handle(SelectSinkAction action, CancellationToken cancellationToken) + { + State.SelectedSink = action.Sink; + State.SinkSettings = null; + if (!string.IsNullOrEmpty(State.SelectedSink)) + { + var settings = await _dataService.GetSettingsAsync(State.SelectedSink, ExtensionDirection.Sink); + State.SinkSettings = settings; + } + } + } + +} diff --git a/App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs new file mode 100644 index 00000000..4b0b4b8c --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs @@ -0,0 +1,31 @@ +using BlazorState; +using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui; + +namespace Cosmos.DataTransfer.App.Features.Settings; + +public partial class SettingsState +{ + public record SelectSourceAction(string? Source) : IAction; + + public class SelectSourceHandler : StateActionHandler + { + private readonly IAppDataService _dataService; + public SelectSourceHandler(IStore aStore, IAppDataService dataService) : base(aStore) + { + _dataService = dataService; + } + + public override async Task Handle(SelectSourceAction action, CancellationToken cancellationToken) + { + State.SelectedSource = action.Source; + State.SourceSettings = null; + if (!string.IsNullOrEmpty(State.SelectedSource)) + { + var settings = await _dataService.GetSettingsAsync(State.SelectedSource, ExtensionDirection.Source); + State.SourceSettings = settings; + } + } + } + +} diff --git a/App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs new file mode 100644 index 00000000..c74d45db --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs @@ -0,0 +1,22 @@ +using BlazorState; +using Cosmos.DataTransfer.Ui; + +namespace Cosmos.DataTransfer.App.Features.Settings; + +public partial class SettingsState : State +{ + public AppExtensions? AvailableExtensions { get; private set; } + public string? SelectedSource { get; private set; } + public string? SelectedSink { get; private set; } + public ExtensionSettings? SourceSettings { get; private set; } + public ExtensionSettings? SinkSettings { get; private set; } + + public override void Initialize() + { + AvailableExtensions = null; + SelectedSource = null; + SelectedSink = null; + SourceSettings = null; + SinkSettings = null; + } +} diff --git a/App/Cosmos.DataTransfer.App/Features/StateActionHandler.cs b/App/Cosmos.DataTransfer.App/Features/StateActionHandler.cs new file mode 100644 index 00000000..5401aedc --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Features/StateActionHandler.cs @@ -0,0 +1,9 @@ +using BlazorState; + +namespace Cosmos.DataTransfer.App.Features; +public abstract class StateActionHandler : ActionHandler + where TAction : IAction +{ + protected StateActionHandler(IStore aStore) : base(aStore) { } + protected TState State => Store.GetState(); +} diff --git a/App/Cosmos.DataTransfer.App/IAppDataService.cs b/App/Cosmos.DataTransfer.App/IAppDataService.cs new file mode 100644 index 00000000..5f75b505 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/IAppDataService.cs @@ -0,0 +1,10 @@ +using Cosmos.DataTransfer.Interfaces; +using Cosmos.DataTransfer.Ui.MessageOutput; + +namespace Cosmos.DataTransfer.Ui; +public interface IAppDataService : IDataService +{ + Task BuildCommandAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink); + Task BuildSettingsAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink); + Task ExecuteWithSettingsAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink, Func sendLogMessage, CancellationToken cancellationToken); +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Main.razor b/App/Cosmos.DataTransfer.App/Main.razor new file mode 100644 index 00000000..8d4cb6f6 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Main.razor @@ -0,0 +1,11 @@ + + + + + + + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/App/Cosmos.DataTransfer.App/MainPage.xaml b/App/Cosmos.DataTransfer.App/MainPage.xaml new file mode 100644 index 00000000..8a0bc920 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/MainPage.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/App/Cosmos.DataTransfer.App/MainPage.xaml.cs b/App/Cosmos.DataTransfer.App/MainPage.xaml.cs new file mode 100644 index 00000000..50a1c416 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/MainPage.xaml.cs @@ -0,0 +1,9 @@ +namespace Cosmos.DataTransfer.App; + +public partial class MainPage : ContentPage +{ + public MainPage() + { + InitializeComponent(); + } +} diff --git a/App/Cosmos.DataTransfer.App/MauiProgram.cs b/App/Cosmos.DataTransfer.App/MauiProgram.cs new file mode 100644 index 00000000..579b1d82 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/MauiProgram.cs @@ -0,0 +1,44 @@ +using System.Reflection; +using BlazorState; +using Microsoft.Extensions.Logging; +using Cosmos.DataTransfer.App.Data; +using Cosmos.DataTransfer.Ui; + +namespace Cosmos.DataTransfer.App; + +public static class MauiProgram +{ + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }); + + builder.Services.AddMauiBlazorWebView(); + + var appSettings = new AppSettings + { + CoreAppPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "dmt.exe") + }; + +#if DEBUG + builder.Services.AddBlazorWebViewDeveloperTools(); + builder.Logging.AddDebug(); + appSettings.CoreAppPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..\\..\\..\\..\\..\\..\\..", "Core\\Cosmos.DataTransfer.Core", "bin\\Debug\\net6.0\\dmt.exe")); +#endif + + builder.Services.AddSingleton(appSettings); + + builder.Services.AddSingleton(); + builder.Services.AddBlazorState(o => + { + o.Assemblies = new[] { typeof(MauiProgram).GetTypeInfo().Assembly }; + }); + + return builder.Build(); + } +} diff --git a/App/Cosmos.DataTransfer.App/Pages/Index.razor b/App/Cosmos.DataTransfer.App/Pages/Index.razor new file mode 100644 index 00000000..6a1c2327 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Pages/Index.razor @@ -0,0 +1,31 @@ +@page "/" + +@inherits BlazorStateComponent + +
+
+
+ + +
+
+ + +
+
+@*
+
+ +
+
+ +
+
+ +
+
+*@
diff --git a/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs b/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs new file mode 100644 index 00000000..aa89852b --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs @@ -0,0 +1,29 @@ +using Microsoft.AspNetCore.Components; +using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.App.Features.Settings; + +namespace Cosmos.DataTransfer.App.Pages +{ + public partial class Index + { + [Inject] + public IAppDataService DataService { get; set; } = null!; + + public SettingsState SettingsState => GetState(); + + protected override async Task OnParametersSetAsync() + { + await Mediator.Send(new SettingsState.LoadExtensionsAction()); + } + + private async Task SourceSelectionChanged(string name) + { + await Mediator.Send(new SettingsState.SelectSourceAction(name)); + } + + private async Task SinkSelectionChanged(string name) + { + await Mediator.Send(new SettingsState.SelectSinkAction(name)); + } + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Pages/Index.razor.css b/App/Cosmos.DataTransfer.App/Pages/Index.razor.css new file mode 100644 index 00000000..b0a3129b --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Pages/Index.razor.css @@ -0,0 +1,5 @@ +body { +} + +.settings-container { +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 00000000..170a3bbb --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace Cosmos.DataTransfer.App; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist new file mode 100644 index 00000000..403ce9c6 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,30 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs new file mode 100644 index 00000000..612c7760 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace Cosmos.DataTransfer.App; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml b/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml new file mode 100644 index 00000000..5fcfa6c7 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs b/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs new file mode 100644 index 00000000..0670d379 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs @@ -0,0 +1,24 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace Cosmos.DataTransfer.App.WinUI; + +/// +/// Provides application-specific behavior to supplement the default Application class. +/// +public partial class App : MauiWinUIApplication +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} + diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest b/App/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest new file mode 100644 index 00000000..98f2d93c --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,46 @@ + + + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest b/App/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest new file mode 100644 index 00000000..4a626e0c --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/App/Cosmos.DataTransfer.App/Properties/launchSettings.json b/App/Cosmos.DataTransfer.App/Properties/launchSettings.json new file mode 100644 index 00000000..edf8aadc --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "MsixPackage", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg b/App/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg new file mode 100644 index 00000000..9d63b651 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg b/App/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg new file mode 100644 index 00000000..21dfb25f --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf b/App/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..293a1cd10666f3b0d965fec6f0e78bb30ccbb963 GIT binary patch literal 107124 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 literal 0 HcmV?d00001 diff --git a/App/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg b/App/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg new file mode 100644 index 00000000..abfaff26 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt b/App/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt new file mode 100644 index 00000000..531df33f --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with you package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/App/Cosmos.DataTransfer.App/Resources/Splash/splash.svg b/App/Cosmos.DataTransfer.App/Resources/Splash/splash.svg new file mode 100644 index 00000000..21dfb25f --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/SavedWindowState.cs b/App/Cosmos.DataTransfer.App/SavedWindowState.cs new file mode 100644 index 00000000..75dd1e68 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/SavedWindowState.cs @@ -0,0 +1,57 @@ + +namespace Cosmos.DataTransfer.App; + +public class SavedWindowState +{ + public string WindowType { get; } + public double? X { get; set; } + public double? Y { get; set; } + public double? Width { get; set; } + public double? Height { get; set; } + + public SavedWindowState(string windowType, Window window) + { + WindowType = windowType; + + X = window.X; + Y = window.Y; + Width = window.Width; + Height = window.Height; + } + + public SavedWindowState(string windowType) + { + WindowType = windowType; + X = GetSavedValue("WindowLocationX"); + Y = GetSavedValue("WindowLocationY"); + Width = GetSavedValue("WindowSizeWidth"); + Height = GetSavedValue("WindowSizeHeight"); + } + + private double? GetSavedValue(string valueKey) + { + var xValue = Preferences.Get($"{WindowType}{valueKey}", double.NaN); + if (!double.IsNaN(xValue)) + { + return xValue; + } + + return null; + } + + public void Save() + { + SaveValue("WindowLocationX", X); + SaveValue("WindowLocationY", Y); + SaveValue("WindowSizeWidth", Width); + SaveValue("WindowSizeHeight", Height); + } + + private void SaveValue(string valueKey, double? value) + { + if (value != null) + Preferences.Set($"{WindowType}{valueKey}", value.Value); + else + Preferences.Remove($"{WindowType}{valueKey}"); + } +} diff --git a/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor b/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor new file mode 100644 index 00000000..e84d007e --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor @@ -0,0 +1,58 @@ +@using Cosmos.DataTransfer.App.Features.Execution +@using Cosmos.DataTransfer.App.Features.Settings +@using Cosmos.DataTransfer.Ui.MessageOutput +@inherits BlazorStateComponent + +
+ + + + +
+ +@code { + public ExecutionState ExecutionState => GetState(); + public SettingsState SettingsState => GetState(); + + private async Task Generate() + { + if (!await SettingsSelected()) + return; + + await Mediator.Send(new ExecutionState.GenerateCommandAction(SettingsState)); + } + + private async Task SettingsSelected() + { + if (SettingsState.SelectedSource == null || SettingsState.SelectedSink == null) + { + await Mediator.Send(new ExecutionState.AddLogMessageAction(LogMessage.Warn("Choose Source and Sink to generate settings."))); + return false; + } + + return true; + } + + private async Task Export() + { + if (!await SettingsSelected()) + return; + + string filePath = ""; + await Mediator.Send(new ExecutionState.ExportSettingsFileAction(SettingsState, filePath)); + } + + private async Task Run() + { + if (!await SettingsSelected()) + return; + + await Mediator.Send(new ExecutionState.RunMigrationJobAction(SettingsState)); + } + + private async Task Cancel() + { + await Mediator.Send(new ExecutionState.CancelExecutionAction(false)); + } + +} diff --git a/App/Cosmos.DataTransfer.App/Shared/JobToolbar.razor b/App/Cosmos.DataTransfer.App/Shared/JobToolbar.razor new file mode 100644 index 00000000..47870ee6 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Shared/JobToolbar.razor @@ -0,0 +1,37 @@ +@using Cosmos.DataTransfer.App.Features.Job +@inherits BlazorStateComponent + + + + +@code { + public JobState JobState => GetState(); + + private async Task NewJob() + { + } + + private async Task RenameJob() + { + } + + private async Task Save() + { + } + + private async Task SaveAs() + { + } + +} diff --git a/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor b/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor new file mode 100644 index 00000000..c0a53931 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor @@ -0,0 +1,35 @@ +@using Cosmos.DataTransfer.Ui.MessageOutput +@using Cosmos.DataTransfer.App.Features.Execution +@using BlazorState.Services + +@inherits BlazorStateComponent + +
+ @* +*@ +
+
+ + + About +
+ +
+ @Body +
+ +
+ +
+
+
+ +@code{ + [Inject] public BlazorHostingLocation BlazorHostingLocation { get; set; } = null!; + + [Parameter] public RenderFragment Body { get; set; } = null!; + + public ExecutionState ExecutionState => GetState(); +} diff --git a/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css b/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css new file mode 100644 index 00000000..ba8780ed --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css @@ -0,0 +1,86 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: space-between; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row ::deep .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + text-decoration: none; + } + + .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { + text-decoration: underline; + } + + .top-row ::deep a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row:not(.auth) { + display: none; + } + + .top-row.auth { + justify-content: space-between; + } + + .top-row ::deep a, .top-row ::deep .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row { + padding-left: 1rem !important; + padding-right: 1.5rem !important; + } + + article { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} + +.main-content { + height: calc(70vh - 3.5rem); + padding-bottom: 10px; + overflow-y: auto; +} diff --git a/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor b/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor new file mode 100644 index 00000000..c5c44f95 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor @@ -0,0 +1,29 @@ + + +
+ +
+ +@code { + private bool collapseNavMenu = true; + + private string NavMenuCssClass => collapseNavMenu ? "collapse" : null; + + private void ToggleNavMenu() + { + collapseNavMenu = !collapseNavMenu; + } +} diff --git a/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css b/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css new file mode 100644 index 00000000..acc5f9f8 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css @@ -0,0 +1,62 @@ +.navbar-toggler { + background-color: rgba(255, 255, 255, 0.1); +} + +.top-row { + height: 3.5rem; + background-color: rgba(0,0,0,0.4); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.oi { + width: 2rem; + font-size: 1.1rem; + vertical-align: text-top; + top: -2px; +} + +.nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; +} + + .nav-item:first-of-type { + padding-top: 1rem; + } + + .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .nav-item ::deep a { + color: #d7d7d7; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + } + +.nav-item ::deep a.active { + background-color: rgba(255,255,255,0.25); + color: white; +} + +.nav-item ::deep a:hover { + background-color: rgba(255,255,255,0.1); + color: white; +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .collapse { + /* Never collapse the sidebar for wide screens */ + display: block; + } +} diff --git a/App/Cosmos.DataTransfer.App/_Imports.razor b/App/Cosmos.DataTransfer.App/_Imports.razor new file mode 100644 index 00000000..defcb2bd --- /dev/null +++ b/App/Cosmos.DataTransfer.App/_Imports.razor @@ -0,0 +1,13 @@ +@using System.Net.Http +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using Cosmos.DataTransfer.App +@using Cosmos.DataTransfer.App.Shared +@using Cosmos.DataTransfer.Interfaces +@using Cosmos.DataTransfer.Interfaces.Manifest +@using Cosmos.DataTransfer.Ui +@using BlazorState + diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/app.css b/App/Cosmos.DataTransfer.App/wwwroot/css/app.css new file mode 100644 index 00000000..69091569 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/wwwroot/css/app.css @@ -0,0 +1,84 @@ +@import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + +html, body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +h1:focus { + outline: none; +} + +a, .btn-link { + color: #0071c1; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} + +.content { + padding-top: 1.1rem; +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid red; +} + +.validation-message { + color: red; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + +#blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; +} + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + +.blazor-error-boundary::after { + content: "An error has occurred." +} + +.status-bar-safe-area { + display: none; +} + +@supports (-webkit-touch-callout: none) { + .status-bar-safe-area { + display: flex; + position: sticky; + top: 0; + height: env(safe-area-inset-top); + background-color: #f7f7f7; + width: 100%; + z-index: 1; + } + + .flex-column, .navbar-brand { + padding-left: env(safe-area-inset-left); + } +} diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css b/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css new file mode 100644 index 00000000..02ae65b5 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map b/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map new file mode 100644 index 00000000..afcd9e33 --- /dev/null +++ b/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` + + +

+ +
diff --git a/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs b/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs new file mode 100644 index 00000000..5d40cbb1 --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs @@ -0,0 +1,62 @@ +using Microsoft.AspNetCore.Components; +using Cosmos.DataTransfer.Interfaces; +using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.MessageOutput; + +namespace Cosmos.DataTransfer.Web.Pages +{ + public partial class Index + { + [Inject] + public IClientDataService DataService { get; set; } = null!; + + public AppExtensions? AllExtensions { get; set; } + public string? SelectedSource { get; set; } + public string? SelectedSink { get; set; } + + public ExtensionSettings? SourceSettings { get; set; } + public ExtensionSettings? SinkSettings { get; set; } + + public List Logs { get; } = new(); + + protected override async Task OnParametersSetAsync() + { + AppExtensions extensions = await DataService.GetExtensionsAsync(); + AllExtensions = extensions; + } + + private async Task SourceSelectionChanged(string name) + { + SelectedSource = name; + var settings = await DataService.GetSettingsAsync(name, ExtensionDirection.Source); + SourceSettings = settings; + } + + private async Task SinkSelectionChanged(string name) + { + SelectedSink = name; + var settings = await DataService.GetSettingsAsync(name, ExtensionDirection.Sink); + SinkSettings = settings; + } + + private async Task RunTransfer() + { + if (SelectedSource == null || SelectedSink == null) + { + Logs.Add(LogMessage.Warn("Choose Source and Sink to generate settings.")); + return; + } + + try + { + var output = await DataService.GenerateMigrationFileAsync(SelectedSource, SelectedSink, SourceSettings?.Settings, SinkSettings?.Settings); + Logs.Add(LogMessage.Data(output)); + } + catch (Exception ex) + { + Logs.Add(LogMessage.Error(ex.Message)); + } + } + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.Web/Pages/Index.razor.css b/App/Cosmos.DataTransfer.Web/Pages/Index.razor.css new file mode 100644 index 00000000..e4469d19 --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/Pages/Index.razor.css @@ -0,0 +1,15 @@ +.log-output { + overflow-x: auto; + white-space: nowrap; +} + + .log-output > .col { + display: inline-block; + float: none; + } + +.main-content { + height: calc(70vh - 3.5rem); + padding-bottom: 10px; + overflow-y: auto; +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.Web/Program.cs b/App/Cosmos.DataTransfer.Web/Program.cs new file mode 100644 index 00000000..3f3bb6fb --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/Program.cs @@ -0,0 +1,21 @@ +using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Web.Pages; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; + +namespace Cosmos.DataTransfer.Web; + +public class Program +{ + public static async Task Main(string[] args) + { + var builder = WebAssemblyHostBuilder.CreateDefault(args); + builder.RootComponents.Add("#app"); + builder.RootComponents.Add("head::after"); + + builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + builder.Services.AddTransient(); + + await builder.Build().RunAsync(); + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.Web/Properties/launchSettings.json b/App/Cosmos.DataTransfer.Web/Properties/launchSettings.json new file mode 100644 index 00000000..345798f1 --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "iisSettings": { + "iisExpress": { + "applicationUrl": "http://localhost:60397", + "sslPort": 44303 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5286", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7230;http://localhost:5286", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor b/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor new file mode 100644 index 00000000..4d47f4c3 --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor @@ -0,0 +1,13 @@ +@inherits LayoutComponentBase + +
+
+
+ About +
+ +
+ @Body +
+
+
diff --git a/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css b/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css new file mode 100644 index 00000000..f97169ef --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css @@ -0,0 +1,87 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row ::deep .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + text-decoration: none; + } + + .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { + text-decoration: underline; + } + + .top-row ::deep a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row:not(.auth) { + display: none; + } + + .top-row.auth { + justify-content: space-between; + } + + .top-row ::deep a, .top-row ::deep .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row.auth ::deep a:first-child { + flex: 1; + text-align: right; + width: 0; + } + + .top-row { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} + +.body-content { + padding-right: 0; + padding-left: 0; + padding-top: 0; +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.Web/SinkManifest.json b/App/Cosmos.DataTransfer.Web/SinkManifest.json new file mode 100644 index 00000000..9399049b --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/SinkManifest.json @@ -0,0 +1,586 @@ +{ + "AppVersion": "1.0.0", + "Extensions": [ + { + "Name": "AzureTableAPI", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.AzureTableAPIExtension", + "Settings": [ + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "Table", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "RowKeyFieldName", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "PartitionKeyFieldName", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "CognitiveSearch", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.CognitiveSearchExtension", + "Settings": [ + { + "Name": "BatchSize", + "Type": "Int", + "DefaultValue": 100, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "IndexAction", + "Type": "Enum", + "DefaultValue": "Upload", + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [ + "Upload", + "Merge", + "MergeOrUpload", + "Delete" + ] + }, + { + "Name": "Endpoint", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ApiKey", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "Index", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "Cosmos-nosql", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.CosmosExtension", + "Settings": [ + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "Database", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "Container", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "PartitionKeyPath", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "RecreateContainer", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "BatchSize", + "Type": "Int", + "DefaultValue": 100, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ConnectionMode", + "Type": "Enum", + "DefaultValue": "Gateway", + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [ + "Gateway", + "Direct" + ] + }, + { + "Name": "MaxRetryCount", + "Type": "Int", + "DefaultValue": 5, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "InitialRetryDurationMs", + "Type": "Int", + "DefaultValue": 200, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "CreatedContainerMaxThroughput", + "Type": "Int", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "UseAutoscaleForCreatedContainer", + "Type": "Boolean", + "DefaultValue": true, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "IsServerlessAccount", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "WriteMode", + "Type": "Enum", + "DefaultValue": "InsertStream", + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [ + "InsertStream", + "Insert", + "UpsertStream", + "Upsert" + ] + } + ] + }, + { + "Name": "JSON-AWSS3(beta)", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.JsonExtension", + "Settings": [ + { + "Name": "IncludeNullFields", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "Indented", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "FileName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "S3Region", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "S3BucketName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "S3AccessKey", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "S3SecretKey", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + } + ] + }, + { + "Name": "JSON-AzureBlob(beta)", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.JsonExtension", + "Settings": [ + { + "Name": "IncludeNullFields", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "Indented", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "ContainerName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "BlobName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "MaxBlockSizeinKB", + "Type": "Int", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "JSON", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.JsonExtension", + "Settings": [ + { + "Name": "FilePath", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "IncludeNullFields", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "Indented", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "JSON-File(beta)", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.JsonExtension", + "Settings": [ + { + "Name": "IncludeNullFields", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "Indented", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "FilePath", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "MongoDB", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.MongoExtension", + "Settings": [ + { + "Name": "Collection", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "BatchSize", + "Type": "Int", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "DatabaseName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "Parquet-AWSS3(beta)", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.ParquetExtension", + "Settings": [ + { + "Name": "FileName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "S3Region", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "S3BucketName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "S3AccessKey", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "S3SecretKey", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + } + ] + }, + { + "Name": "Parquet-AzureBlob(beta)", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.ParquetExtension", + "Settings": [ + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "ContainerName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "BlobName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "MaxBlockSizeinKB", + "Type": "Int", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "Parquet(beta)", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.ParquetExtension", + "Settings": [ + { + "Name": "FilePath", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "SqlServer", + "Direction": "Sink", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.SqlServerExtension", + "Settings": [ + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "TableName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "BatchSize", + "Type": "Int", + "DefaultValue": 1000, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ColumnMappings", + "Type": "Array", + "DefaultValue": [], + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.Web/SourceManifest.json b/App/Cosmos.DataTransfer.Web/SourceManifest.json new file mode 100644 index 00000000..6429ce9c --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/SourceManifest.json @@ -0,0 +1,255 @@ +{ + "AppVersion": "1.0.0", + "Extensions": [ + { + "Name": "AzureTableAPI", + "Direction": "Source", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.AzureTableAPIExtension", + "Settings": [ + { + "Name": "QueryFilter", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "Table", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "RowKeyFieldName", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "PartitionKeyFieldName", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "CognitiveSearch", + "Direction": "Source", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.CognitiveSearchExtension", + "Settings": [ + { + "Name": "ODataFilter", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "Endpoint", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ApiKey", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "Index", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "Cosmos-nosql", + "Direction": "Source", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.CosmosExtension", + "Settings": [ + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "Database", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "Container", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "PartitionKeyValue", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "Query", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "IncludeMetadataFields", + "Type": "Boolean", + "DefaultValue": false, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ConnectionMode", + "Type": "Enum", + "DefaultValue": "Gateway", + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [ + "Gateway", + "Direct" + ] + } + ] + }, + { + "Name": "JSON", + "Direction": "Source", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.JsonExtension", + "Settings": [] + }, + { + "Name": "JSON-File(beta)", + "Direction": "Source", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.JsonExtension", + "Settings": [ + { + "Name": "FilePath", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "MongoDB", + "Direction": "Source", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.MongoExtension", + "Settings": [ + { + "Name": "Collection", + "Type": "String", + "DefaultValue": null, + "IsRequired": false, + "IsSensitive": false, + "ValidValues": [] + }, + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "DatabaseName", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "Parquet(beta)", + "Direction": "Source", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.ParquetExtension", + "Settings": [ + { + "Name": "FilePath", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + }, + { + "Name": "SqlServer", + "Direction": "Source", + "Version": "1.0.0", + "AssemblyName": "Cosmos.DataTransfer.SqlServerExtension", + "Settings": [ + { + "Name": "ConnectionString", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": true, + "ValidValues": [] + }, + { + "Name": "QueryText", + "Type": "String", + "DefaultValue": null, + "IsRequired": true, + "IsSensitive": false, + "ValidValues": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.Web/_Imports.razor b/App/Cosmos.DataTransfer.Web/_Imports.razor new file mode 100644 index 00000000..38502da0 --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/_Imports.razor @@ -0,0 +1,11 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using Cosmos.DataTransfer.Web +@using Cosmos.DataTransfer.Web.Shared +@using Cosmos.DataTransfer.Interfaces +@using Cosmos.DataTransfer.Interfaces.Manifest +@using Cosmos.DataTransfer.Ui diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/app.css b/App/Cosmos.DataTransfer.Web/wwwroot/css/app.css new file mode 100644 index 00000000..8034dcc4 --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/wwwroot/css/app.css @@ -0,0 +1,101 @@ +@import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + +html, body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +h1:focus { + outline: none; +} + +a, .btn-link { + color: #0071c1; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} + +.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { + box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; +} + +.content { + padding-top: 1.1rem; +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid red; +} + +.validation-message { + color: red; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; + } + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } + +.loading-progress { + position: relative; + display: block; + width: 8rem; + height: 8rem; + margin: 20vh auto 1rem auto; +} + + .loading-progress circle { + fill: none; + stroke: #e0e0e0; + stroke-width: 0.6rem; + transform-origin: 50% 50%; + transform: rotate(-90deg); + } + + .loading-progress circle:last-child { + stroke: #1b6ec2; + stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%; + transition: stroke-dasharray 0.05s ease-in-out; + } + +.loading-progress-text { + position: absolute; + text-align: center; + font-weight: bold; + inset: calc(20vh + 3.25rem) 0 auto 0.2rem; +} + + .loading-progress-text:after { + content: var(--blazor-load-percentage-text, "Loading"); + } diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css b/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css new file mode 100644 index 00000000..02ae65b5 --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map b/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map new file mode 100644 index 00000000..afcd9e33 --- /dev/null +++ b/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` - -

- -
-
- -
- -*@ + diff --git a/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs b/Core/Cosmos.DataTransfer.App/Pages/Index.razor.cs similarity index 100% rename from App/Cosmos.DataTransfer.App/Pages/Index.razor.cs rename to Core/Cosmos.DataTransfer.App/Pages/Index.razor.cs diff --git a/App/Cosmos.DataTransfer.App/Pages/Index.razor.css b/Core/Cosmos.DataTransfer.App/Pages/Index.razor.css similarity index 100% rename from App/Cosmos.DataTransfer.App/Pages/Index.razor.css rename to Core/Cosmos.DataTransfer.App/Pages/Index.razor.css diff --git a/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs b/Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs similarity index 100% rename from App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs rename to Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs diff --git a/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist b/Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist similarity index 100% rename from App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist rename to Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist diff --git a/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs b/Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs similarity index 100% rename from App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs rename to Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml b/Core/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml similarity index 100% rename from App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml rename to Core/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs b/Core/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs similarity index 100% rename from App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs rename to Core/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest b/Core/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest similarity index 100% rename from App/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest rename to Core/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest b/Core/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest similarity index 100% rename from App/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest rename to Core/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest diff --git a/App/Cosmos.DataTransfer.App/Properties/launchSettings.json b/Core/Cosmos.DataTransfer.App/Properties/launchSettings.json similarity index 100% rename from App/Cosmos.DataTransfer.App/Properties/launchSettings.json rename to Core/Cosmos.DataTransfer.App/Properties/launchSettings.json diff --git a/App/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg b/Core/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg similarity index 100% rename from App/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg rename to Core/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg diff --git a/App/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg b/Core/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg similarity index 100% rename from App/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg rename to Core/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg diff --git a/App/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf b/Core/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf similarity index 100% rename from App/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf rename to Core/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf diff --git a/App/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg b/Core/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg similarity index 100% rename from App/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg rename to Core/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg diff --git a/App/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt b/Core/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt similarity index 100% rename from App/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt rename to Core/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt diff --git a/App/Cosmos.DataTransfer.App/Resources/Splash/splash.svg b/Core/Cosmos.DataTransfer.App/Resources/Splash/splash.svg similarity index 100% rename from App/Cosmos.DataTransfer.App/Resources/Splash/splash.svg rename to Core/Cosmos.DataTransfer.App/Resources/Splash/splash.svg diff --git a/App/Cosmos.DataTransfer.App/SavedWindowState.cs b/Core/Cosmos.DataTransfer.App/SavedWindowState.cs similarity index 100% rename from App/Cosmos.DataTransfer.App/SavedWindowState.cs rename to Core/Cosmos.DataTransfer.App/SavedWindowState.cs diff --git a/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor b/Core/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor similarity index 75% rename from App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor rename to Core/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor index e84d007e..106cf7d2 100644 --- a/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor +++ b/Core/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor @@ -4,10 +4,10 @@ @inherits BlazorStateComponent
- - - - + + + +
@code { diff --git a/App/Cosmos.DataTransfer.App/Shared/JobToolbar.razor b/Core/Cosmos.DataTransfer.App/Shared/JobToolbar.razor similarity index 100% rename from App/Cosmos.DataTransfer.App/Shared/JobToolbar.razor rename to Core/Cosmos.DataTransfer.App/Shared/JobToolbar.razor diff --git a/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor b/Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor similarity index 95% rename from App/Cosmos.DataTransfer.App/Shared/MainLayout.razor rename to Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor index c0a53931..d20839d7 100644 --- a/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor +++ b/Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor @@ -10,7 +10,7 @@ *@
-
+
About diff --git a/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css b/Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css similarity index 99% rename from App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css rename to Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css index ba8780ed..162d3cb6 100644 --- a/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css +++ b/Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css @@ -83,4 +83,4 @@ main { height: calc(70vh - 3.5rem); padding-bottom: 10px; overflow-y: auto; -} +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor b/Core/Cosmos.DataTransfer.App/Shared/NavMenu.razor similarity index 100% rename from App/Cosmos.DataTransfer.App/Shared/NavMenu.razor rename to Core/Cosmos.DataTransfer.App/Shared/NavMenu.razor diff --git a/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css b/Core/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css similarity index 100% rename from App/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css rename to Core/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css diff --git a/App/Cosmos.DataTransfer.App/_Imports.razor b/Core/Cosmos.DataTransfer.App/_Imports.razor similarity index 100% rename from App/Cosmos.DataTransfer.App/_Imports.razor rename to Core/Cosmos.DataTransfer.App/_Imports.razor diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/app.css b/Core/Cosmos.DataTransfer.App/wwwroot/css/app.css similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/app.css rename to Core/Cosmos.DataTransfer.App/wwwroot/css/app.css diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css b/Core/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css rename to Core/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map b/Core/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map rename to Core/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf diff --git a/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff b/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff rename to Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff diff --git a/App/Cosmos.DataTransfer.App/wwwroot/favicon.ico b/Core/Cosmos.DataTransfer.App/wwwroot/favicon.ico similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/favicon.ico rename to Core/Cosmos.DataTransfer.App/wwwroot/favicon.ico diff --git a/App/Cosmos.DataTransfer.App/wwwroot/index.html b/Core/Cosmos.DataTransfer.App/wwwroot/index.html similarity index 100% rename from App/Cosmos.DataTransfer.App/wwwroot/index.html rename to Core/Cosmos.DataTransfer.App/wwwroot/index.html diff --git a/App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj b/Core/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj similarity index 100% rename from App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj rename to Core/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs b/Core/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs similarity index 100% rename from App/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs rename to Core/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs b/Core/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs similarity index 100% rename from App/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs rename to Core/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor b/Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor similarity index 93% rename from App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor rename to Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor index 5d77f15b..79a038d4 100644 --- a/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor +++ b/Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor @@ -1,4 +1,4 @@ -

@Direction

+

@Direction


diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs b/Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs similarity index 100% rename from App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs rename to Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionSetting.cs b/Core/Cosmos.DataTransfer.Ui/ExtensionSetting.cs similarity index 100% rename from App/Cosmos.DataTransfer.Ui/ExtensionSetting.cs rename to Core/Cosmos.DataTransfer.Ui/ExtensionSetting.cs diff --git a/App/Cosmos.DataTransfer.Ui/IDataService.cs b/Core/Cosmos.DataTransfer.Ui/IDataService.cs similarity index 100% rename from App/Cosmos.DataTransfer.Ui/IDataService.cs rename to Core/Cosmos.DataTransfer.Ui/IDataService.cs diff --git a/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor b/Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor similarity index 100% rename from App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor rename to Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor diff --git a/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs b/Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs similarity index 100% rename from App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs rename to Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs diff --git a/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css b/Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css similarity index 100% rename from App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css rename to Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css diff --git a/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js b/Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js similarity index 100% rename from App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js rename to Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js diff --git a/App/Cosmos.DataTransfer.Ui/SettingEditor.razor b/Core/Cosmos.DataTransfer.Ui/SettingEditor.razor similarity index 100% rename from App/Cosmos.DataTransfer.Ui/SettingEditor.razor rename to Core/Cosmos.DataTransfer.Ui/SettingEditor.razor diff --git a/App/Cosmos.DataTransfer.Ui/SettingsList.razor b/Core/Cosmos.DataTransfer.Ui/SettingsList.razor similarity index 80% rename from App/Cosmos.DataTransfer.Ui/SettingsList.razor rename to Core/Cosmos.DataTransfer.Ui/SettingsList.razor index 1ce953e0..f7b94969 100644 --- a/App/Cosmos.DataTransfer.Ui/SettingsList.razor +++ b/Core/Cosmos.DataTransfer.Ui/SettingsList.razor @@ -1,5 +1,5 @@  -
+
@if (Settings != null) { foreach (var setting in Settings) diff --git a/Core/Cosmos.DataTransfer.Ui/SettingsList.razor.css b/Core/Cosmos.DataTransfer.Ui/SettingsList.razor.css new file mode 100644 index 00000000..ff4c3199 --- /dev/null +++ b/Core/Cosmos.DataTransfer.Ui/SettingsList.razor.css @@ -0,0 +1,6 @@ +.list-container { + margin-top: 0.5rem; + padding: 1.5rem; + background-color: #dfdfdf; + border-radius: 0.5rem; +} diff --git a/App/Cosmos.DataTransfer.Ui/_Imports.razor b/Core/Cosmos.DataTransfer.Ui/_Imports.razor similarity index 100% rename from App/Cosmos.DataTransfer.Ui/_Imports.razor rename to Core/Cosmos.DataTransfer.Ui/_Imports.razor diff --git a/App/Cosmos.DataTransfer.Ui/wwwroot/background.png b/Core/Cosmos.DataTransfer.Ui/wwwroot/background.png similarity index 100% rename from App/Cosmos.DataTransfer.Ui/wwwroot/background.png rename to Core/Cosmos.DataTransfer.Ui/wwwroot/background.png diff --git a/App/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js b/Core/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js similarity index 100% rename from App/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js rename to Core/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js diff --git a/App/Cosmos.DataTransfer.Web/App.razor b/Core/Cosmos.DataTransfer.Web/App.razor similarity index 100% rename from App/Cosmos.DataTransfer.Web/App.razor rename to Core/Cosmos.DataTransfer.Web/App.razor diff --git a/App/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj b/Core/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj similarity index 100% rename from App/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj rename to Core/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj diff --git a/App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs b/Core/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs similarity index 100% rename from App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs rename to Core/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs diff --git a/App/Cosmos.DataTransfer.Web/Pages/Index.razor b/Core/Cosmos.DataTransfer.Web/Pages/Index.razor similarity index 100% rename from App/Cosmos.DataTransfer.Web/Pages/Index.razor rename to Core/Cosmos.DataTransfer.Web/Pages/Index.razor diff --git a/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs b/Core/Cosmos.DataTransfer.Web/Pages/Index.razor.cs similarity index 100% rename from App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs rename to Core/Cosmos.DataTransfer.Web/Pages/Index.razor.cs diff --git a/App/Cosmos.DataTransfer.Web/Pages/Index.razor.css b/Core/Cosmos.DataTransfer.Web/Pages/Index.razor.css similarity index 100% rename from App/Cosmos.DataTransfer.Web/Pages/Index.razor.css rename to Core/Cosmos.DataTransfer.Web/Pages/Index.razor.css diff --git a/App/Cosmos.DataTransfer.Web/Program.cs b/Core/Cosmos.DataTransfer.Web/Program.cs similarity index 100% rename from App/Cosmos.DataTransfer.Web/Program.cs rename to Core/Cosmos.DataTransfer.Web/Program.cs diff --git a/App/Cosmos.DataTransfer.Web/Properties/launchSettings.json b/Core/Cosmos.DataTransfer.Web/Properties/launchSettings.json similarity index 100% rename from App/Cosmos.DataTransfer.Web/Properties/launchSettings.json rename to Core/Cosmos.DataTransfer.Web/Properties/launchSettings.json diff --git a/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor b/Core/Cosmos.DataTransfer.Web/Shared/MainLayout.razor similarity index 100% rename from App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor rename to Core/Cosmos.DataTransfer.Web/Shared/MainLayout.razor diff --git a/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css b/Core/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css similarity index 100% rename from App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css rename to Core/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css diff --git a/App/Cosmos.DataTransfer.Web/SinkManifest.json b/Core/Cosmos.DataTransfer.Web/SinkManifest.json similarity index 100% rename from App/Cosmos.DataTransfer.Web/SinkManifest.json rename to Core/Cosmos.DataTransfer.Web/SinkManifest.json diff --git a/App/Cosmos.DataTransfer.Web/SourceManifest.json b/Core/Cosmos.DataTransfer.Web/SourceManifest.json similarity index 100% rename from App/Cosmos.DataTransfer.Web/SourceManifest.json rename to Core/Cosmos.DataTransfer.Web/SourceManifest.json diff --git a/App/Cosmos.DataTransfer.Web/_Imports.razor b/Core/Cosmos.DataTransfer.Web/_Imports.razor similarity index 100% rename from App/Cosmos.DataTransfer.Web/_Imports.razor rename to Core/Cosmos.DataTransfer.Web/_Imports.razor diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/app.css b/Core/Cosmos.DataTransfer.Web/wwwroot/css/app.css similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/app.css rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/app.css diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css b/Core/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map b/Core/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff b/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff rename to Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/favicon.png b/Core/Cosmos.DataTransfer.Web/wwwroot/favicon.png similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/favicon.png rename to Core/Cosmos.DataTransfer.Web/wwwroot/favicon.png diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/icon-192.png b/Core/Cosmos.DataTransfer.Web/wwwroot/icon-192.png similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/icon-192.png rename to Core/Cosmos.DataTransfer.Web/wwwroot/icon-192.png diff --git a/App/Cosmos.DataTransfer.Web/wwwroot/index.html b/Core/Cosmos.DataTransfer.Web/wwwroot/index.html similarity index 100% rename from App/Cosmos.DataTransfer.Web/wwwroot/index.html rename to Core/Cosmos.DataTransfer.Web/wwwroot/index.html diff --git a/App/CosmosDbApp.sln b/Core/CosmosDbApp.sln similarity index 100% rename from App/CosmosDbApp.sln rename to Core/CosmosDbApp.sln diff --git a/CosmosDbDataMigrationTool.sln b/CosmosDbDataMigrationTool.sln index 92b59f96..50fa3360 100644 --- a/CosmosDbDataMigrationTool.sln +++ b/CosmosDbDataMigrationTool.sln @@ -87,7 +87,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Csv", "Csv", "{39930280-DA2 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.CsvExtension", "Extensions\Csv\Cosmos.DataTransfer.CsvExtension\Cosmos.DataTransfer.CsvExtension.csproj", "{6A3FB90C-B837-4724-A406-214D4CEA686F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.DataTransfer.CsvExtension.UnitTests", "Extensions\Csv\Cosmos.DataTransfer.CsvExtension.UnitTests\Cosmos.DataTransfer.CsvExtension.UnitTests.csproj", "{40AD8890-BD78-48F5-AE76-2C2FC6F15B7E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.CsvExtension.UnitTests", "Extensions\Csv\Cosmos.DataTransfer.CsvExtension.UnitTests\Cosmos.DataTransfer.CsvExtension.UnitTests.csproj", "{40AD8890-BD78-48F5-AE76-2C2FC6F15B7E}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BCBBAF22-0CB5-416B-8C80-03AB2FC4D0A0}" ProjectSection(SolutionItems) = preProject Contributing.md = Contributing.md @@ -95,6 +96,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Gui", "Gui", "{4C7FF093-FC91-4451-ADCC-0270799B8F10}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.Ui", "Core\Cosmos.DataTransfer.Ui\Cosmos.DataTransfer.Ui.csproj", "{07E36BB9-999E-48E9-AA87-3F752681B571}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.App", "Core\Cosmos.DataTransfer.App\Cosmos.DataTransfer.App.csproj", "{7C664BF1-CC2C-4320-83B4-88130BF6B543}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.Web", "Core\Cosmos.DataTransfer.Web\Cosmos.DataTransfer.Web.csproj", "{05B84469-4333-4162-89D7-A26E1798EE4C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -181,6 +190,20 @@ Global {40AD8890-BD78-48F5-AE76-2C2FC6F15B7E}.Debug|Any CPU.Build.0 = Debug|Any CPU {40AD8890-BD78-48F5-AE76-2C2FC6F15B7E}.Release|Any CPU.ActiveCfg = Release|Any CPU {40AD8890-BD78-48F5-AE76-2C2FC6F15B7E}.Release|Any CPU.Build.0 = Release|Any CPU + {07E36BB9-999E-48E9-AA87-3F752681B571}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07E36BB9-999E-48E9-AA87-3F752681B571}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07E36BB9-999E-48E9-AA87-3F752681B571}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07E36BB9-999E-48E9-AA87-3F752681B571}.Release|Any CPU.Build.0 = Release|Any CPU + {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Release|Any CPU.Build.0 = Release|Any CPU + {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Release|Any CPU.Deploy.0 = Release|Any CPU + {05B84469-4333-4162-89D7-A26E1798EE4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {05B84469-4333-4162-89D7-A26E1798EE4C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {05B84469-4333-4162-89D7-A26E1798EE4C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {05B84469-4333-4162-89D7-A26E1798EE4C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -212,6 +235,9 @@ Global {39930280-DA29-4814-837B-FA7F252EB3EC} = {A8A1CEAB-2D82-460C-9B86-74ABD17CD201} {6A3FB90C-B837-4724-A406-214D4CEA686F} = {39930280-DA29-4814-837B-FA7F252EB3EC} {40AD8890-BD78-48F5-AE76-2C2FC6F15B7E} = {39930280-DA29-4814-837B-FA7F252EB3EC} + {07E36BB9-999E-48E9-AA87-3F752681B571} = {4C7FF093-FC91-4451-ADCC-0270799B8F10} + {7C664BF1-CC2C-4320-83B4-88130BF6B543} = {4C7FF093-FC91-4451-ADCC-0270799B8F10} + {05B84469-4333-4162-89D7-A26E1798EE4C} = {4C7FF093-FC91-4451-ADCC-0270799B8F10} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {662B3F27-70D8-45E6-A1C0-1438A9C8A542} From 2b60cdad1d7b896f456305bccf1ca469db206466 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Thu, 27 Jul 2023 17:55:27 -0700 Subject: [PATCH 03/30] Testing build on net7 --- .github/workflows/dotnet-build-test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index 8234c23c..1794a166 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -10,13 +10,13 @@ jobs: build: name: Build and test .NET projects runs-on: ubuntu-latest - container: mcr.microsoft.com/dotnet/sdk:6.0 + container: mcr.microsoft.com/dotnet/sdk:7.0 steps: - uses: actions/checkout@v3 - name: Setup .NET uses: actions/setup-dotnet@v2 with: - dotnet-version: 6.0.x + dotnet-version: 7.0.x - name: Restore dependencies run: dotnet restore - name: Build @@ -28,4 +28,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: debug-build - path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/Core/Cosmos.DataTransfer.Core/bin/Debug/net6.0 #path/to/artifact/ # or path/to/artifact + path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/Core/Cosmos.DataTransfer.Core/bin/Debug/net7.0 #path/to/artifact/ # or path/to/artifact From 43d0dbdb1e5cdcb74c041dfacd93deb2b8d7e25b Mon Sep 17 00:00:00 2001 From: John Bowen Date: Thu, 27 Jul 2023 18:04:14 -0700 Subject: [PATCH 04/30] Adding workload to build --- .github/workflows/dotnet-build-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index 1794a166..11b38ed3 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -17,6 +17,8 @@ jobs: uses: actions/setup-dotnet@v2 with: dotnet-version: 7.0.x + - name: Install workloads + run: dotnet workload install wasm-tools - name: Restore dependencies run: dotnet restore - name: Build From aa467e9e265db7d195f0709313e882fd97ab85cb Mon Sep 17 00:00:00 2001 From: John Bowen Date: Thu, 27 Jul 2023 18:05:58 -0700 Subject: [PATCH 05/30] Adding maui workload install --- .github/workflows/dotnet-build-test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index 11b38ed3..b1922b8d 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -17,8 +17,10 @@ jobs: uses: actions/setup-dotnet@v2 with: dotnet-version: 7.0.x - - name: Install workloads + - name: Install workload WASM run: dotnet workload install wasm-tools + - name: Install workloads MAUI + run: dotnet workload install maui-tizen - name: Restore dependencies run: dotnet restore - name: Build From aefc4950594ba7eb151195580e80090d5b918968 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 13:58:37 -0700 Subject: [PATCH 06/30] Splitting solutions for build support --- .github/workflows/dotnet-build-test.yml | 16 +++++------ .../Cosmos.DataTransfer.App/App.xaml | 0 .../Cosmos.DataTransfer.App/App.xaml.cs | 0 .../Cosmos.DataTransfer.App/AppSettings.cs | 0 .../Cosmos.DataTransfer.App.csproj | 5 ++-- .../Data/AppDataService.cs | 0 .../Features/Execution/AddLogMessageAction.cs | 0 .../Execution/CancelExecutionAction.cs | 0 .../Features/Execution/ClearLogsAction.cs | 0 .../Features/Execution/ExecutionExtensions.cs | 0 .../Features/Execution/ExecutionState.cs | 0 .../Execution/ExportSettingsFileAction.cs | 0 .../Execution/GenerateCommandAction.cs | 0 .../Execution/RunMigrationJobAction.cs | 0 .../Features/Job/JobState.cs | 0 .../Features/Settings/LoadExtensionsAction.cs | 0 .../Features/Settings/SelectSinkAction.cs | 0 .../Features/Settings/SelectSourceAction.cs | 0 .../Features/Settings/SettingsState.cs | 0 .../Features/StateActionHandler.cs | 0 .../IAppDataService.cs | 0 .../Cosmos.DataTransfer.App/Main.razor | 0 .../Cosmos.DataTransfer.App/MainPage.xaml | 0 .../Cosmos.DataTransfer.App/MainPage.xaml.cs | 0 .../Cosmos.DataTransfer.App/MauiProgram.cs | 0 .../Cosmos.DataTransfer.App/Pages/Index.razor | 0 .../Pages/Index.razor.cs | 0 .../Pages/Index.razor.css | 0 .../Platforms/MacCatalyst/AppDelegate.cs | 0 .../Platforms/MacCatalyst/Info.plist | 0 .../Platforms/MacCatalyst/Program.cs | 0 .../Platforms/Windows/App.xaml | 0 .../Platforms/Windows/App.xaml.cs | 0 .../Platforms/Windows/Package.appxmanifest | 0 .../Platforms/Windows/app.manifest | 0 .../Properties/launchSettings.json | 0 .../Resources/AppIcon/appicon.svg | 0 .../Resources/AppIcon/appiconfg.svg | 0 .../Resources/Fonts/OpenSans-Regular.ttf | Bin .../Resources/Images/dotnet_bot.svg | 0 .../Resources/Raw/AboutAssets.txt | 0 .../Resources/Splash/splash.svg | 0 .../SavedWindowState.cs | 0 .../Shared/ExecutionToolbar.razor | 0 .../Shared/JobToolbar.razor | 0 .../Shared/MainLayout.razor | 0 .../Shared/MainLayout.razor.css | 0 .../Shared/NavMenu.razor | 0 .../Shared/NavMenu.razor.css | 0 .../Cosmos.DataTransfer.App/_Imports.razor | 0 .../wwwroot/css/app.css | 0 .../wwwroot/css/bootstrap/bootstrap.min.css | 0 .../css/bootstrap/bootstrap.min.css.map | 0 .../wwwroot/css/open-iconic/FONT-LICENSE | 0 .../wwwroot/css/open-iconic/ICON-LICENSE | 0 .../wwwroot/css/open-iconic/README.md | 0 .../font/css/open-iconic-bootstrap.min.css | 0 .../open-iconic/font/fonts/open-iconic.eot | Bin .../open-iconic/font/fonts/open-iconic.otf | Bin .../open-iconic/font/fonts/open-iconic.svg | 0 .../open-iconic/font/fonts/open-iconic.ttf | Bin .../open-iconic/font/fonts/open-iconic.woff | Bin .../wwwroot/favicon.ico | Bin .../wwwroot/index.html | 0 .../Cosmos.DataTransfer.Ui.csproj | 0 .../ExtensionDefinition.cs | 0 .../ExtensionManifestUtility.cs | 0 .../ExtensionSelector.razor | 0 .../ExtensionSelector.razor.cs | 0 .../ExtensionSetting.cs | 0 .../Cosmos.DataTransfer.Ui/IDataService.cs | 0 .../MessageOutput/MessageLog.razor | 0 .../MessageOutput/MessageLog.razor.cs | 0 .../MessageOutput/MessageLog.razor.css | 0 .../MessageOutput/MessageLog.razor.js | 0 .../SettingEditor.razor | 0 .../Cosmos.DataTransfer.Ui/SettingsList.razor | 0 .../SettingsList.razor.css | 0 .../Cosmos.DataTransfer.Ui/_Imports.razor | 0 .../wwwroot/background.png | Bin .../wwwroot/exampleJsInterop.js | 0 .../Cosmos.DataTransfer.Web/App.razor | 0 .../Cosmos.DataTransfer.Web.csproj | 2 +- .../Pages/ClientDataService.cs | 0 .../Cosmos.DataTransfer.Web/Pages/Index.razor | 0 .../Pages/Index.razor.cs | 0 .../Pages/Index.razor.css | 0 .../Cosmos.DataTransfer.Web/Program.cs | 0 .../Properties/launchSettings.json | 0 .../Shared/MainLayout.razor | 0 .../Shared/MainLayout.razor.css | 0 .../Cosmos.DataTransfer.Web/SinkManifest.json | 0 .../SourceManifest.json | 0 .../Cosmos.DataTransfer.Web/_Imports.razor | 0 .../wwwroot/css/app.css | 0 .../wwwroot/css/bootstrap/bootstrap.min.css | 0 .../css/bootstrap/bootstrap.min.css.map | 0 .../wwwroot/css/open-iconic/FONT-LICENSE | 0 .../wwwroot/css/open-iconic/ICON-LICENSE | 0 .../wwwroot/css/open-iconic/README.md | 0 .../font/css/open-iconic-bootstrap.min.css | 0 .../open-iconic/font/fonts/open-iconic.eot | Bin .../open-iconic/font/fonts/open-iconic.otf | Bin .../open-iconic/font/fonts/open-iconic.svg | 0 .../open-iconic/font/fonts/open-iconic.ttf | Bin .../open-iconic/font/fonts/open-iconic.woff | Bin .../wwwroot/favicon.png | Bin .../wwwroot/icon-192.png | Bin .../wwwroot/index.html | 0 {Core => App}/CosmosDbApp.sln | 0 CosmosDbDataMigrationTool.sln | 25 ------------------ 111 files changed, 10 insertions(+), 38 deletions(-) rename {Core => App}/Cosmos.DataTransfer.App/App.xaml (100%) rename {Core => App}/Cosmos.DataTransfer.App/App.xaml.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/AppSettings.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj (88%) rename {Core => App}/Cosmos.DataTransfer.App/Data/AppDataService.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Job/JobState.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Features/StateActionHandler.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/IAppDataService.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Main.razor (100%) rename {Core => App}/Cosmos.DataTransfer.App/MainPage.xaml (100%) rename {Core => App}/Cosmos.DataTransfer.App/MainPage.xaml.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/MauiProgram.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Pages/Index.razor (100%) rename {Core => App}/Cosmos.DataTransfer.App/Pages/Index.razor.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Pages/Index.razor.css (100%) rename {Core => App}/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist (100%) rename {Core => App}/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml (100%) rename {Core => App}/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest (100%) rename {Core => App}/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest (100%) rename {Core => App}/Cosmos.DataTransfer.App/Properties/launchSettings.json (100%) rename {Core => App}/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg (100%) rename {Core => App}/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg (100%) rename {Core => App}/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf (100%) rename {Core => App}/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg (100%) rename {Core => App}/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt (100%) rename {Core => App}/Cosmos.DataTransfer.App/Resources/Splash/splash.svg (100%) rename {Core => App}/Cosmos.DataTransfer.App/SavedWindowState.cs (100%) rename {Core => App}/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor (100%) rename {Core => App}/Cosmos.DataTransfer.App/Shared/JobToolbar.razor (100%) rename {Core => App}/Cosmos.DataTransfer.App/Shared/MainLayout.razor (100%) rename {Core => App}/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css (100%) rename {Core => App}/Cosmos.DataTransfer.App/Shared/NavMenu.razor (100%) rename {Core => App}/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css (100%) rename {Core => App}/Cosmos.DataTransfer.App/_Imports.razor (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/app.css (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/favicon.ico (100%) rename {Core => App}/Cosmos.DataTransfer.App/wwwroot/index.html (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/ExtensionSelector.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/ExtensionSetting.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/IDataService.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/SettingEditor.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/SettingsList.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/SettingsList.razor.css (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/_Imports.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/wwwroot/background.png (100%) rename {Core => App}/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js (100%) rename {Core => App}/Cosmos.DataTransfer.Web/App.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj (97%) rename {Core => App}/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Web/Pages/Index.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Web/Pages/Index.razor.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Web/Pages/Index.razor.css (100%) rename {Core => App}/Cosmos.DataTransfer.Web/Program.cs (100%) rename {Core => App}/Cosmos.DataTransfer.Web/Properties/launchSettings.json (100%) rename {Core => App}/Cosmos.DataTransfer.Web/Shared/MainLayout.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css (100%) rename {Core => App}/Cosmos.DataTransfer.Web/SinkManifest.json (100%) rename {Core => App}/Cosmos.DataTransfer.Web/SourceManifest.json (100%) rename {Core => App}/Cosmos.DataTransfer.Web/_Imports.razor (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/app.css (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/favicon.png (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/icon-192.png (100%) rename {Core => App}/Cosmos.DataTransfer.Web/wwwroot/index.html (100%) rename {Core => App}/CosmosDbApp.sln (100%) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index b1922b8d..4abf8e96 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -10,26 +10,22 @@ jobs: build: name: Build and test .NET projects runs-on: ubuntu-latest - container: mcr.microsoft.com/dotnet/sdk:7.0 + container: mcr.microsoft.com/dotnet/sdk:6.0 steps: - uses: actions/checkout@v3 - name: Setup .NET uses: actions/setup-dotnet@v2 with: - dotnet-version: 7.0.x - - name: Install workload WASM - run: dotnet workload install wasm-tools - - name: Install workloads MAUI - run: dotnet workload install maui-tizen + dotnet-version: 6.0.x - name: Restore dependencies - run: dotnet restore + run: dotnet restore ./CosmosDbDataMigrationTool.sln - name: Build - run: dotnet build --no-restore + run: dotnet build --no-restore ./CosmosDbDataMigrationTool.sln - name: Test - run: dotnet test --no-build --verbosity normal + run: dotnet test --no-build --verbosity normal ./CosmosDbDataMigrationTool.sln - name: Debug Build Artifact uses: actions/upload-artifact@v3 with: name: debug-build - path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/Core/Cosmos.DataTransfer.Core/bin/Debug/net7.0 #path/to/artifact/ # or path/to/artifact + path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/Core/Cosmos.DataTransfer.Core/bin/Debug/net6.0 #path/to/artifact/ # or path/to/artifact diff --git a/Core/Cosmos.DataTransfer.App/App.xaml b/App/Cosmos.DataTransfer.App/App.xaml similarity index 100% rename from Core/Cosmos.DataTransfer.App/App.xaml rename to App/Cosmos.DataTransfer.App/App.xaml diff --git a/Core/Cosmos.DataTransfer.App/App.xaml.cs b/App/Cosmos.DataTransfer.App/App.xaml.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/App.xaml.cs rename to App/Cosmos.DataTransfer.App/App.xaml.cs diff --git a/Core/Cosmos.DataTransfer.App/AppSettings.cs b/App/Cosmos.DataTransfer.App/AppSettings.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/AppSettings.cs rename to App/Cosmos.DataTransfer.App/AppSettings.cs diff --git a/Core/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj similarity index 88% rename from Core/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj rename to App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj index e3699a85..75131bea 100644 --- a/Core/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj +++ b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj @@ -1,8 +1,9 @@  - net7.0-maccatalyst - $(TargetFrameworks);net7.0-windows10.0.19041.0 + net7.0-windows10.0.19041.0 + + $(TargetFrameworks);net7.0-maccatalyst Exe Cosmos.DataTransfer.App true diff --git a/Core/Cosmos.DataTransfer.App/Data/AppDataService.cs b/App/Cosmos.DataTransfer.App/Data/AppDataService.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Data/AppDataService.cs rename to App/Cosmos.DataTransfer.App/Data/AppDataService.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs rename to App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs rename to App/Cosmos.DataTransfer.App/Features/Execution/CancelExecutionAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs rename to App/Cosmos.DataTransfer.App/Features/Execution/ClearLogsAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs rename to App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs rename to App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs rename to App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs rename to App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs rename to App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Job/JobState.cs b/App/Cosmos.DataTransfer.App/Features/Job/JobState.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Job/JobState.cs rename to App/Cosmos.DataTransfer.App/Features/Job/JobState.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs rename to App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs rename to App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs rename to App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs rename to App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs diff --git a/Core/Cosmos.DataTransfer.App/Features/StateActionHandler.cs b/App/Cosmos.DataTransfer.App/Features/StateActionHandler.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Features/StateActionHandler.cs rename to App/Cosmos.DataTransfer.App/Features/StateActionHandler.cs diff --git a/Core/Cosmos.DataTransfer.App/IAppDataService.cs b/App/Cosmos.DataTransfer.App/IAppDataService.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/IAppDataService.cs rename to App/Cosmos.DataTransfer.App/IAppDataService.cs diff --git a/Core/Cosmos.DataTransfer.App/Main.razor b/App/Cosmos.DataTransfer.App/Main.razor similarity index 100% rename from Core/Cosmos.DataTransfer.App/Main.razor rename to App/Cosmos.DataTransfer.App/Main.razor diff --git a/Core/Cosmos.DataTransfer.App/MainPage.xaml b/App/Cosmos.DataTransfer.App/MainPage.xaml similarity index 100% rename from Core/Cosmos.DataTransfer.App/MainPage.xaml rename to App/Cosmos.DataTransfer.App/MainPage.xaml diff --git a/Core/Cosmos.DataTransfer.App/MainPage.xaml.cs b/App/Cosmos.DataTransfer.App/MainPage.xaml.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/MainPage.xaml.cs rename to App/Cosmos.DataTransfer.App/MainPage.xaml.cs diff --git a/Core/Cosmos.DataTransfer.App/MauiProgram.cs b/App/Cosmos.DataTransfer.App/MauiProgram.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/MauiProgram.cs rename to App/Cosmos.DataTransfer.App/MauiProgram.cs diff --git a/Core/Cosmos.DataTransfer.App/Pages/Index.razor b/App/Cosmos.DataTransfer.App/Pages/Index.razor similarity index 100% rename from Core/Cosmos.DataTransfer.App/Pages/Index.razor rename to App/Cosmos.DataTransfer.App/Pages/Index.razor diff --git a/Core/Cosmos.DataTransfer.App/Pages/Index.razor.cs b/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Pages/Index.razor.cs rename to App/Cosmos.DataTransfer.App/Pages/Index.razor.cs diff --git a/Core/Cosmos.DataTransfer.App/Pages/Index.razor.css b/App/Cosmos.DataTransfer.App/Pages/Index.razor.css similarity index 100% rename from Core/Cosmos.DataTransfer.App/Pages/Index.razor.css rename to App/Cosmos.DataTransfer.App/Pages/Index.razor.css diff --git a/Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs rename to App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/AppDelegate.cs diff --git a/Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist similarity index 100% rename from Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist rename to App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Info.plist diff --git a/Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs b/App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs rename to App/Cosmos.DataTransfer.App/Platforms/MacCatalyst/Program.cs diff --git a/Core/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml b/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml similarity index 100% rename from Core/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml rename to App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml diff --git a/Core/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs b/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs rename to App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs diff --git a/Core/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest b/App/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest similarity index 100% rename from Core/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest rename to App/Cosmos.DataTransfer.App/Platforms/Windows/Package.appxmanifest diff --git a/Core/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest b/App/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest similarity index 100% rename from Core/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest rename to App/Cosmos.DataTransfer.App/Platforms/Windows/app.manifest diff --git a/Core/Cosmos.DataTransfer.App/Properties/launchSettings.json b/App/Cosmos.DataTransfer.App/Properties/launchSettings.json similarity index 100% rename from Core/Cosmos.DataTransfer.App/Properties/launchSettings.json rename to App/Cosmos.DataTransfer.App/Properties/launchSettings.json diff --git a/Core/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg b/App/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg similarity index 100% rename from Core/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg rename to App/Cosmos.DataTransfer.App/Resources/AppIcon/appicon.svg diff --git a/Core/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg b/App/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg similarity index 100% rename from Core/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg rename to App/Cosmos.DataTransfer.App/Resources/AppIcon/appiconfg.svg diff --git a/Core/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf b/App/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf similarity index 100% rename from Core/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf rename to App/Cosmos.DataTransfer.App/Resources/Fonts/OpenSans-Regular.ttf diff --git a/Core/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg b/App/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg similarity index 100% rename from Core/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg rename to App/Cosmos.DataTransfer.App/Resources/Images/dotnet_bot.svg diff --git a/Core/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt b/App/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt similarity index 100% rename from Core/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt rename to App/Cosmos.DataTransfer.App/Resources/Raw/AboutAssets.txt diff --git a/Core/Cosmos.DataTransfer.App/Resources/Splash/splash.svg b/App/Cosmos.DataTransfer.App/Resources/Splash/splash.svg similarity index 100% rename from Core/Cosmos.DataTransfer.App/Resources/Splash/splash.svg rename to App/Cosmos.DataTransfer.App/Resources/Splash/splash.svg diff --git a/Core/Cosmos.DataTransfer.App/SavedWindowState.cs b/App/Cosmos.DataTransfer.App/SavedWindowState.cs similarity index 100% rename from Core/Cosmos.DataTransfer.App/SavedWindowState.cs rename to App/Cosmos.DataTransfer.App/SavedWindowState.cs diff --git a/Core/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor b/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor similarity index 100% rename from Core/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor rename to App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor diff --git a/Core/Cosmos.DataTransfer.App/Shared/JobToolbar.razor b/App/Cosmos.DataTransfer.App/Shared/JobToolbar.razor similarity index 100% rename from Core/Cosmos.DataTransfer.App/Shared/JobToolbar.razor rename to App/Cosmos.DataTransfer.App/Shared/JobToolbar.razor diff --git a/Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor b/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor similarity index 100% rename from Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor rename to App/Cosmos.DataTransfer.App/Shared/MainLayout.razor diff --git a/Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css b/App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css similarity index 100% rename from Core/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css rename to App/Cosmos.DataTransfer.App/Shared/MainLayout.razor.css diff --git a/Core/Cosmos.DataTransfer.App/Shared/NavMenu.razor b/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor similarity index 100% rename from Core/Cosmos.DataTransfer.App/Shared/NavMenu.razor rename to App/Cosmos.DataTransfer.App/Shared/NavMenu.razor diff --git a/Core/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css b/App/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css similarity index 100% rename from Core/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css rename to App/Cosmos.DataTransfer.App/Shared/NavMenu.razor.css diff --git a/Core/Cosmos.DataTransfer.App/_Imports.razor b/App/Cosmos.DataTransfer.App/_Imports.razor similarity index 100% rename from Core/Cosmos.DataTransfer.App/_Imports.razor rename to App/Cosmos.DataTransfer.App/_Imports.razor diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/app.css b/App/Cosmos.DataTransfer.App/wwwroot/css/app.css similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/app.css rename to App/Cosmos.DataTransfer.App/wwwroot/css/app.css diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css b/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css rename to App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map b/App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map rename to App/Cosmos.DataTransfer.App/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/FONT-LICENSE diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/ICON-LICENSE diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/README.md diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.eot diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.otf diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.svg diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff b/App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff rename to App/Cosmos.DataTransfer.App/wwwroot/css/open-iconic/font/fonts/open-iconic.woff diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/favicon.ico b/App/Cosmos.DataTransfer.App/wwwroot/favicon.ico similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/favicon.ico rename to App/Cosmos.DataTransfer.App/wwwroot/favicon.ico diff --git a/Core/Cosmos.DataTransfer.App/wwwroot/index.html b/App/Cosmos.DataTransfer.App/wwwroot/index.html similarity index 100% rename from Core/Cosmos.DataTransfer.App/wwwroot/index.html rename to App/Cosmos.DataTransfer.App/wwwroot/index.html diff --git a/Core/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj b/App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj rename to App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj diff --git a/Core/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs b/App/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs rename to App/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs diff --git a/Core/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs b/App/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs rename to App/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs diff --git a/Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor b/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor rename to App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor diff --git a/Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs b/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs rename to App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs diff --git a/Core/Cosmos.DataTransfer.Ui/ExtensionSetting.cs b/App/Cosmos.DataTransfer.Ui/ExtensionSetting.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/ExtensionSetting.cs rename to App/Cosmos.DataTransfer.Ui/ExtensionSetting.cs diff --git a/Core/Cosmos.DataTransfer.Ui/IDataService.cs b/App/Cosmos.DataTransfer.Ui/IDataService.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/IDataService.cs rename to App/Cosmos.DataTransfer.Ui/IDataService.cs diff --git a/Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor b/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor rename to App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor diff --git a/Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs b/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs rename to App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs diff --git a/Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css b/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css rename to App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.css diff --git a/Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js b/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js rename to App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.js diff --git a/Core/Cosmos.DataTransfer.Ui/SettingEditor.razor b/App/Cosmos.DataTransfer.Ui/SettingEditor.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/SettingEditor.razor rename to App/Cosmos.DataTransfer.Ui/SettingEditor.razor diff --git a/Core/Cosmos.DataTransfer.Ui/SettingsList.razor b/App/Cosmos.DataTransfer.Ui/SettingsList.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/SettingsList.razor rename to App/Cosmos.DataTransfer.Ui/SettingsList.razor diff --git a/Core/Cosmos.DataTransfer.Ui/SettingsList.razor.css b/App/Cosmos.DataTransfer.Ui/SettingsList.razor.css similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/SettingsList.razor.css rename to App/Cosmos.DataTransfer.Ui/SettingsList.razor.css diff --git a/Core/Cosmos.DataTransfer.Ui/_Imports.razor b/App/Cosmos.DataTransfer.Ui/_Imports.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/_Imports.razor rename to App/Cosmos.DataTransfer.Ui/_Imports.razor diff --git a/Core/Cosmos.DataTransfer.Ui/wwwroot/background.png b/App/Cosmos.DataTransfer.Ui/wwwroot/background.png similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/wwwroot/background.png rename to App/Cosmos.DataTransfer.Ui/wwwroot/background.png diff --git a/Core/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js b/App/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js similarity index 100% rename from Core/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js rename to App/Cosmos.DataTransfer.Ui/wwwroot/exampleJsInterop.js diff --git a/Core/Cosmos.DataTransfer.Web/App.razor b/App/Cosmos.DataTransfer.Web/App.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Web/App.razor rename to App/Cosmos.DataTransfer.Web/App.razor diff --git a/Core/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj b/App/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj similarity index 97% rename from Core/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj rename to App/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj index 15cf0b85..4f137041 100644 --- a/Core/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj +++ b/App/Cosmos.DataTransfer.Web/Cosmos.DataTransfer.Web.csproj @@ -1,4 +1,4 @@ - + net7.0 diff --git a/Core/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs b/App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs rename to App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs diff --git a/Core/Cosmos.DataTransfer.Web/Pages/Index.razor b/App/Cosmos.DataTransfer.Web/Pages/Index.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Web/Pages/Index.razor rename to App/Cosmos.DataTransfer.Web/Pages/Index.razor diff --git a/Core/Cosmos.DataTransfer.Web/Pages/Index.razor.cs b/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Web/Pages/Index.razor.cs rename to App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs diff --git a/Core/Cosmos.DataTransfer.Web/Pages/Index.razor.css b/App/Cosmos.DataTransfer.Web/Pages/Index.razor.css similarity index 100% rename from Core/Cosmos.DataTransfer.Web/Pages/Index.razor.css rename to App/Cosmos.DataTransfer.Web/Pages/Index.razor.css diff --git a/Core/Cosmos.DataTransfer.Web/Program.cs b/App/Cosmos.DataTransfer.Web/Program.cs similarity index 100% rename from Core/Cosmos.DataTransfer.Web/Program.cs rename to App/Cosmos.DataTransfer.Web/Program.cs diff --git a/Core/Cosmos.DataTransfer.Web/Properties/launchSettings.json b/App/Cosmos.DataTransfer.Web/Properties/launchSettings.json similarity index 100% rename from Core/Cosmos.DataTransfer.Web/Properties/launchSettings.json rename to App/Cosmos.DataTransfer.Web/Properties/launchSettings.json diff --git a/Core/Cosmos.DataTransfer.Web/Shared/MainLayout.razor b/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Web/Shared/MainLayout.razor rename to App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor diff --git a/Core/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css b/App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css similarity index 100% rename from Core/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css rename to App/Cosmos.DataTransfer.Web/Shared/MainLayout.razor.css diff --git a/Core/Cosmos.DataTransfer.Web/SinkManifest.json b/App/Cosmos.DataTransfer.Web/SinkManifest.json similarity index 100% rename from Core/Cosmos.DataTransfer.Web/SinkManifest.json rename to App/Cosmos.DataTransfer.Web/SinkManifest.json diff --git a/Core/Cosmos.DataTransfer.Web/SourceManifest.json b/App/Cosmos.DataTransfer.Web/SourceManifest.json similarity index 100% rename from Core/Cosmos.DataTransfer.Web/SourceManifest.json rename to App/Cosmos.DataTransfer.Web/SourceManifest.json diff --git a/Core/Cosmos.DataTransfer.Web/_Imports.razor b/App/Cosmos.DataTransfer.Web/_Imports.razor similarity index 100% rename from Core/Cosmos.DataTransfer.Web/_Imports.razor rename to App/Cosmos.DataTransfer.Web/_Imports.razor diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/app.css b/App/Cosmos.DataTransfer.Web/wwwroot/css/app.css similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/app.css rename to App/Cosmos.DataTransfer.Web/wwwroot/css/app.css diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css b/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css rename to App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map b/App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map rename to App/Cosmos.DataTransfer.Web/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/FONT-LICENSE diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/ICON-LICENSE diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/README.md diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.eot diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.otf diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.svg diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff b/App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff rename to App/Cosmos.DataTransfer.Web/wwwroot/css/open-iconic/font/fonts/open-iconic.woff diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/favicon.png b/App/Cosmos.DataTransfer.Web/wwwroot/favicon.png similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/favicon.png rename to App/Cosmos.DataTransfer.Web/wwwroot/favicon.png diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/icon-192.png b/App/Cosmos.DataTransfer.Web/wwwroot/icon-192.png similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/icon-192.png rename to App/Cosmos.DataTransfer.Web/wwwroot/icon-192.png diff --git a/Core/Cosmos.DataTransfer.Web/wwwroot/index.html b/App/Cosmos.DataTransfer.Web/wwwroot/index.html similarity index 100% rename from Core/Cosmos.DataTransfer.Web/wwwroot/index.html rename to App/Cosmos.DataTransfer.Web/wwwroot/index.html diff --git a/Core/CosmosDbApp.sln b/App/CosmosDbApp.sln similarity index 100% rename from Core/CosmosDbApp.sln rename to App/CosmosDbApp.sln diff --git a/CosmosDbDataMigrationTool.sln b/CosmosDbDataMigrationTool.sln index 50fa3360..84e1f6b4 100644 --- a/CosmosDbDataMigrationTool.sln +++ b/CosmosDbDataMigrationTool.sln @@ -96,14 +96,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Gui", "Gui", "{4C7FF093-FC91-4451-ADCC-0270799B8F10}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.Ui", "Core\Cosmos.DataTransfer.Ui\Cosmos.DataTransfer.Ui.csproj", "{07E36BB9-999E-48E9-AA87-3F752681B571}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.App", "Core\Cosmos.DataTransfer.App\Cosmos.DataTransfer.App.csproj", "{7C664BF1-CC2C-4320-83B4-88130BF6B543}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.Web", "Core\Cosmos.DataTransfer.Web\Cosmos.DataTransfer.Web.csproj", "{05B84469-4333-4162-89D7-A26E1798EE4C}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -190,20 +182,6 @@ Global {40AD8890-BD78-48F5-AE76-2C2FC6F15B7E}.Debug|Any CPU.Build.0 = Debug|Any CPU {40AD8890-BD78-48F5-AE76-2C2FC6F15B7E}.Release|Any CPU.ActiveCfg = Release|Any CPU {40AD8890-BD78-48F5-AE76-2C2FC6F15B7E}.Release|Any CPU.Build.0 = Release|Any CPU - {07E36BB9-999E-48E9-AA87-3F752681B571}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {07E36BB9-999E-48E9-AA87-3F752681B571}.Debug|Any CPU.Build.0 = Debug|Any CPU - {07E36BB9-999E-48E9-AA87-3F752681B571}.Release|Any CPU.ActiveCfg = Release|Any CPU - {07E36BB9-999E-48E9-AA87-3F752681B571}.Release|Any CPU.Build.0 = Release|Any CPU - {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Release|Any CPU.Build.0 = Release|Any CPU - {7C664BF1-CC2C-4320-83B4-88130BF6B543}.Release|Any CPU.Deploy.0 = Release|Any CPU - {05B84469-4333-4162-89D7-A26E1798EE4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {05B84469-4333-4162-89D7-A26E1798EE4C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {05B84469-4333-4162-89D7-A26E1798EE4C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {05B84469-4333-4162-89D7-A26E1798EE4C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -235,9 +213,6 @@ Global {39930280-DA29-4814-837B-FA7F252EB3EC} = {A8A1CEAB-2D82-460C-9B86-74ABD17CD201} {6A3FB90C-B837-4724-A406-214D4CEA686F} = {39930280-DA29-4814-837B-FA7F252EB3EC} {40AD8890-BD78-48F5-AE76-2C2FC6F15B7E} = {39930280-DA29-4814-837B-FA7F252EB3EC} - {07E36BB9-999E-48E9-AA87-3F752681B571} = {4C7FF093-FC91-4451-ADCC-0270799B8F10} - {7C664BF1-CC2C-4320-83B4-88130BF6B543} = {4C7FF093-FC91-4451-ADCC-0270799B8F10} - {05B84469-4333-4162-89D7-A26E1798EE4C} = {4C7FF093-FC91-4451-ADCC-0270799B8F10} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {662B3F27-70D8-45E6-A1C0-1438A9C8A542} From a7e0f4a5a0fc031f51ced2fd97cfdd0091b4cea2 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 14:26:49 -0700 Subject: [PATCH 07/30] Testing build jobs for maui app --- .github/workflows/dotnet-build-test.yml | 42 ++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index 4abf8e96..1ae6f9fb 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -7,7 +7,7 @@ on: branches: [ "main" ] jobs: - build: + build_core: name: Build and test .NET projects runs-on: ubuntu-latest container: mcr.microsoft.com/dotnet/sdk:6.0 @@ -29,3 +29,43 @@ jobs: with: name: debug-build path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/Core/Cosmos.DataTransfer.Core/bin/Debug/net6.0 #path/to/artifact/ # or path/to/artifact + build-gui-win: + name: Build GUI projects for Windows + runs-on: windows-2022 + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 7.0.x + - name: Install MAUI Workload + run: dotnet workload install maui --ignore-failed-sources + - name: Restore Dependencies + run: dotnet restore ./App/CosmosDbApp.sln + - name: Build App + run: dotnet build --no-restore ./App/CosmosDbApp.sln + - name: Debug Build Artifact + uses: actions/upload-artifact@v3 + with: + name: app-win-build + path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/App/Cosmos.DataTransfer.App/bin/Debug/net7.0-windows10.0.19041.0/win10-x64 #path/to/artifact/ # or path/to/artifact + build-gui-mac: + name: Build GUI projects for Mac + runs-on: macos-12 + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 7.0.x + - name: Install MAUI Workload + run: dotnet workload install maui --ignore-failed-sources + - name: Restore Dependencies + run: dotnet restore ./App/CosmosDbApp.sln + - name: Build App + run: dotnet build --no-restore ./App/CosmosDbApp.sln + - name: Debug Build Artifact + uses: actions/upload-artifact@v3 + with: + name: app-mac-build + path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/App/Cosmos.DataTransfer.App/bin/Debug/net7.0-maccatalyst/maccatalyst-x64 #path/to/artifact/ # or path/to/artifact From 8da1fa660895176e665f797b6cb0454641c5e9b3 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 14:35:40 -0700 Subject: [PATCH 08/30] Updating build platform settings --- .github/workflows/dotnet-build-test.yml | 4 ++-- App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index 1ae6f9fb..391d2458 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -39,7 +39,7 @@ jobs: with: dotnet-version: 7.0.x - name: Install MAUI Workload - run: dotnet workload install maui --ignore-failed-sources + run: dotnet workload install maui-windows --ignore-failed-sources - name: Restore Dependencies run: dotnet restore ./App/CosmosDbApp.sln - name: Build App @@ -59,7 +59,7 @@ jobs: with: dotnet-version: 7.0.x - name: Install MAUI Workload - run: dotnet workload install maui --ignore-failed-sources + run: dotnet workload install maui-maccatalyst --ignore-failed-sources - name: Restore Dependencies run: dotnet restore ./App/CosmosDbApp.sln - name: Build App diff --git a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj index 75131bea..e3699a85 100644 --- a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj +++ b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj @@ -1,9 +1,8 @@  - net7.0-windows10.0.19041.0 - - $(TargetFrameworks);net7.0-maccatalyst + net7.0-maccatalyst + $(TargetFrameworks);net7.0-windows10.0.19041.0 Exe Cosmos.DataTransfer.App true From 0f1909706774b65e4424b23e65ba50aa43da3d1d Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 14:57:05 -0700 Subject: [PATCH 09/30] Updating build settings --- .github/workflows/dotnet-build-test.yml | 4 ++-- App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index 391d2458..2f2817ac 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -48,7 +48,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: app-win-build - path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/App/Cosmos.DataTransfer.App/bin/Debug/net7.0-windows10.0.19041.0/win10-x64 #path/to/artifact/ # or path/to/artifact + path: D:\a\data-migration-desktop-tool\data-migration-desktop-tool\App\Cosmos.DataTransfer.App\bin\Debug\net7.0-windows10.0.19041.0\win10-x64 #path/to/artifact/ # or path/to/artifact build-gui-mac: name: Build GUI projects for Mac runs-on: macos-12 @@ -68,4 +68,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: app-mac-build - path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/App/Cosmos.DataTransfer.App/bin/Debug/net7.0-maccatalyst/maccatalyst-x64 #path/to/artifact/ # or path/to/artifact + path: /Users/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/App/Cosmos.DataTransfer.App/bin/Debug/net7.0-maccatalyst/maccatalyst-x64 #path/to/artifact/ # or path/to/artifact diff --git a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj index e3699a85..9694473a 100644 --- a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj +++ b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj @@ -1,15 +1,16 @@  - net7.0-maccatalyst - $(TargetFrameworks);net7.0-windows10.0.19041.0 + net7.0-maccatalyst + net7.0-windows10.0.19041.0 Exe Cosmos.DataTransfer.App true true enable false - + False + Cosmos.DataTransfer.App From c8900eed64c08b60d59d955b2df203b2317a9455 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 15:02:42 -0700 Subject: [PATCH 10/30] Adjusting settings for mac --- .../Cosmos.DataTransfer.App.csproj | 98 +++++++++---------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj index 9694473a..7c5c9389 100644 --- a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj +++ b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj @@ -1,64 +1,64 @@  - - net7.0-maccatalyst - net7.0-windows10.0.19041.0 - Exe - Cosmos.DataTransfer.App - true - true - enable - false - False - - - Cosmos.DataTransfer.App + + net7.0-maccatalyst + net7.0-windows10.0.19041.0 + Exe + Cosmos.DataTransfer.App + true + true + enable + false + None - - com.companyname.cosmos.datatransfer.app - 68154905-4482-46BB-8408-005D875D578B + + Cosmos.DataTransfer.App - - 1.0 - 1 + + com.companyname.cosmos.datatransfer.app + 68154905-4482-46BB-8408-005D875D578B - 14.0 - 10.0.17763.0 - 10.0.17763.0 - enable - + + 1.0 + 1 - - - + 14.0 + 10.0.17763.0 + 10.0.17763.0 + enable + - - + + + - - - + + - - + + + - - - + + - - - - - + + + - - - - + + + + + - - - + + + + + + + + From 6a6956916d8617481d6c00f6086d4714a0b61d53 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 15:22:59 -0700 Subject: [PATCH 11/30] Removing win packaging; updating mac build tool versions --- .github/workflows/dotnet-build-test.yml | 5 ++++- App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj | 2 +- App/Cosmos.DataTransfer.App/MauiProgram.cs | 2 +- App/Cosmos.DataTransfer.App/Properties/launchSettings.json | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index 2f2817ac..9eac7b90 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -51,7 +51,7 @@ jobs: path: D:\a\data-migration-desktop-tool\data-migration-desktop-tool\App\Cosmos.DataTransfer.App\bin\Debug\net7.0-windows10.0.19041.0\win10-x64 #path/to/artifact/ # or path/to/artifact build-gui-mac: name: Build GUI projects for Mac - runs-on: macos-12 + runs-on: macos-13 steps: - uses: actions/checkout@v3 - name: Setup .NET @@ -60,6 +60,9 @@ jobs: dotnet-version: 7.0.x - name: Install MAUI Workload run: dotnet workload install maui-maccatalyst --ignore-failed-sources + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '14.3' - name: Restore Dependencies run: dotnet restore ./App/CosmosDbApp.sln - name: Build App diff --git a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj index 7c5c9389..fbff27d2 100644 --- a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj +++ b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj @@ -9,7 +9,7 @@ true enable false - None + None Cosmos.DataTransfer.App diff --git a/App/Cosmos.DataTransfer.App/MauiProgram.cs b/App/Cosmos.DataTransfer.App/MauiProgram.cs index 579b1d82..4360a509 100644 --- a/App/Cosmos.DataTransfer.App/MauiProgram.cs +++ b/App/Cosmos.DataTransfer.App/MauiProgram.cs @@ -28,7 +28,7 @@ public static MauiApp CreateMauiApp() #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); builder.Logging.AddDebug(); - appSettings.CoreAppPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..\\..\\..\\..\\..\\..\\..", "Core\\Cosmos.DataTransfer.Core", "bin\\Debug\\net6.0\\dmt.exe")); + appSettings.CoreAppPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..\\..\\..\\..\\..\\..", "Core\\Cosmos.DataTransfer.Core", "bin\\Debug\\net6.0\\dmt.exe")); #endif builder.Services.AddSingleton(appSettings); diff --git a/App/Cosmos.DataTransfer.App/Properties/launchSettings.json b/App/Cosmos.DataTransfer.App/Properties/launchSettings.json index edf8aadc..13a0c749 100644 --- a/App/Cosmos.DataTransfer.App/Properties/launchSettings.json +++ b/App/Cosmos.DataTransfer.App/Properties/launchSettings.json @@ -1,7 +1,7 @@ { "profiles": { - "Windows Machine": { - "commandName": "MsixPackage", + "Standalone": { + "commandName": "Project", "nativeDebugging": false } } From 83852d2f3602af2730d1308e76fae5d426d51406 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 16:19:28 -0700 Subject: [PATCH 12/30] Improving core app discovery --- .github/workflows/dotnet-build-test.yml | 6 +- App/Cosmos.DataTransfer.App/MauiProgram.cs | 81 ++++++++++++++----- .../Pages/Index.razor.cs | 9 +++ .../Platforms/Windows/App.xaml.cs | 2 +- 4 files changed, 75 insertions(+), 23 deletions(-) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index 9eac7b90..ec3f799f 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -53,6 +53,9 @@ jobs: name: Build GUI projects for Mac runs-on: macos-13 steps: + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '14.3' - uses: actions/checkout@v3 - name: Setup .NET uses: actions/setup-dotnet@v2 @@ -60,9 +63,6 @@ jobs: dotnet-version: 7.0.x - name: Install MAUI Workload run: dotnet workload install maui-maccatalyst --ignore-failed-sources - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '14.3' - name: Restore Dependencies run: dotnet restore ./App/CosmosDbApp.sln - name: Build App diff --git a/App/Cosmos.DataTransfer.App/MauiProgram.cs b/App/Cosmos.DataTransfer.App/MauiProgram.cs index 4360a509..49768d98 100644 --- a/App/Cosmos.DataTransfer.App/MauiProgram.cs +++ b/App/Cosmos.DataTransfer.App/MauiProgram.cs @@ -8,37 +8,80 @@ namespace Cosmos.DataTransfer.App; public static class MauiProgram { - public static MauiApp CreateMauiApp() - { - var builder = MauiApp.CreateBuilder(); - builder - .UseMauiApp() - .ConfigureFonts(fonts => - { - fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); - }); - - builder.Services.AddMauiBlazorWebView(); + public static MauiApp CreateMauiApp(string platformCoreAppName = "dmt") + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }); - var appSettings = new AppSettings - { - CoreAppPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "dmt.exe") - }; + builder.Services.AddMauiBlazorWebView(); + + string? executionDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + string? searchDir = FindParentWithContents(executionDir, "Extensions"); #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); builder.Logging.AddDebug(); - appSettings.CoreAppPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..\\..\\..\\..\\..\\..", "Core\\Cosmos.DataTransfer.Core", "bin\\Debug\\net6.0\\dmt.exe")); + + searchDir = FindParentWithContents(executionDir, "Core", ".git"); #endif + var dmtAppPath = FindPreferredCoreAppPath(searchDir, platformCoreAppName); + + var appSettings = new AppSettings + { + CoreAppPath = dmtAppPath + }; builder.Services.AddSingleton(appSettings); - + builder.Services.AddSingleton(); builder.Services.AddBlazorState(o => { - o.Assemblies = new[] { typeof(MauiProgram).GetTypeInfo().Assembly }; + o.Assemblies = new[] { typeof(MauiProgram).GetTypeInfo().Assembly }; }); return builder.Build(); - } + } + + private static string? FindParentWithContents(string? executionDir, params string[] markers) + { + string? searchDir = executionDir; + while (searchDir != null && !markers.Any(m => Directory.Exists(Path.Combine(searchDir, m)))) + { + searchDir = Path.GetDirectoryName(searchDir); + } + + if (string.IsNullOrEmpty(searchDir)) + { + return executionDir; + } + + return searchDir; + } + + private static string FindPreferredCoreAppPath(string? rootSearchFolder, string dmtFileName) + { + var dir = new DirectoryInfo(rootSearchFolder ?? Environment.CurrentDirectory); + + var fileList = dir.EnumerateFiles("*.*", SearchOption.AllDirectories); + + var candidates = fileList.Where(file => file.Name == dmtFileName).ToList(); + + if (candidates.Count == 1) + return candidates.Single().FullName; + + var preferred = candidates.Where(file => file.DirectoryName != null && new DirectoryInfo(file.DirectoryName).EnumerateDirectories().Any(d => d.Name == "Extensions")).ToList(); + if (preferred.Count == 1) + return preferred.Single().FullName; + + preferred = (preferred.Any() ? preferred : candidates).Where(file => file.DirectoryName?.Contains("bin\\Debug\\net6.0") == true).ToList(); + if (preferred.Count == 1) + return preferred.Single().FullName; + + return (preferred.FirstOrDefault() ?? candidates.FirstOrDefault())?.FullName ?? Path.Combine(dir.FullName, dmtFileName); + } } diff --git a/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs b/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs index aa89852b..55c9edf7 100644 --- a/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs +++ b/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs @@ -1,6 +1,8 @@ using Microsoft.AspNetCore.Components; using Cosmos.DataTransfer.Ui; using Cosmos.DataTransfer.App.Features.Settings; +using Cosmos.DataTransfer.App.Features.Execution; +using Cosmos.DataTransfer.Ui.MessageOutput; namespace Cosmos.DataTransfer.App.Pages { @@ -8,12 +10,19 @@ public partial class Index { [Inject] public IAppDataService DataService { get; set; } = null!; + [Inject] + public AppSettings Settings { get; set; } = null!; public SettingsState SettingsState => GetState(); protected override async Task OnParametersSetAsync() { await Mediator.Send(new SettingsState.LoadExtensionsAction()); + + if (File.Exists(Settings.CoreAppPath)) + Mediator.Log(new LogMessage($"Using DMT application at path '{Settings.CoreAppPath}'.")); + else + Mediator.Log(LogMessage.Error($"DMT application not found. Attempted to use path '{Settings.CoreAppPath}'.")); } private async Task SourceSelectionChanged(string name) diff --git a/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs b/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs index 0670d379..53e89d05 100644 --- a/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs +++ b/App/Cosmos.DataTransfer.App/Platforms/Windows/App.xaml.cs @@ -19,6 +19,6 @@ public App() this.InitializeComponent(); } - protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp("dmt.exe"); } From d1e1ea73a453574cd2cd5ecf5632857db084eb06 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 16:37:39 -0700 Subject: [PATCH 13/30] Fix for dev path priority --- App/Cosmos.DataTransfer.App/MauiProgram.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/App/Cosmos.DataTransfer.App/MauiProgram.cs b/App/Cosmos.DataTransfer.App/MauiProgram.cs index 49768d98..1526caea 100644 --- a/App/Cosmos.DataTransfer.App/MauiProgram.cs +++ b/App/Cosmos.DataTransfer.App/MauiProgram.cs @@ -21,14 +21,17 @@ public static MauiApp CreateMauiApp(string platformCoreAppName = "dmt") builder.Services.AddMauiBlazorWebView(); string? executionDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - string? searchDir = FindParentWithContents(executionDir, "Extensions"); + string? searchDir = null; #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); builder.Logging.AddDebug(); - searchDir = FindParentWithContents(executionDir, "Core", ".git"); + searchDir ??= FindParentWithContents(executionDir, "Core", ".git"); #endif + + searchDir ??= FindParentWithContents(executionDir, "Extensions"); + var dmtAppPath = FindPreferredCoreAppPath(searchDir, platformCoreAppName); var appSettings = new AppSettings From 57a061f39a8537bc8534765ce50d23a9061ce930 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 17:00:24 -0700 Subject: [PATCH 14/30] Fix for app search priority --- App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj | 1 + App/Cosmos.DataTransfer.App/MauiProgram.cs | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj index fbff27d2..d1d90a2f 100644 --- a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj +++ b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj @@ -26,6 +26,7 @@ 10.0.17763.0 10.0.17763.0 enable + dmt.ui diff --git a/App/Cosmos.DataTransfer.App/MauiProgram.cs b/App/Cosmos.DataTransfer.App/MauiProgram.cs index 1526caea..0e01f2f7 100644 --- a/App/Cosmos.DataTransfer.App/MauiProgram.cs +++ b/App/Cosmos.DataTransfer.App/MauiProgram.cs @@ -58,11 +58,6 @@ public static MauiApp CreateMauiApp(string platformCoreAppName = "dmt") searchDir = Path.GetDirectoryName(searchDir); } - if (string.IsNullOrEmpty(searchDir)) - { - return executionDir; - } - return searchDir; } From 7fa6627093478a19fff10508bd0f4218b4aa913e Mon Sep 17 00:00:00 2001 From: John Bowen Date: Fri, 28 Jul 2023 17:18:14 -0700 Subject: [PATCH 15/30] Fix for styles in renamed assembly --- App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj | 4 ++-- App/Cosmos.DataTransfer.App/wwwroot/index.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj index d1d90a2f..0313678d 100644 --- a/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj +++ b/App/Cosmos.DataTransfer.App/Cosmos.DataTransfer.App.csproj @@ -12,7 +12,8 @@ None - Cosmos.DataTransfer.App + Cosmos Data Migration Tool + dmt.ui com.companyname.cosmos.datatransfer.app @@ -26,7 +27,6 @@ 10.0.17763.0 10.0.17763.0 enable - dmt.ui diff --git a/App/Cosmos.DataTransfer.App/wwwroot/index.html b/App/Cosmos.DataTransfer.App/wwwroot/index.html index 7036398c..6f3b6a7e 100644 --- a/App/Cosmos.DataTransfer.App/wwwroot/index.html +++ b/App/Cosmos.DataTransfer.App/wwwroot/index.html @@ -7,7 +7,7 @@ - + From 3d79922616ab59a12cceae3d2f3d97d25746647d Mon Sep 17 00:00:00 2001 From: John Bowen Date: Sun, 6 Aug 2023 21:50:54 -0700 Subject: [PATCH 16/30] Adding windows specific WPF client to enable app deployment --- App/Cosmos.DataTransfer.App.Windows/App.xaml | 9 + .../App.xaml.cs | 50 ++++++ .../AssemblyInfo.cs | 10 ++ .../CollectionExtensions.cs | 16 ++ .../Cosmos.DataTransfer.App.Windows.csproj | 20 +++ .../ExecutionExtensions.cs | 24 +++ .../Framework/DelegateCommand.cs | 32 ++++ .../Framework/ViewModelBase.cs | 7 + .../LogViewModel.cs | 24 +++ .../MainViewModel.cs | 112 +++++++++++++ .../MainWindow.xaml | 65 ++++++++ .../MainWindow.xaml.cs | 26 +++ .../MessageLog.xaml | 34 ++++ .../MessageLog.xaml.cs | 46 ++++++ .../WpfAppDataService.cs | 154 ++++++++++++++++++ .../Data/AppDataService.cs | 1 + .../Features/Execution/AddLogMessageAction.cs | 1 + .../Features/Execution/ExecutionExtensions.cs | 3 +- .../Features/Execution/ExecutionState.cs | 1 + .../Execution/RunMigrationJobAction.cs | 1 + .../Features/Settings/LoadExtensionsAction.cs | 1 + .../Features/Settings/SettingsState.cs | 1 + App/Cosmos.DataTransfer.App/MauiProgram.cs | 43 +---- .../Pages/Index.razor.cs | 1 + .../AppSettings.cs | 4 +- .../Cosmos.DataTransfer.Ui.Common.csproj | 13 ++ .../DmtUtility.cs | 55 +++++++ .../ExtensionDefinition.cs | 2 +- .../ExtensionManifestUtility.cs | 6 +- .../ExtensionSetting.cs | 3 +- .../IAppDataService.cs | 6 +- .../IDataService.cs | 5 +- .../LogMessage.cs | 28 ++++ .../MessageType.cs | 13 ++ .../Cosmos.DataTransfer.Ui.csproj | 1 + .../ExtensionSelector.razor.cs | 1 + .../MessageOutput/MessageLog.razor.cs | 40 +---- .../SettingEditor.razor | 3 +- App/Cosmos.DataTransfer.Ui/SettingsList.razor | 3 +- App/Cosmos.DataTransfer.Ui/_Imports.razor | 1 + .../Pages/ClientDataService.cs | 1 + .../Pages/Index.razor.cs | 1 + App/CosmosDbApp.sln | 14 +- 43 files changed, 782 insertions(+), 100 deletions(-) create mode 100644 App/Cosmos.DataTransfer.App.Windows/App.xaml create mode 100644 App/Cosmos.DataTransfer.App.Windows/App.xaml.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/AssemblyInfo.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/CollectionExtensions.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj create mode 100644 App/Cosmos.DataTransfer.App.Windows/ExecutionExtensions.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/Framework/DelegateCommand.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/Framework/ViewModelBase.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/LogViewModel.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml create mode 100644 App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml create mode 100644 App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/WpfAppDataService.cs rename App/{Cosmos.DataTransfer.App => Cosmos.DataTransfer.Ui.Common}/AppSettings.cs (57%) create mode 100644 App/Cosmos.DataTransfer.Ui.Common/Cosmos.DataTransfer.Ui.Common.csproj create mode 100644 App/Cosmos.DataTransfer.Ui.Common/DmtUtility.cs rename App/{Cosmos.DataTransfer.Ui => Cosmos.DataTransfer.Ui.Common}/ExtensionDefinition.cs (92%) rename App/{Cosmos.DataTransfer.Ui => Cosmos.DataTransfer.Ui.Common}/ExtensionManifestUtility.cs (98%) rename App/{Cosmos.DataTransfer.Ui => Cosmos.DataTransfer.Ui.Common}/ExtensionSetting.cs (97%) rename App/{Cosmos.DataTransfer.App => Cosmos.DataTransfer.Ui.Common}/IAppDataService.cs (83%) rename App/{Cosmos.DataTransfer.Ui => Cosmos.DataTransfer.Ui.Common}/IDataService.cs (65%) create mode 100644 App/Cosmos.DataTransfer.Ui.Common/LogMessage.cs create mode 100644 App/Cosmos.DataTransfer.Ui.Common/MessageType.cs diff --git a/App/Cosmos.DataTransfer.App.Windows/App.xaml b/App/Cosmos.DataTransfer.App.Windows/App.xaml new file mode 100644 index 00000000..b231f004 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/App.xaml.cs b/App/Cosmos.DataTransfer.App.Windows/App.xaml.cs new file mode 100644 index 00000000..b8678cf4 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/App.xaml.cs @@ -0,0 +1,50 @@ +using Cosmos.DataTransfer.Ui.Common; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace Cosmos.DataTransfer.App.Windows; +/// +/// Interaction logic for App.xaml +/// +public partial class App : Application +{ + public new static App Current => (App)Application.Current; + + public App() + { + Services = ConfigureServices(); + + InitializeComponent(); + } + + public AppSettings? Settings => Services.GetService(); + + public IServiceProvider Services { get; } + + /// + /// Configures the services for the application. + /// + private static IServiceProvider ConfigureServices() + { + string dmtAppPath = DmtUtility.GetDmtAppPath("dmt.exe"); + + var settings = new AppSettings + { + CoreAppPath = dmtAppPath + }; + + var services = new ServiceCollection(); + + services.AddSingleton(settings); + + services.AddSingleton(new LogViewModel()); + + return services.BuildServiceProvider(); + } +} diff --git a/App/Cosmos.DataTransfer.App.Windows/AssemblyInfo.cs b/App/Cosmos.DataTransfer.App.Windows/AssemblyInfo.cs new file mode 100644 index 00000000..8b5504ec --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/App/Cosmos.DataTransfer.App.Windows/CollectionExtensions.cs b/App/Cosmos.DataTransfer.App.Windows/CollectionExtensions.cs new file mode 100644 index 00000000..11385e21 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/CollectionExtensions.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Cosmos.DataTransfer.App.Windows; + +public static class CollectionExtensions +{ + public static void AddRange(this ICollection collection, IEnumerable items) + { + foreach (var item in items) + { + collection.Add(item); + } + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj b/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj new file mode 100644 index 00000000..12e3a3bd --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj @@ -0,0 +1,20 @@ + + + + WinExe + net7.0-windows + enable + true + + + + + + + + + + + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/ExecutionExtensions.cs b/App/Cosmos.DataTransfer.App.Windows/ExecutionExtensions.cs new file mode 100644 index 00000000..7b7b695b --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/ExecutionExtensions.cs @@ -0,0 +1,24 @@ +using CommunityToolkit.Mvvm.Messaging; +using Cosmos.DataTransfer.Ui.Common; +using System; +using System.Linq; +using System.Threading.Tasks; + +namespace Cosmos.DataTransfer.App.Windows; + +public static class ExecutionExtensions +{ + public static void ThenReset(this Task task, IMessenger messenger) + { + // TODO: cancel execution + //task.ContinueWith(t => + //{ + // messenger.Send(new ExecutionState.CancelExecutionAction(true)); + //}); + } + + public static void Log(this IMessenger messenger, LogMessage message) + { + messenger.Send(message); + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/Framework/DelegateCommand.cs b/App/Cosmos.DataTransfer.App.Windows/Framework/DelegateCommand.cs new file mode 100644 index 00000000..1918019e --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Framework/DelegateCommand.cs @@ -0,0 +1,32 @@ +using System.Windows.Input; +using System; + +namespace Cosmos.DataTransfer.App.Windows.Framework; + +public class DelegateCommand : ICommand +{ + private readonly Action _command; + private readonly Func? _canExecute; + + public event EventHandler? CanExecuteChanged + { + add => CommandManager.RequerySuggested += value; + remove => CommandManager.RequerySuggested -= value; + } + + public DelegateCommand(Action command, Func? canExecute = null) + { + _canExecute = canExecute; + _command = command ?? throw new ArgumentNullException(); + } + + public void Execute(object? parameter) + { + _command(); + } + + public bool CanExecute(object? parameter) + { + return _canExecute == null || _canExecute(); + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/Framework/ViewModelBase.cs b/App/Cosmos.DataTransfer.App.Windows/Framework/ViewModelBase.cs new file mode 100644 index 00000000..87d314ac --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Framework/ViewModelBase.cs @@ -0,0 +1,7 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +namespace Cosmos.DataTransfer.App.Windows.Framework; + +public class ViewModelBase : ObservableRecipient +{ +} diff --git a/App/Cosmos.DataTransfer.App.Windows/LogViewModel.cs b/App/Cosmos.DataTransfer.App.Windows/LogViewModel.cs new file mode 100644 index 00000000..fb39ced4 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/LogViewModel.cs @@ -0,0 +1,24 @@ +using CommunityToolkit.Mvvm.Messaging; +using Cosmos.DataTransfer.App.Windows.Framework; +using Cosmos.DataTransfer.Ui.Common; +using System; +using System.Collections.ObjectModel; +using System.Linq; +using System.Windows.Data; +using System.Windows.Threading; + +namespace Cosmos.DataTransfer.App.Windows; + +public class LogViewModel : ViewModelBase +{ + public LogViewModel() + { + BindingOperations.EnableCollectionSynchronization(Messages, new object()); + Messenger.Register(this, (s, m) => + { + Messages.Add(m); + }); + } + + public ObservableCollection Messages { get; } = new(); +} diff --git a/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs b/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs new file mode 100644 index 00000000..1d4bb394 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text.Json; +using System.Threading.Tasks; +using System.Threading; +using System.Windows; +using Cosmos.DataTransfer.App.Windows.Framework; +using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui.Common; +using System.Diagnostics.Metrics; +using Microsoft.Extensions.DependencyInjection; +using CommunityToolkit.Mvvm.Messaging; +using System.Windows.Threading; + +namespace Cosmos.DataTransfer.App.Windows; + +public class MainViewModel : ViewModelBase +{ + private readonly IAppDataService _appDataService; + + public MainViewModel() + { + var appSettings = App.Current.Settings; + if (appSettings == null) + { + throw new InvalidOperationException(); + } + + _appDataService = new WpfAppDataService(appSettings); + + Initialize(); + + if (File.Exists(appSettings.CoreAppPath)) + Messenger.Log(new LogMessage($"Using DMT application at path '{appSettings.CoreAppPath}'.")); + else + Messenger.Log(LogMessage.Error($"DMT application not found. Attempted to use path '{appSettings.CoreAppPath}'.")); + } + + public ObservableCollection Sources { get; } = new(); + public ObservableCollection Sinks { get; } = new(); + + private ExtensionDefinition? _selectedSource; + public ExtensionDefinition? SelectedSource + { + get => _selectedSource; + set + { + if (SetProperty(ref _selectedSource, value)) + { + if (_selectedSource == null) + { + SourceSettings = null; + } + else + { + SourceSettings = _appDataService.GetSettingsAsync(_selectedSource.DisplayName, ExtensionDirection.Source) + .GetAwaiter().GetResult(); + } + } + } + } + + private ExtensionDefinition? _selectedSink; + public ExtensionDefinition? SelectedSink + { + get => _selectedSink; + set + { + if (SetProperty(ref _selectedSink, value)) + { + if (_selectedSink == null) + { + SinkSettings = null; + } + else + { + SinkSettings = _appDataService.GetSettingsAsync(_selectedSink.DisplayName, ExtensionDirection.Sink) + .GetAwaiter().GetResult(); + } + } + } + } + + private ExtensionSettings? _sinkSettings; + + public ExtensionSettings? SinkSettings + { + get => _sinkSettings; + set => SetProperty(ref _sinkSettings, value); + } + + private ExtensionSettings? _sourceSettings; + + public ExtensionSettings? SourceSettings + { + get => _sourceSettings; + set => SetProperty(ref _sourceSettings, value); + } + + private async void Initialize() + { + var extensions = await _appDataService.GetExtensionsAsync(); + Sources.AddRange(extensions.Sources); + Sinks.AddRange(extensions.Sinks); + } +} diff --git a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml new file mode 100644 index 00000000..9a34a099 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs new file mode 100644 index 00000000..5f1cb7e7 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Cosmos.DataTransfer.App.Windows; +/// +/// Interaction logic for MainWindow.xaml +/// +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + } +} diff --git a/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml b/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml new file mode 100644 index 00000000..a6217236 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml.cs b/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml.cs new file mode 100644 index 00000000..44ce755f --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml.cs @@ -0,0 +1,46 @@ +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Cosmos.DataTransfer.App.Windows +{ + /// + /// Interaction logic for MessageLog.xaml + /// + public partial class MessageLog : UserControl + { + public MessageLog() + { + InitializeComponent(); + + var logs = App.Current.Services.GetService(); + LayoutRoot.DataContext = logs; + + if (logs != null) + { + logs.Messages.CollectionChanged += (s, e) => + { + if (e.NewItems != null) + { + Dispatcher.Invoke(() => + { + ItemScroll.ScrollToBottom(); + }, System.Windows.Threading.DispatcherPriority.Background); + } + }; + } + } + } +} diff --git a/App/Cosmos.DataTransfer.App.Windows/WpfAppDataService.cs b/App/Cosmos.DataTransfer.App.Windows/WpfAppDataService.cs new file mode 100644 index 00000000..a90cc481 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/WpfAppDataService.cs @@ -0,0 +1,154 @@ +using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui.Common; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text.Json; +using System.Threading; +using System.Threading.Tasks; + +namespace Cosmos.DataTransfer.App.Windows; + +public class WpfAppDataService : IAppDataService +{ + private readonly AppSettings _appSettings; + private ExtensionManifest? _sources; + private ExtensionManifest? _sinks; + + public async Task GetSourceManifest() + { + if (_sources == null || _sources == ExtensionManifest.Empty) + { + _sources = await GetExtensionManifest(ExtensionDirection.Source); + } + return _sources; + } + + public async Task GetSinkManifest() + { + if (_sinks == null || _sinks == ExtensionManifest.Empty) + { + _sinks = await GetExtensionManifest(ExtensionDirection.Sink); + } + return _sinks; + } + + private async Task GetExtensionManifest(ExtensionDirection direction) + { + string tempFilePath = Path.GetTempFileName(); + await RunCoreAppAsync($"settings --output \"{tempFilePath}\" {(direction == ExtensionDirection.Sink ? "--sink" : "--source")}"); + ExtensionManifest manifest; + await using (FileStream stream = File.OpenRead(tempFilePath)) + { + manifest = await JsonSerializer.DeserializeAsync(stream, ExtensionManifestUtility.JsonOptions) ?? ExtensionManifest.Empty; + } + File.Delete(tempFilePath); + return manifest; + } + + public WpfAppDataService(AppSettings appSettings) + { + _appSettings = appSettings; + } + + public async Task GetExtensionsAsync() + { + if (_appSettings.CoreAppPath == null) + { + throw new InvalidOperationException(); + } + + var sourceManifest = await GetSourceManifest(); + var sinkManifest = await GetSinkManifest(); + + return ExtensionManifestUtility.CombineManifestExtensions(sourceManifest, sinkManifest); + } + + public async Task GetSettingsAsync(string name, ExtensionDirection direction) + { + if (_appSettings.CoreAppPath == null) + { + throw new InvalidOperationException(); + } + + var manifest = direction == ExtensionDirection.Sink ? await GetSinkManifest() : await GetSourceManifest(); + return manifest.GetExtensionSettings(name); + } + + public async Task BuildSettingsAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink) + { + string json = ExtensionManifestUtility.CreateMigrationSettingsJson(selectedSource, selectedSink, source, sink); + return json; + } + + public async Task BuildCommandAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink) + { + string command = ExtensionManifestUtility.CreateRunCommandJson(selectedSource, selectedSink, source, sink); + return command; + } + + public async Task ExecuteWithSettingsAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink, Func sendLogMessage, CancellationToken cancellationToken) + { + string json = ExtensionManifestUtility.CreateMigrationSettingsJson(selectedSource, selectedSink, source, sink); + var path = Path.Combine(Path.GetTempPath(), "migrationsettings.json"); + await File.WriteAllTextAsync(path, json, cancellationToken); + + return await RunCoreAppAsync($"run --settings \"{path}\"", sendLogMessage, cancellationToken); + } + + + private Task RunCoreAppAsync(string arguments) + { + return RunCoreAppAsync(arguments, m => Task.CompletedTask, CancellationToken.None); + } + + private async Task RunCoreAppAsync(string arguments, Func sendLogMessage, CancellationToken cancellationToken) + { + var process = Process.Start(new ProcessStartInfo + { + FileName = _appSettings.CoreAppPath, + Arguments = arguments, + UseShellExecute = false, + RedirectStandardOutput = true, + CreateNoWindow = true, + }); + + try + { + MessageType? activeType = null; + while (!process!.StandardOutput.EndOfStream) + { + cancellationToken.ThrowIfCancellationRequested(); + var line = await process.StandardOutput.ReadLineAsync(cancellationToken); + if (line != null) + { + if (!line.StartsWith('\t') && !line.StartsWith(" ")) + { + activeType = null; + } + var message = LogMessage.App(line); + if (activeType != null) + { + message.Type = activeType.Value; + } + + await sendLogMessage(message); + + activeType = message.Type; + } + } + + await process!.WaitForExitAsync(cancellationToken); + return true; + } + catch + { + process!.Kill(); + throw; + } + + return false; + } +} diff --git a/App/Cosmos.DataTransfer.App/Data/AppDataService.cs b/App/Cosmos.DataTransfer.App/Data/AppDataService.cs index 9a1072ce..64cf47f8 100644 --- a/App/Cosmos.DataTransfer.App/Data/AppDataService.cs +++ b/App/Cosmos.DataTransfer.App/Data/AppDataService.cs @@ -2,6 +2,7 @@ using System.Text.Json; using Cosmos.DataTransfer.Interfaces.Manifest; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; using Cosmos.DataTransfer.Ui.MessageOutput; namespace Cosmos.DataTransfer.App.Data; diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs index c5e860c4..817a28e5 100644 --- a/App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs +++ b/App/Cosmos.DataTransfer.App/Features/Execution/AddLogMessageAction.cs @@ -1,4 +1,5 @@ using BlazorState; +using Cosmos.DataTransfer.Ui.Common; using Cosmos.DataTransfer.Ui.MessageOutput; namespace Cosmos.DataTransfer.App.Features.Execution; diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs index fe894aef..1fd0bd2a 100644 --- a/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs +++ b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionExtensions.cs @@ -1,4 +1,5 @@ -using Cosmos.DataTransfer.Ui.MessageOutput; +using Cosmos.DataTransfer.Ui.Common; +using Cosmos.DataTransfer.Ui.MessageOutput; using MediatR; namespace Cosmos.DataTransfer.App.Features.Execution; diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs index 01add949..aee1dcf4 100644 --- a/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs +++ b/App/Cosmos.DataTransfer.App/Features/Execution/ExecutionState.cs @@ -1,4 +1,5 @@ using BlazorState; +using Cosmos.DataTransfer.Ui.Common; using Cosmos.DataTransfer.Ui.MessageOutput; namespace Cosmos.DataTransfer.App.Features.Execution; diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs index 461931db..d4d59f62 100644 --- a/App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs +++ b/App/Cosmos.DataTransfer.App/Features/Execution/RunMigrationJobAction.cs @@ -1,6 +1,7 @@ using BlazorState; using Cosmos.DataTransfer.App.Features.Settings; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; using Cosmos.DataTransfer.Ui.MessageOutput; using MediatR; diff --git a/App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs index c66a8e5d..02259f70 100644 --- a/App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs +++ b/App/Cosmos.DataTransfer.App/Features/Settings/LoadExtensionsAction.cs @@ -1,5 +1,6 @@ using BlazorState; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; namespace Cosmos.DataTransfer.App.Features.Settings; diff --git a/App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs index c74d45db..b623b8cd 100644 --- a/App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs +++ b/App/Cosmos.DataTransfer.App/Features/Settings/SettingsState.cs @@ -1,5 +1,6 @@ using BlazorState; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; namespace Cosmos.DataTransfer.App.Features.Settings; diff --git a/App/Cosmos.DataTransfer.App/MauiProgram.cs b/App/Cosmos.DataTransfer.App/MauiProgram.cs index 0e01f2f7..21b607f8 100644 --- a/App/Cosmos.DataTransfer.App/MauiProgram.cs +++ b/App/Cosmos.DataTransfer.App/MauiProgram.cs @@ -2,7 +2,7 @@ using BlazorState; using Microsoft.Extensions.Logging; using Cosmos.DataTransfer.App.Data; -using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; namespace Cosmos.DataTransfer.App; @@ -20,19 +20,12 @@ public static MauiApp CreateMauiApp(string platformCoreAppName = "dmt") builder.Services.AddMauiBlazorWebView(); - string? executionDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - string? searchDir = null; - #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); builder.Logging.AddDebug(); - - searchDir ??= FindParentWithContents(executionDir, "Core", ".git"); #endif - searchDir ??= FindParentWithContents(executionDir, "Extensions"); - - var dmtAppPath = FindPreferredCoreAppPath(searchDir, platformCoreAppName); + string dmtAppPath = DmtUtility.GetDmtAppPath(platformCoreAppName); var appSettings = new AppSettings { @@ -50,36 +43,4 @@ public static MauiApp CreateMauiApp(string platformCoreAppName = "dmt") return builder.Build(); } - private static string? FindParentWithContents(string? executionDir, params string[] markers) - { - string? searchDir = executionDir; - while (searchDir != null && !markers.Any(m => Directory.Exists(Path.Combine(searchDir, m)))) - { - searchDir = Path.GetDirectoryName(searchDir); - } - - return searchDir; - } - - private static string FindPreferredCoreAppPath(string? rootSearchFolder, string dmtFileName) - { - var dir = new DirectoryInfo(rootSearchFolder ?? Environment.CurrentDirectory); - - var fileList = dir.EnumerateFiles("*.*", SearchOption.AllDirectories); - - var candidates = fileList.Where(file => file.Name == dmtFileName).ToList(); - - if (candidates.Count == 1) - return candidates.Single().FullName; - - var preferred = candidates.Where(file => file.DirectoryName != null && new DirectoryInfo(file.DirectoryName).EnumerateDirectories().Any(d => d.Name == "Extensions")).ToList(); - if (preferred.Count == 1) - return preferred.Single().FullName; - - preferred = (preferred.Any() ? preferred : candidates).Where(file => file.DirectoryName?.Contains("bin\\Debug\\net6.0") == true).ToList(); - if (preferred.Count == 1) - return preferred.Single().FullName; - - return (preferred.FirstOrDefault() ?? candidates.FirstOrDefault())?.FullName ?? Path.Combine(dir.FullName, dmtFileName); - } } diff --git a/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs b/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs index 55c9edf7..36b4b90b 100644 --- a/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs +++ b/App/Cosmos.DataTransfer.App/Pages/Index.razor.cs @@ -2,6 +2,7 @@ using Cosmos.DataTransfer.Ui; using Cosmos.DataTransfer.App.Features.Settings; using Cosmos.DataTransfer.App.Features.Execution; +using Cosmos.DataTransfer.Ui.Common; using Cosmos.DataTransfer.Ui.MessageOutput; namespace Cosmos.DataTransfer.App.Pages diff --git a/App/Cosmos.DataTransfer.App/AppSettings.cs b/App/Cosmos.DataTransfer.Ui.Common/AppSettings.cs similarity index 57% rename from App/Cosmos.DataTransfer.App/AppSettings.cs rename to App/Cosmos.DataTransfer.Ui.Common/AppSettings.cs index 0343a637..d50eb6bf 100644 --- a/App/Cosmos.DataTransfer.App/AppSettings.cs +++ b/App/Cosmos.DataTransfer.Ui.Common/AppSettings.cs @@ -1,4 +1,6 @@ -namespace Cosmos.DataTransfer.App +using System.Reflection; + +namespace Cosmos.DataTransfer.Ui.Common { public class AppSettings { diff --git a/App/Cosmos.DataTransfer.Ui.Common/Cosmos.DataTransfer.Ui.Common.csproj b/App/Cosmos.DataTransfer.Ui.Common/Cosmos.DataTransfer.Ui.Common.csproj new file mode 100644 index 00000000..f843bd19 --- /dev/null +++ b/App/Cosmos.DataTransfer.Ui.Common/Cosmos.DataTransfer.Ui.Common.csproj @@ -0,0 +1,13 @@ + + + + net7.0 + enable + enable + + + + + + + diff --git a/App/Cosmos.DataTransfer.Ui.Common/DmtUtility.cs b/App/Cosmos.DataTransfer.Ui.Common/DmtUtility.cs new file mode 100644 index 00000000..48efdf9b --- /dev/null +++ b/App/Cosmos.DataTransfer.Ui.Common/DmtUtility.cs @@ -0,0 +1,55 @@ +using System.Reflection; + +namespace Cosmos.DataTransfer.Ui.Common; + +public class DmtUtility +{ + public static string GetDmtAppPath(string platformCoreAppName) + { + string? executionDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + string? searchDir = null; + +#if DEBUG + searchDir ??= FindParentWithContents(executionDir, "Core", ".git"); +#endif + + searchDir ??= FindParentWithContents(executionDir, "Extensions"); + + var dmtAppPath = FindPreferredCoreAppPath(searchDir, platformCoreAppName); + return dmtAppPath; + } + + private static string? FindParentWithContents(string? executionDir, params string[] markers) + { + string? searchDir = executionDir; + while (searchDir != null && !markers.Any(m => Directory.Exists(Path.Combine(searchDir, m)))) + { + searchDir = Path.GetDirectoryName(searchDir); + } + + return searchDir; + } + + private static string FindPreferredCoreAppPath(string? rootSearchFolder, string dmtFileName) + { + var dir = new DirectoryInfo(rootSearchFolder ?? Environment.CurrentDirectory); + + var fileList = dir.EnumerateFiles("*.*", SearchOption.AllDirectories); + + var candidates = fileList.Where(file => file.Name == dmtFileName).ToList(); + + if (candidates.Count == 1) + return candidates.Single().FullName; + + var preferred = candidates.Where(file => file.DirectoryName != null && new DirectoryInfo(file.DirectoryName).EnumerateDirectories().Any(d => d.Name == "Extensions")).ToList(); + if (preferred.Count == 1) + return preferred.Single().FullName; + + preferred = (preferred.Any() ? preferred : candidates).Where(file => file.DirectoryName?.Contains("bin\\Debug\\net6.0") == true).ToList(); + if (preferred.Count == 1) + return preferred.Single().FullName; + + return (preferred.FirstOrDefault() ?? candidates.FirstOrDefault())?.FullName ?? Path.Combine(dir.FullName, dmtFileName); + } + +} diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs b/App/Cosmos.DataTransfer.Ui.Common/ExtensionDefinition.cs similarity index 92% rename from App/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs rename to App/Cosmos.DataTransfer.Ui.Common/ExtensionDefinition.cs index ee70b813..fee3e367 100644 --- a/App/Cosmos.DataTransfer.Ui/ExtensionDefinition.cs +++ b/App/Cosmos.DataTransfer.Ui.Common/ExtensionDefinition.cs @@ -1,4 +1,4 @@ -namespace Cosmos.DataTransfer.Ui; +namespace Cosmos.DataTransfer.Ui.Common; public record ExtensionDefinition(string DisplayName); diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs b/App/Cosmos.DataTransfer.Ui.Common/ExtensionManifestUtility.cs similarity index 98% rename from App/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs rename to App/Cosmos.DataTransfer.Ui.Common/ExtensionManifestUtility.cs index 720cbdeb..6443c40f 100644 --- a/App/Cosmos.DataTransfer.Ui/ExtensionManifestUtility.cs +++ b/App/Cosmos.DataTransfer.Ui.Common/ExtensionManifestUtility.cs @@ -1,11 +1,9 @@ -using Cosmos.DataTransfer.Interfaces; using System.Text.Json; +using System.Text.Json.Nodes; using System.Text.Json.Serialization; using Cosmos.DataTransfer.Interfaces.Manifest; -using System.Text; -using System.Text.Json.Nodes; -namespace Cosmos.DataTransfer.Ui +namespace Cosmos.DataTransfer.Ui.Common { public static class ExtensionManifestUtility { diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionSetting.cs b/App/Cosmos.DataTransfer.Ui.Common/ExtensionSetting.cs similarity index 97% rename from App/Cosmos.DataTransfer.Ui/ExtensionSetting.cs rename to App/Cosmos.DataTransfer.Ui.Common/ExtensionSetting.cs index 13595f68..939c5163 100644 --- a/App/Cosmos.DataTransfer.Ui/ExtensionSetting.cs +++ b/App/Cosmos.DataTransfer.Ui.Common/ExtensionSetting.cs @@ -1,8 +1,7 @@ using System.Text.Json; -using Cosmos.DataTransfer.Interfaces; using Cosmos.DataTransfer.Interfaces.Manifest; -namespace Cosmos.DataTransfer.Ui +namespace Cosmos.DataTransfer.Ui.Common { public class ExtensionSetting { diff --git a/App/Cosmos.DataTransfer.App/IAppDataService.cs b/App/Cosmos.DataTransfer.Ui.Common/IAppDataService.cs similarity index 83% rename from App/Cosmos.DataTransfer.App/IAppDataService.cs rename to App/Cosmos.DataTransfer.Ui.Common/IAppDataService.cs index 5f75b505..1014f066 100644 --- a/App/Cosmos.DataTransfer.App/IAppDataService.cs +++ b/App/Cosmos.DataTransfer.Ui.Common/IAppDataService.cs @@ -1,10 +1,8 @@ -using Cosmos.DataTransfer.Interfaces; -using Cosmos.DataTransfer.Ui.MessageOutput; +namespace Cosmos.DataTransfer.Ui.Common; -namespace Cosmos.DataTransfer.Ui; public interface IAppDataService : IDataService { Task BuildCommandAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink); Task BuildSettingsAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink); Task ExecuteWithSettingsAsync(string selectedSource, string selectedSink, IEnumerable? source, IEnumerable? sink, Func sendLogMessage, CancellationToken cancellationToken); -} \ No newline at end of file +} diff --git a/App/Cosmos.DataTransfer.Ui/IDataService.cs b/App/Cosmos.DataTransfer.Ui.Common/IDataService.cs similarity index 65% rename from App/Cosmos.DataTransfer.Ui/IDataService.cs rename to App/Cosmos.DataTransfer.Ui.Common/IDataService.cs index 0677bbc1..cb480ee4 100644 --- a/App/Cosmos.DataTransfer.Ui/IDataService.cs +++ b/App/Cosmos.DataTransfer.Ui.Common/IDataService.cs @@ -1,9 +1,6 @@ -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; using Cosmos.DataTransfer.Interfaces.Manifest; -namespace Cosmos.DataTransfer.Ui +namespace Cosmos.DataTransfer.Ui.Common { public interface IDataService { diff --git a/App/Cosmos.DataTransfer.Ui.Common/LogMessage.cs b/App/Cosmos.DataTransfer.Ui.Common/LogMessage.cs new file mode 100644 index 00000000..2f39e2dd --- /dev/null +++ b/App/Cosmos.DataTransfer.Ui.Common/LogMessage.cs @@ -0,0 +1,28 @@ +namespace Cosmos.DataTransfer.Ui.Common; + +public class LogMessage +{ + public static LogMessage Error(string text) => new(text, MessageType.Error); + public static LogMessage Warn(string text) => new(text, MessageType.Warning); + public static LogMessage App(string text) => new(text, MessageType.AppLog); + public static LogMessage Data(string text) => new(text, MessageType.Data); + + public LogMessage(string? text, MessageType type = MessageType.Message) + { + Text = text; + Type = type; + if (type == MessageType.AppLog && text != null) + { + if (text.StartsWith("info: ")) + Type = MessageType.AppLogInfo; + else if (text.StartsWith("warn: ")) + Type = MessageType.AppLogWarning; + else if (text.StartsWith("fail: ")) + Type = MessageType.AppLogError; + } + } + + public MessageType Type { get; set; } + public string? Text { get; set; } + public DateTime Time { get; } = DateTime.Now; +} diff --git a/App/Cosmos.DataTransfer.Ui.Common/MessageType.cs b/App/Cosmos.DataTransfer.Ui.Common/MessageType.cs new file mode 100644 index 00000000..66c374d3 --- /dev/null +++ b/App/Cosmos.DataTransfer.Ui.Common/MessageType.cs @@ -0,0 +1,13 @@ +namespace Cosmos.DataTransfer.Ui.Common; + +public enum MessageType +{ + Message, + AppLog, + AppLogInfo, + AppLogWarning, + AppLogError, + Error, + Warning, + Data, +} diff --git a/App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj b/App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj index 8d0d74ba..214b655f 100644 --- a/App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj +++ b/App/Cosmos.DataTransfer.Ui/Cosmos.DataTransfer.Ui.csproj @@ -18,6 +18,7 @@ + diff --git a/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs b/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs index 26d77fdd..66ececde 100644 --- a/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs +++ b/App/Cosmos.DataTransfer.Ui/ExtensionSelector.razor.cs @@ -1,5 +1,6 @@ using Cosmos.DataTransfer.Interfaces; using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui.Common; using Microsoft.AspNetCore.Components; namespace Cosmos.DataTransfer.Ui diff --git a/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs b/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs index 94fa0d8c..0d267667 100644 --- a/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs +++ b/App/Cosmos.DataTransfer.Ui/MessageOutput/MessageLog.razor.cs @@ -1,3 +1,4 @@ +using Cosmos.DataTransfer.Ui.Common; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; @@ -33,42 +34,3 @@ protected override Task OnParametersSetAsync() return base.OnParametersSetAsync(); } } - -public class LogMessage -{ - public static LogMessage Error(string text) => new(text, MessageType.Error); - public static LogMessage Warn(string text) => new(text, MessageType.Warning); - public static LogMessage App(string text) => new(text, MessageType.AppLog); - public static LogMessage Data(string text) => new(text, MessageType.Data); - - public LogMessage(string? text, MessageType type = MessageType.Message) - { - Text = text; - Type = type; - if (type == MessageType.AppLog && text != null) - { - if (text.StartsWith("info: ")) - Type = MessageType.AppLogInfo; - else if (text.StartsWith("warn: ")) - Type = MessageType.AppLogWarning; - else if (text.StartsWith("fail: ")) - Type = MessageType.AppLogError; - } - } - - public MessageType Type { get; set; } - public string? Text { get; set; } - public DateTime Time { get; } = DateTime.Now; -} - -public enum MessageType -{ - Message, - AppLog, - AppLogInfo, - AppLogWarning, - AppLogError, - Error, - Warning, - Data, -} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.Ui/SettingEditor.razor b/App/Cosmos.DataTransfer.Ui/SettingEditor.razor index 4ff7e0bf..2f45313a 100644 --- a/App/Cosmos.DataTransfer.Ui/SettingEditor.razor +++ b/App/Cosmos.DataTransfer.Ui/SettingEditor.razor @@ -1,4 +1,5 @@ -
+@using Cosmos.DataTransfer.Ui.Common +
@if (Setting?.Definition.Type == PropertyType.Undeclared) {
diff --git a/App/Cosmos.DataTransfer.Ui/SettingsList.razor b/App/Cosmos.DataTransfer.Ui/SettingsList.razor index f7b94969..77be843c 100644 --- a/App/Cosmos.DataTransfer.Ui/SettingsList.razor +++ b/App/Cosmos.DataTransfer.Ui/SettingsList.razor @@ -1,4 +1,5 @@ - +@using Cosmos.DataTransfer.Ui.Common +
@if (Settings != null) { diff --git a/App/Cosmos.DataTransfer.Ui/_Imports.razor b/App/Cosmos.DataTransfer.Ui/_Imports.razor index ee3aced9..5412ef5b 100644 --- a/App/Cosmos.DataTransfer.Ui/_Imports.razor +++ b/App/Cosmos.DataTransfer.Ui/_Imports.razor @@ -2,3 +2,4 @@ @using Cosmos.DataTransfer.Interfaces @using Cosmos.DataTransfer.Interfaces.Manifest @using Humanizer +@using Cosmos.DataTransfer.Ui.Common diff --git a/App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs b/App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs index 5a910617..1b1d1ffc 100644 --- a/App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs +++ b/App/Cosmos.DataTransfer.Web/Pages/ClientDataService.cs @@ -3,6 +3,7 @@ using System.Reflection; using System.Text.Json; using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui.Common; namespace Cosmos.DataTransfer.Web.Pages { diff --git a/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs b/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs index 5d40cbb1..6f42af65 100644 --- a/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs +++ b/App/Cosmos.DataTransfer.Web/Pages/Index.razor.cs @@ -2,6 +2,7 @@ using Cosmos.DataTransfer.Interfaces; using Cosmos.DataTransfer.Interfaces.Manifest; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; using Cosmos.DataTransfer.Ui.MessageOutput; namespace Cosmos.DataTransfer.Web.Pages diff --git a/App/CosmosDbApp.sln b/App/CosmosDbApp.sln index 754b4ec9..bbed1a4b 100644 --- a/App/CosmosDbApp.sln +++ b/App/CosmosDbApp.sln @@ -10,6 +10,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.Ui", "C EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cosmos.DataTransfer.Web", "Cosmos.DataTransfer.Web\Cosmos.DataTransfer.Web.csproj", "{B2484E00-EBFD-4954-BBE5-492E642638F3}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.DataTransfer.App.Windows", "Cosmos.DataTransfer.App.Windows\Cosmos.DataTransfer.App.Windows.csproj", "{8D120A74-2BE7-4AA7-B265-52AE27FD9CBF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.DataTransfer.Ui.Common", "Cosmos.DataTransfer.Ui.Common\Cosmos.DataTransfer.Ui.Common.csproj", "{2C20A170-F544-4BE1-8F90-7FFA6A601D80}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -34,12 +38,20 @@ Global {B2484E00-EBFD-4954-BBE5-492E642638F3}.Debug|Any CPU.Build.0 = Debug|Any CPU {B2484E00-EBFD-4954-BBE5-492E642638F3}.Release|Any CPU.ActiveCfg = Release|Any CPU {B2484E00-EBFD-4954-BBE5-492E642638F3}.Release|Any CPU.Build.0 = Release|Any CPU + {8D120A74-2BE7-4AA7-B265-52AE27FD9CBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8D120A74-2BE7-4AA7-B265-52AE27FD9CBF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D120A74-2BE7-4AA7-B265-52AE27FD9CBF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8D120A74-2BE7-4AA7-B265-52AE27FD9CBF}.Release|Any CPU.Build.0 = Release|Any CPU + {2C20A170-F544-4BE1-8F90-7FFA6A601D80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C20A170-F544-4BE1-8F90-7FFA6A601D80}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C20A170-F544-4BE1-8F90-7FFA6A601D80}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C20A170-F544-4BE1-8F90-7FFA6A601D80}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} SolutionGuid = {CA5FFC7E-EC76-4544-B861-BBB175A47B10} + SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} EndGlobalSection EndGlobal From 2ac8694acdd796fc926c8847b7c68ae86927406e Mon Sep 17 00:00:00 2001 From: John Bowen Date: Sun, 6 Aug 2023 22:57:56 -0700 Subject: [PATCH 17/30] Namespace fixes --- .../Features/Execution/ExportSettingsFileAction.cs | 1 + .../Features/Execution/GenerateCommandAction.cs | 1 + .../Features/Settings/SelectSinkAction.cs | 1 + .../Features/Settings/SelectSourceAction.cs | 1 + App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor | 1 + 5 files changed, 5 insertions(+) diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs index aff4ec28..a7801b7f 100644 --- a/App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs +++ b/App/Cosmos.DataTransfer.App/Features/Execution/ExportSettingsFileAction.cs @@ -1,6 +1,7 @@ using BlazorState; using Cosmos.DataTransfer.App.Features.Settings; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; using Cosmos.DataTransfer.Ui.MessageOutput; using MediatR; diff --git a/App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs b/App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs index 891ace7f..4dfa6779 100644 --- a/App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs +++ b/App/Cosmos.DataTransfer.App/Features/Execution/GenerateCommandAction.cs @@ -1,6 +1,7 @@ using BlazorState; using Cosmos.DataTransfer.App.Features.Settings; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; using Cosmos.DataTransfer.Ui.MessageOutput; using MediatR; diff --git a/App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs index ec63ef54..b7f6118c 100644 --- a/App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs +++ b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSinkAction.cs @@ -1,6 +1,7 @@ using BlazorState; using Cosmos.DataTransfer.Interfaces.Manifest; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; namespace Cosmos.DataTransfer.App.Features.Settings; diff --git a/App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs index 4b0b4b8c..f68abb64 100644 --- a/App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs +++ b/App/Cosmos.DataTransfer.App/Features/Settings/SelectSourceAction.cs @@ -1,6 +1,7 @@ using BlazorState; using Cosmos.DataTransfer.Interfaces.Manifest; using Cosmos.DataTransfer.Ui; +using Cosmos.DataTransfer.Ui.Common; namespace Cosmos.DataTransfer.App.Features.Settings; diff --git a/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor b/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor index 106cf7d2..887ff43e 100644 --- a/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor +++ b/App/Cosmos.DataTransfer.App/Shared/ExecutionToolbar.razor @@ -1,5 +1,6 @@ @using Cosmos.DataTransfer.App.Features.Execution @using Cosmos.DataTransfer.App.Features.Settings +@using Cosmos.DataTransfer.Ui.Common @using Cosmos.DataTransfer.Ui.MessageOutput @inherits BlazorStateComponent From f2509cc96dcf556f276a00b2f82ab8ad51596749 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Mon, 7 Aug 2023 00:50:44 -0700 Subject: [PATCH 18/30] Adding basic commands and logging --- .../ExecutionExtensions.cs | 9 -- .../LogViewModel.cs | 50 +++++- .../MainViewModel.cs | 142 ++++++++++++++++-- .../MainWindow.xaml | 15 +- .../MessageLog.xaml | 24 +-- .../MessageLog.xaml.cs | 18 ++- 6 files changed, 208 insertions(+), 50 deletions(-) diff --git a/App/Cosmos.DataTransfer.App.Windows/ExecutionExtensions.cs b/App/Cosmos.DataTransfer.App.Windows/ExecutionExtensions.cs index 7b7b695b..6c3b9144 100644 --- a/App/Cosmos.DataTransfer.App.Windows/ExecutionExtensions.cs +++ b/App/Cosmos.DataTransfer.App.Windows/ExecutionExtensions.cs @@ -8,15 +8,6 @@ namespace Cosmos.DataTransfer.App.Windows; public static class ExecutionExtensions { - public static void ThenReset(this Task task, IMessenger messenger) - { - // TODO: cancel execution - //task.ContinueWith(t => - //{ - // messenger.Send(new ExecutionState.CancelExecutionAction(true)); - //}); - } - public static void Log(this IMessenger messenger, LogMessage message) { messenger.Send(message); diff --git a/App/Cosmos.DataTransfer.App.Windows/LogViewModel.cs b/App/Cosmos.DataTransfer.App.Windows/LogViewModel.cs index fb39ced4..6c75ef08 100644 --- a/App/Cosmos.DataTransfer.App.Windows/LogViewModel.cs +++ b/App/Cosmos.DataTransfer.App.Windows/LogViewModel.cs @@ -1,11 +1,11 @@ using CommunityToolkit.Mvvm.Messaging; using Cosmos.DataTransfer.App.Windows.Framework; using Cosmos.DataTransfer.Ui.Common; -using System; using System.Collections.ObjectModel; -using System.Linq; +using System.Windows; using System.Windows.Data; -using System.Windows.Threading; +using System.Windows.Documents; +using System.Windows.Media; namespace Cosmos.DataTransfer.App.Windows; @@ -13,12 +13,52 @@ public class LogViewModel : ViewModelBase { public LogViewModel() { + Document.FontFamily = new("Consolas"); + Document.FontSize = 12; + Document.LineHeight = 18; + Document.Background = Brushes.Black; + Document.Blocks.Add(new Paragraph + { + TextAlignment = TextAlignment.Left, + }); + Document.PagePadding = new(5); + BindingOperations.EnableCollectionSynchronization(Messages, new object()); - Messenger.Register(this, (s, m) => + Messenger.Register(this, (MessageHandler)((s, m) => { Messages.Add(m); - }); + + var output = new Run($"{m.Text}\n"); + + switch (m.Type) + { + case MessageType.Error: + output.Foreground = Brushes.Red; + break; + case MessageType.AppLogError: + output.Foreground = new SolidColorBrush(Colors.Red) { Opacity = 0.75 }; + break; + case MessageType.Warning: + output.Foreground = Brushes.Orange; + break; + case MessageType.AppLogWarning: + output.Foreground = new SolidColorBrush(Colors.Orange) { Opacity = 0.75 }; + break; + case MessageType.AppLogInfo: + case MessageType.AppLog: + output.Foreground = new SolidColorBrush(Colors.White) { Opacity = 0.5 }; + break; + case MessageType.Data: + default: + output.Foreground = Brushes.White; + break; + } + + (Document.Blocks.LastBlock as Paragraph)?.Inlines.Add(output); + })); } public ObservableCollection Messages { get; } = new(); + + public FlowDocument Document { get; } = new(); } diff --git a/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs b/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs index 1d4bb394..f63c80bf 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs +++ b/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs @@ -14,26 +14,33 @@ using Cosmos.DataTransfer.Interfaces.Manifest; using Cosmos.DataTransfer.Ui.Common; using System.Diagnostics.Metrics; +using System.Windows.Input; using Microsoft.Extensions.DependencyInjection; using CommunityToolkit.Mvvm.Messaging; using System.Windows.Threading; +using CommunityToolkit.Mvvm.Input; namespace Cosmos.DataTransfer.App.Windows; public class MainViewModel : ViewModelBase { - private readonly IAppDataService _appDataService; + private readonly IAppDataService _dataService; public MainViewModel() { + GenerateCmdLineCommand = new RelayCommand(GenerateCmdLine); + ExportSettingsCommand = new RelayCommand(ExportSettings); + RunJobCommand = new RelayCommand(RunJob); + CancelCommand = new RelayCommand(Cancel); + var appSettings = App.Current.Settings; if (appSettings == null) { throw new InvalidOperationException(); } - _appDataService = new WpfAppDataService(appSettings); - + _dataService = new WpfAppDataService(appSettings); + Initialize(); if (File.Exists(appSettings.CoreAppPath)) @@ -42,6 +49,13 @@ public MainViewModel() Messenger.Log(LogMessage.Error($"DMT application not found. Attempted to use path '{appSettings.CoreAppPath}'.")); } + private async void Initialize() + { + var extensions = await _dataService.GetExtensionsAsync(); + Sources.AddRange(extensions.Sources); + Sinks.AddRange(extensions.Sinks); + } + public ObservableCollection Sources { get; } = new(); public ObservableCollection Sinks { get; } = new(); @@ -59,7 +73,7 @@ public ExtensionDefinition? SelectedSource } else { - SourceSettings = _appDataService.GetSettingsAsync(_selectedSource.DisplayName, ExtensionDirection.Source) + SourceSettings = _dataService.GetSettingsAsync(_selectedSource.DisplayName, ExtensionDirection.Source) .GetAwaiter().GetResult(); } } @@ -80,7 +94,7 @@ public ExtensionDefinition? SelectedSink } else { - SinkSettings = _appDataService.GetSettingsAsync(_selectedSink.DisplayName, ExtensionDirection.Sink) + SinkSettings = _dataService.GetSettingsAsync(_selectedSink.DisplayName, ExtensionDirection.Sink) .GetAwaiter().GetResult(); } } @@ -96,6 +110,7 @@ public ExtensionSettings? SinkSettings } private ExtensionSettings? _sourceSettings; + private bool _isExecuting; public ExtensionSettings? SourceSettings { @@ -103,10 +118,119 @@ public ExtensionSettings? SourceSettings set => SetProperty(ref _sourceSettings, value); } - private async void Initialize() + public ICommand ExportSettingsCommand { get; } + + private void ExportSettings() { - var extensions = await _appDataService.GetExtensionsAsync(); - Sources.AddRange(extensions.Sources); - Sinks.AddRange(extensions.Sinks); + CurrentExecutionAction = new CancellationTokenSource(); + IsExecuting = true; + + ThenReset(ExecuteExportSettings(CurrentExecutionAction.Token)); + } + + private async Task ExecuteExportSettings(CancellationToken cancellationToken) + { + try + { + cancellationToken.ThrowIfCancellationRequested(); + var output = await _dataService.BuildSettingsAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), + SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), + SourceSettings?.Settings, + SinkSettings?.Settings); + + Messenger.Log(LogMessage.Data(output)); + } + catch (Exception ex) + { + Messenger.Log(LogMessage.Error(ex.Message)); + } + } + + public ICommand RunJobCommand { get; } + + private void RunJob() + { + CurrentExecutionAction = new CancellationTokenSource(); + IsExecuting = true; + + ThenReset(ExecuteRunJob(CurrentExecutionAction.Token)); + } + + private async Task ExecuteRunJob(CancellationToken cancellationToken) + { + try + { + cancellationToken.ThrowIfCancellationRequested(); + bool completed = await _dataService.ExecuteWithSettingsAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), + SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), + SourceSettings?.Settings, + SinkSettings?.Settings, + async m => Messenger.Log(m), + cancellationToken); + } + catch (Exception ex) + { + Messenger.Log(LogMessage.Error(ex.Message)); + } + } + + public ICommand CancelCommand { get; } + + private async void Cancel() + { + await CancelExecution(false); + } + + public ICommand GenerateCmdLineCommand { get; } + + private void GenerateCmdLine() + { + CurrentExecutionAction = new CancellationTokenSource(); + IsExecuting = true; + + ThenReset(ExecuteGenerateCmdLine(CurrentExecutionAction.Token)); + } + + public void ThenReset(Task task) + { + task.ContinueWith(t => + { + CancelExecution(true); + }); + } + + protected async Task CancelExecution(bool Completed) + { + if (!Completed) + { + CurrentExecutionAction?.Cancel(); + } + CurrentExecutionAction = null; + IsExecuting = false; + } + + public CancellationTokenSource? CurrentExecutionAction { get; set; } + + public bool IsExecuting + { + get => _isExecuting; + set => SetProperty(ref _isExecuting, value); + } + + private async Task ExecuteGenerateCmdLine(CancellationToken cancellationToken) + { + try + { + cancellationToken.ThrowIfCancellationRequested(); + var output = await _dataService.BuildCommandAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), + SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), + SourceSettings?.Settings, + SinkSettings?.Settings); + Messenger.Log(LogMessage.Data(output)); + } + catch (Exception ex) + { + Messenger.Log(LogMessage.Error(ex.Message)); + } } } diff --git a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml index 9a34a099..02c72b7e 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml +++ b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml @@ -26,12 +26,16 @@ - + + - - + + + + + @@ -57,8 +61,9 @@ - - + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml b/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml index a6217236..60fc6706 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml +++ b/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml @@ -9,26 +9,8 @@ d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type={x:Type local:LogViewModel}}"> - - - - - - - - - - - - - - - - - - - - - + + diff --git a/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml.cs b/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml.cs index 44ce755f..28332c4d 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml.cs +++ b/App/Cosmos.DataTransfer.App.Windows/MessageLog.xaml.cs @@ -36,11 +36,27 @@ public MessageLog() { Dispatcher.Invoke(() => { - ItemScroll.ScrollToBottom(); + FindScrollViewer(DocumentScroll)?.ScrollToBottom(); }, System.Windows.Threading.DispatcherPriority.Background); } }; } } + + public static ScrollViewer? FindScrollViewer(DependencyObject parent) + { + if (VisualTreeHelper.GetChildrenCount(parent) == 0) + { + return null; + } + + var firstChild = VisualTreeHelper.GetChild(parent, 0); + if (firstChild == null) + { + return null; + } + + return firstChild as ScrollViewer ?? FindScrollViewer(firstChild); + } } } From b43dd4f35ebd06ca8b4213234ca3a1174c4a1f6d Mon Sep 17 00:00:00 2001 From: John Bowen Date: Mon, 7 Aug 2023 09:53:35 -0700 Subject: [PATCH 19/30] Matching functionality and design of Maui app --- .../Actions/CommandAction.cs | 72 ++++++++ .../Actions/ExportSettingsAction.cs | 24 +++ .../Actions/GenerateCommandLineAction.cs | 23 +++ .../Actions/RunJobAction.cs | 23 +++ App/Cosmos.DataTransfer.App.Windows/App.xaml | 6 +- .../AppStyles.xaml | 27 +++ .../MainViewModel.cs | 155 ++++-------------- .../MainWindow.xaml | 98 +++++++++-- .../MainWindow.xaml.cs | 58 +++++++ 9 files changed, 346 insertions(+), 140 deletions(-) create mode 100644 App/Cosmos.DataTransfer.App.Windows/Actions/CommandAction.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/Actions/ExportSettingsAction.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/Actions/GenerateCommandLineAction.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/Actions/RunJobAction.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/AppStyles.xaml diff --git a/App/Cosmos.DataTransfer.App.Windows/Actions/CommandAction.cs b/App/Cosmos.DataTransfer.App.Windows/Actions/CommandAction.cs new file mode 100644 index 00000000..fff6c07c --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Actions/CommandAction.cs @@ -0,0 +1,72 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using CommunityToolkit.Mvvm.Messaging; +using Cosmos.DataTransfer.Ui.Common; + +namespace Cosmos.DataTransfer.App.Windows.Actions; + +public abstract class CommandAction +{ + public MainViewModel Host { get; set; } + protected IMessenger Messenger => Host.GetMessenger(); + + protected ExtensionDefinition? SelectedSource => Host.SelectedSource; + protected ExtensionDefinition? SelectedSink => Host.SelectedSink; + protected ExtensionSettings? SourceSettings => Host.SourceSettings; + protected ExtensionSettings? SinkSettings => Host.SinkSettings; + protected IAppDataService DataService => Host.DataService; + + protected CommandAction(MainViewModel host) + { + Host = host; + } + + protected bool SettingsSelected() + { + if (SelectedSource == null || SelectedSink == null) + { + Messenger.Log(LogMessage.Warn("Choose Source and Sink to generate settings.")); + return false; + } + + return true; + } + + protected abstract Task Execute(CancellationToken cancellationToken); + + public async Task Execute() + { + if (!SettingsSelected()) + return; + + Host.CurrentExecutionAction = new CancellationTokenSource(); + Host.IsExecuting = true; + + Task task = Execute(Host.CurrentExecutionAction.Token); + ThenReset(task); + try + { + await task; + } + catch (TaskCanceledException) + { + Messenger.Log(LogMessage.Warn("Operation Canceled")); + } + catch (Exception ex) + { + Messenger.Log(LogMessage.Error(ex.Message)); + } + } + + public void ThenReset(Task task) + { + task.ContinueWith(t => + { + App.Current.Dispatcher.Invoke(() => + { + Host.CancelExecution(true); + }); + }); + } +} diff --git a/App/Cosmos.DataTransfer.App.Windows/Actions/ExportSettingsAction.cs b/App/Cosmos.DataTransfer.App.Windows/Actions/ExportSettingsAction.cs new file mode 100644 index 00000000..2f6f519c --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Actions/ExportSettingsAction.cs @@ -0,0 +1,24 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Cosmos.DataTransfer.Ui.Common; + +namespace Cosmos.DataTransfer.App.Windows.Actions; + +public class ExportSettingsAction : CommandAction +{ + public ExportSettingsAction(MainViewModel host) : base(host) + { + } + + protected override async Task Execute(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + var output = await DataService.BuildSettingsAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), + SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), + SourceSettings?.Settings, + SinkSettings?.Settings); + + Messenger.Log(LogMessage.Data(output)); + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/Actions/GenerateCommandLineAction.cs b/App/Cosmos.DataTransfer.App.Windows/Actions/GenerateCommandLineAction.cs new file mode 100644 index 00000000..9d70f826 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Actions/GenerateCommandLineAction.cs @@ -0,0 +1,23 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Cosmos.DataTransfer.Ui.Common; + +namespace Cosmos.DataTransfer.App.Windows.Actions; + +public class GenerateCommandLineAction : CommandAction +{ + public GenerateCommandLineAction(MainViewModel host) : base(host) + { + } + + protected override async Task Execute(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + var output = await DataService.BuildCommandAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), + SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), + SourceSettings?.Settings, + SinkSettings?.Settings); + Messenger.Log(LogMessage.Data(output)); + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/Actions/RunJobAction.cs b/App/Cosmos.DataTransfer.App.Windows/Actions/RunJobAction.cs new file mode 100644 index 00000000..5b5f1ca0 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Actions/RunJobAction.cs @@ -0,0 +1,23 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace Cosmos.DataTransfer.App.Windows.Actions; + +public class RunJobAction : CommandAction +{ + public RunJobAction(MainViewModel host) : base(host) + { + } + + protected override async Task Execute(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + bool completed = await DataService.ExecuteWithSettingsAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), + SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), + SourceSettings?.Settings, + SinkSettings?.Settings, + async m => Messenger.Log(m), + cancellationToken); + } +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/App.xaml b/App/Cosmos.DataTransfer.App.Windows/App.xaml index b231f004..3da64479 100644 --- a/App/Cosmos.DataTransfer.App.Windows/App.xaml +++ b/App/Cosmos.DataTransfer.App.Windows/App.xaml @@ -4,6 +4,10 @@ xmlns:local="clr-namespace:Cosmos.DataTransfer.App.Windows" StartupUri="MainWindow.xaml"> - + + + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/AppStyles.xaml b/App/Cosmos.DataTransfer.App.Windows/AppStyles.xaml new file mode 100644 index 00000000..d32fe81f --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/AppStyles.xaml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs b/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs index f63c80bf..44ae7326 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs +++ b/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs @@ -1,37 +1,25 @@ using System; -using System.Collections.Generic; using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Diagnostics; using System.IO; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text.Json; -using System.Threading.Tasks; using System.Threading; -using System.Windows; +using System.Threading.Tasks; using Cosmos.DataTransfer.App.Windows.Framework; using Cosmos.DataTransfer.Interfaces.Manifest; using Cosmos.DataTransfer.Ui.Common; -using System.Diagnostics.Metrics; -using System.Windows.Input; -using Microsoft.Extensions.DependencyInjection; using CommunityToolkit.Mvvm.Messaging; -using System.Windows.Threading; using CommunityToolkit.Mvvm.Input; +using Cosmos.DataTransfer.App.Windows.Actions; namespace Cosmos.DataTransfer.App.Windows; public class MainViewModel : ViewModelBase { - private readonly IAppDataService _dataService; - public MainViewModel() { - GenerateCmdLineCommand = new RelayCommand(GenerateCmdLine); - ExportSettingsCommand = new RelayCommand(ExportSettings); - RunJobCommand = new RelayCommand(RunJob); - CancelCommand = new RelayCommand(Cancel); + GenerateCmdLineCommand = new AsyncRelayCommand(new GenerateCommandLineAction(this).Execute, () => !IsExecuting); + ExportSettingsCommand = new AsyncRelayCommand(new ExportSettingsAction(this).Execute, () => !IsExecuting); + RunJobCommand = new AsyncRelayCommand(new RunJobAction(this).Execute, () => !IsExecuting); + CancelCommand = new AsyncRelayCommand(Cancel, () => IsExecuting); var appSettings = App.Current.Settings; if (appSettings == null) @@ -39,7 +27,7 @@ public MainViewModel() throw new InvalidOperationException(); } - _dataService = new WpfAppDataService(appSettings); + DataService = new WpfAppDataService(appSettings); Initialize(); @@ -51,11 +39,16 @@ public MainViewModel() private async void Initialize() { - var extensions = await _dataService.GetExtensionsAsync(); + var extensions = await DataService.GetExtensionsAsync(); Sources.AddRange(extensions.Sources); Sinks.AddRange(extensions.Sinks); } + public IRelayCommand ExportSettingsCommand { get; } + public IRelayCommand RunJobCommand { get; } + public IRelayCommand CancelCommand { get; } + public IRelayCommand GenerateCmdLineCommand { get; } + public ObservableCollection Sources { get; } = new(); public ObservableCollection Sinks { get; } = new(); @@ -73,7 +66,7 @@ public ExtensionDefinition? SelectedSource } else { - SourceSettings = _dataService.GetSettingsAsync(_selectedSource.DisplayName, ExtensionDirection.Source) + SourceSettings = DataService.GetSettingsAsync(_selectedSource.DisplayName, ExtensionDirection.Source) .GetAwaiter().GetResult(); } } @@ -94,7 +87,7 @@ public ExtensionDefinition? SelectedSink } else { - SinkSettings = _dataService.GetSettingsAsync(_selectedSink.DisplayName, ExtensionDirection.Sink) + SinkSettings = DataService.GetSettingsAsync(_selectedSink.DisplayName, ExtensionDirection.Sink) .GetAwaiter().GetResult(); } } @@ -110,7 +103,6 @@ public ExtensionSettings? SinkSettings } private ExtensionSettings? _sourceSettings; - private bool _isExecuting; public ExtensionSettings? SourceSettings { @@ -118,119 +110,40 @@ public ExtensionSettings? SourceSettings set => SetProperty(ref _sourceSettings, value); } - public ICommand ExportSettingsCommand { get; } - - private void ExportSettings() - { - CurrentExecutionAction = new CancellationTokenSource(); - IsExecuting = true; - - ThenReset(ExecuteExportSettings(CurrentExecutionAction.Token)); - } - - private async Task ExecuteExportSettings(CancellationToken cancellationToken) - { - try - { - cancellationToken.ThrowIfCancellationRequested(); - var output = await _dataService.BuildSettingsAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), - SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), - SourceSettings?.Settings, - SinkSettings?.Settings); - - Messenger.Log(LogMessage.Data(output)); - } - catch (Exception ex) - { - Messenger.Log(LogMessage.Error(ex.Message)); - } - } - - public ICommand RunJobCommand { get; } - - private void RunJob() - { - CurrentExecutionAction = new CancellationTokenSource(); - IsExecuting = true; - - ThenReset(ExecuteRunJob(CurrentExecutionAction.Token)); - } + public CancellationTokenSource? CurrentExecutionAction { get; set; } + private bool _isExecuting; - private async Task ExecuteRunJob(CancellationToken cancellationToken) + public bool IsExecuting { - try - { - cancellationToken.ThrowIfCancellationRequested(); - bool completed = await _dataService.ExecuteWithSettingsAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), - SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), - SourceSettings?.Settings, - SinkSettings?.Settings, - async m => Messenger.Log(m), - cancellationToken); - } - catch (Exception ex) + get => _isExecuting; + set { - Messenger.Log(LogMessage.Error(ex.Message)); + if (SetProperty(ref _isExecuting, value)) + { + GenerateCmdLineCommand.NotifyCanExecuteChanged(); + ExportSettingsCommand.NotifyCanExecuteChanged(); + RunJobCommand.NotifyCanExecuteChanged(); + CancelCommand.NotifyCanExecuteChanged(); + } } } - public ICommand CancelCommand { get; } - - private async void Cancel() - { - await CancelExecution(false); - } + public IAppDataService DataService { get; } - public ICommand GenerateCmdLineCommand { get; } + public IMessenger GetMessenger() => Messenger; - private void GenerateCmdLine() + private async Task Cancel() { - CurrentExecutionAction = new CancellationTokenSource(); - IsExecuting = true; - - ThenReset(ExecuteGenerateCmdLine(CurrentExecutionAction.Token)); - } - - public void ThenReset(Task task) - { - task.ContinueWith(t => - { - CancelExecution(true); - }); + CancelExecution(false); } - protected async Task CancelExecution(bool Completed) + public void CancelExecution(bool completed) { - if (!Completed) + if (!completed) { CurrentExecutionAction?.Cancel(); } CurrentExecutionAction = null; IsExecuting = false; } - - public CancellationTokenSource? CurrentExecutionAction { get; set; } - - public bool IsExecuting - { - get => _isExecuting; - set => SetProperty(ref _isExecuting, value); - } - - private async Task ExecuteGenerateCmdLine(CancellationToken cancellationToken) - { - try - { - cancellationToken.ThrowIfCancellationRequested(); - var output = await _dataService.BuildCommandAsync(SelectedSource?.DisplayName ?? throw new InvalidOperationException("No Source selected"), - SelectedSink?.DisplayName ?? throw new InvalidOperationException("No Sink selected"), - SourceSettings?.Settings, - SinkSettings?.Settings); - Messenger.Log(LogMessage.Data(output)); - } - catch (Exception ex) - { - Messenger.Log(LogMessage.Error(ex.Message)); - } - } -} +} \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml index 02c72b7e..5cc97eb9 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml +++ b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml @@ -6,7 +6,8 @@ xmlns:local="clr-namespace:Cosmos.DataTransfer.App.Windows" xmlns:common="clr-namespace:Cosmos.DataTransfer.Ui.Common;assembly=Cosmos.DataTransfer.Ui.Common" mc:Ignorable="d" - Title="MainWindow" Height="800" Width="1200"> + Title="Azure Cosmos DB Desktop Data Migration Tool" Height="800" Width="1200" + FontSize="16" FontFamily="Trebuchet MS"> @@ -15,11 +16,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + @@ -31,32 +83,42 @@ - - - - - + + + + + + + + About + - - + + - - + + + + - - + + - - + + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs index 5f1cb7e7..fcc583bf 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs +++ b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; @@ -12,6 +13,8 @@ using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; +using Cosmos.DataTransfer.Interfaces.Manifest; +using Cosmos.DataTransfer.Ui.Common; namespace Cosmos.DataTransfer.App.Windows; /// @@ -23,4 +26,59 @@ public MainWindow() { InitializeComponent(); } + + private void AllowOnlyNumbers(object sender, TextCompositionEventArgs e) + { + var regex = new Regex("[^0-9]+", RegexOptions.Compiled); + e.Handled = regex.IsMatch(e.Text); + } + + private void AllowOnlyFloatNumbers(object sender, TextCompositionEventArgs e) + { + var regex = new Regex("[^0-9.]+", RegexOptions.Compiled); + e.Handled = regex.IsMatch(e.Text); + } + + private void Hyperlink_Click(object sender, RoutedEventArgs e) + { + const string url = "https://github.com/AzureCosmosDB/data-migration-desktop-tool"; + System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(url) { UseShellExecute = true }); + } +} + +public class SettingEditorTemplateSelector : DataTemplateSelector +{ + public DataTemplate? Default { get; set; } + public DataTemplate? Boolean { get; set; } + public DataTemplate? Number { get; set; } + public DataTemplate? Float { get; set; } + public DataTemplate? SelectList { get; set; } + public DataTemplate? MultiLine { get; set; } + public DataTemplate? Date { get; set; } + + public override DataTemplate? SelectTemplate(object item, DependencyObject container) + { + if (item is not ExtensionSetting setting) + return Default; + switch (setting.Definition.Type) + { + case PropertyType.Boolean: + return Boolean; + case PropertyType.Int: + return Number; + case PropertyType.Float: + return Float; + case PropertyType.DateTime: + return Date; + case PropertyType.Enum: + return SelectList; + case PropertyType.Array: + return MultiLine; + case PropertyType.String: + case PropertyType.Undeclared: + default: + return Default; + } + return base.SelectTemplate(item, container); + } } From bf935b9941810453a1c680383fc36a6b5d9f550e Mon Sep 17 00:00:00 2001 From: John Bowen Date: Mon, 7 Aug 2023 19:15:51 -0700 Subject: [PATCH 20/30] Saving window position --- .../App.config | 21 +++++++ .../Cosmos.DataTransfer.App.Windows.csproj | 15 +++++ .../MainWindow.xaml.cs | 28 +++++++++ .../Properties/Settings.Designer.cs | 62 +++++++++++++++++++ .../Properties/Settings.settings | 15 +++++ 5 files changed, 141 insertions(+) create mode 100644 App/Cosmos.DataTransfer.App.Windows/App.config create mode 100644 App/Cosmos.DataTransfer.App.Windows/Properties/Settings.Designer.cs create mode 100644 App/Cosmos.DataTransfer.App.Windows/Properties/Settings.settings diff --git a/App/Cosmos.DataTransfer.App.Windows/App.config b/App/Cosmos.DataTransfer.App.Windows/App.config new file mode 100644 index 00000000..3265268d --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/App.config @@ -0,0 +1,21 @@ + + + + +
+ + + + + + 0, 0 + + + 0, 0 + + + False + + + + \ No newline at end of file diff --git a/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj b/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj index 12e3a3bd..57088b01 100644 --- a/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj +++ b/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj @@ -17,4 +17,19 @@ + + + True + True + Settings.settings + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs index fcc583bf..d0afd707 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs +++ b/App/Cosmos.DataTransfer.App.Windows/MainWindow.xaml.cs @@ -25,6 +25,34 @@ public partial class MainWindow : Window public MainWindow() { InitializeComponent(); + + if (Properties.Settings.Default.WindowSize.Width > 0) + { + Width = Properties.Settings.Default.WindowSize.Width; + Height = Properties.Settings.Default.WindowSize.Height; + Left = Properties.Settings.Default.WindowPosition.X; + Top = Properties.Settings.Default.WindowPosition.Y; + } + + if (Properties.Settings.Default.WindowMaximized) + WindowState = WindowState.Maximized; + + Closing += (s, e) => + { + if (WindowState == WindowState.Maximized) + { + Properties.Settings.Default.WindowPosition = new System.Drawing.Point((int)RestoreBounds.Location.X, (int)RestoreBounds.Location.Y); + Properties.Settings.Default.WindowSize = new System.Drawing.Size((int)RestoreBounds.Size.Width, (int)RestoreBounds.Size.Height); + Properties.Settings.Default.WindowMaximized = true; + } + else + { + Properties.Settings.Default.WindowPosition = new System.Drawing.Point((int)Left, (int)Top); + Properties.Settings.Default.WindowSize = new System.Drawing.Size((int)Width, (int)Height); + Properties.Settings.Default.WindowMaximized = false; + } + Properties.Settings.Default.Save(); + }; } private void AllowOnlyNumbers(object sender, TextCompositionEventArgs e) diff --git a/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.Designer.cs b/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.Designer.cs new file mode 100644 index 00000000..a86a2f5f --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Cosmos.DataTransfer.App.Windows.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.6.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] + public global::System.Drawing.Point WindowPosition { + get { + return ((global::System.Drawing.Point)(this["WindowPosition"])); + } + set { + this["WindowPosition"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] + public global::System.Drawing.Size WindowSize { + get { + return ((global::System.Drawing.Size)(this["WindowSize"])); + } + set { + this["WindowSize"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool WindowMaximized { + get { + return ((bool)(this["WindowMaximized"])); + } + set { + this["WindowMaximized"] = value; + } + } + } +} diff --git a/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.settings b/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.settings new file mode 100644 index 00000000..4e767647 --- /dev/null +++ b/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.settings @@ -0,0 +1,15 @@ + + + + + + 0, 0 + + + 0, 0 + + + False + + + \ No newline at end of file From cfb19bb1a3c0859dc39ae5aafaaddfb3ef3baf35 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Tue, 8 Aug 2023 00:22:24 -0700 Subject: [PATCH 21/30] Publishing setup --- .github/workflows/internal-test-build.yml | 46 +++++++++++++++---- .../App.xaml.cs | 2 - .../Cosmos.DataTransfer.App.Windows.csproj | 3 ++ .../MainViewModel.cs | 13 ++++-- .../WpfAppDataService.cs | 5 ++ 5 files changed, 56 insertions(+), 13 deletions(-) diff --git a/.github/workflows/internal-test-build.yml b/.github/workflows/internal-test-build.yml index d2e28081..5e647e3e 100644 --- a/.github/workflows/internal-test-build.yml +++ b/.github/workflows/internal-test-build.yml @@ -15,14 +15,6 @@ jobs: run: dotnet --version - name: Checkout source code uses: actions/checkout@v3 - - name: Execute Action build-with-plugins for Windows - uses: ./.github/actions/build-with-plugins - id: build-with-plugins-win - with: - platform: windows - platform-short: win - runtime: win-x64 - build-version: 0.0.${{ github.run_number }} - name: Execute Action build-with-plugins for MacOS uses: ./.github/actions/build-with-plugins id: build-with-plugins-mac @@ -39,3 +31,41 @@ jobs: platform-short: linux runtime: linux-x64 build-version: 0.0.${{ github.run_number }} + build-package-win: + name: Build self-contained Windows executables + runs-on: windows-2022 + container: mcr.microsoft.com/dotnet/sdk:6.0 + steps: + - name: Check .NET version + run: dotnet --version + - name: Checkout source code + uses: actions/checkout@v3 + - name: Setup .NET 7 + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 7.0.x + - name: Build Windows desktop package + shell: bash + run: | + dotnet publish \ + App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj \ + --configuration Release \ + --output win \ + --self-contained true \ + --runtime win-x64 \ + -p:PublishSingleFile=true \ + -p:DebugType=embedded \ + -p:IncludeNativeLibrariesForSelfExtract=true \ + -p:Version=0.0.${{ github.run_number }} + - name: Setup .NET 6 + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 6.0.x + - name: Execute Action build-with-plugins for Windows + uses: ./.github/actions/build-with-plugins + id: build-with-plugins-win + with: + platform: windows + platform-short: win + runtime: win-x64 + build-version: 0.0.${{ github.run_number }} diff --git a/App/Cosmos.DataTransfer.App.Windows/App.xaml.cs b/App/Cosmos.DataTransfer.App.Windows/App.xaml.cs index b8678cf4..944b336c 100644 --- a/App/Cosmos.DataTransfer.App.Windows/App.xaml.cs +++ b/App/Cosmos.DataTransfer.App.Windows/App.xaml.cs @@ -19,8 +19,6 @@ public partial class App : Application public App() { Services = ConfigureServices(); - - InitializeComponent(); } public AppSettings? Settings => Services.GetService(); diff --git a/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj b/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj index 57088b01..1f315792 100644 --- a/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj +++ b/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj @@ -5,6 +5,9 @@ net7.0-windows enable true + true + true + dmt-gui-win diff --git a/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs b/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs index 44ae7326..a2ad0da1 100644 --- a/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs +++ b/App/Cosmos.DataTransfer.App.Windows/MainViewModel.cs @@ -39,9 +39,16 @@ public MainViewModel() private async void Initialize() { - var extensions = await DataService.GetExtensionsAsync(); - Sources.AddRange(extensions.Sources); - Sinks.AddRange(extensions.Sinks); + try + { + var extensions = await DataService.GetExtensionsAsync(); + Sources.AddRange(extensions.Sources); + Sinks.AddRange(extensions.Sinks); + } + catch (Exception ex) + { + Messenger.Log(LogMessage.Error($"Failed to load extensions")); + } } public IRelayCommand ExportSettingsCommand { get; } diff --git a/App/Cosmos.DataTransfer.App.Windows/WpfAppDataService.cs b/App/Cosmos.DataTransfer.App.Windows/WpfAppDataService.cs index a90cc481..2bafcef1 100644 --- a/App/Cosmos.DataTransfer.App.Windows/WpfAppDataService.cs +++ b/App/Cosmos.DataTransfer.App.Windows/WpfAppDataService.cs @@ -106,6 +106,11 @@ private Task RunCoreAppAsync(string arguments) private async Task RunCoreAppAsync(string arguments, Func sendLogMessage, CancellationToken cancellationToken) { + if (string.IsNullOrEmpty(_appSettings.CoreAppPath)) + { + throw new InvalidOperationException(); + } + var process = Process.Start(new ProcessStartInfo { FileName = _appSettings.CoreAppPath, From 4e3e6706b01b7067f76435444633584c040b5261 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Tue, 8 Aug 2023 00:28:32 -0700 Subject: [PATCH 22/30] script fix --- .github/workflows/internal-test-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/internal-test-build.yml b/.github/workflows/internal-test-build.yml index 5e647e3e..6a590143 100644 --- a/.github/workflows/internal-test-build.yml +++ b/.github/workflows/internal-test-build.yml @@ -34,7 +34,6 @@ jobs: build-package-win: name: Build self-contained Windows executables runs-on: windows-2022 - container: mcr.microsoft.com/dotnet/sdk:6.0 steps: - name: Check .NET version run: dotnet --version From a5aa351d5e99e9f4e5a8127b6b1ba2473ad80aa5 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Tue, 8 Aug 2023 00:36:47 -0700 Subject: [PATCH 23/30] Removing net6 install --- .github/workflows/internal-test-build.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/internal-test-build.yml b/.github/workflows/internal-test-build.yml index 6a590143..1cd8c50e 100644 --- a/.github/workflows/internal-test-build.yml +++ b/.github/workflows/internal-test-build.yml @@ -56,10 +56,6 @@ jobs: -p:DebugType=embedded \ -p:IncludeNativeLibrariesForSelfExtract=true \ -p:Version=0.0.${{ github.run_number }} - - name: Setup .NET 6 - uses: actions/setup-dotnet@v2 - with: - dotnet-version: 6.0.x - name: Execute Action build-with-plugins for Windows uses: ./.github/actions/build-with-plugins id: build-with-plugins-win From 906d6371090fc6fa2108d0ef4787404a2c8220cb Mon Sep 17 00:00:00 2001 From: John Bowen Date: Tue, 8 Aug 2023 23:49:42 -0700 Subject: [PATCH 24/30] Adding windows gui and cmdline only packages --- .github/workflows/internal-test-build.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/internal-test-build.yml b/.github/workflows/internal-test-build.yml index 1cd8c50e..f8bec35b 100644 --- a/.github/workflows/internal-test-build.yml +++ b/.github/workflows/internal-test-build.yml @@ -43,6 +43,14 @@ jobs: uses: actions/setup-dotnet@v2 with: dotnet-version: 7.0.x + - name: Execute Action build-with-plugins for Windows + uses: ./.github/actions/build-with-plugins + id: build-with-plugins-win + with: + platform: windows + platform-short: win + runtime: win-x64 + build-version: 0.0.${{ github.run_number }} - name: Build Windows desktop package shell: bash run: | @@ -56,11 +64,8 @@ jobs: -p:DebugType=embedded \ -p:IncludeNativeLibrariesForSelfExtract=true \ -p:Version=0.0.${{ github.run_number }} - - name: Execute Action build-with-plugins for Windows - uses: ./.github/actions/build-with-plugins - id: build-with-plugins-win + - name: Upload gui package + uses: actions/upload-artifact@v3 with: - platform: windows - platform-short: win - runtime: win-x64 - build-version: 0.0.${{ github.run_number }} + name: win-gui-package + path: win/ From 5755a0d3c36871154efb76da2fb43b9c51a798d9 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Wed, 9 Aug 2023 22:01:29 -0700 Subject: [PATCH 25/30] Testing compression on publish --- .github/workflows/internal-test-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/internal-test-build.yml b/.github/workflows/internal-test-build.yml index f8bec35b..d546295b 100644 --- a/.github/workflows/internal-test-build.yml +++ b/.github/workflows/internal-test-build.yml @@ -63,6 +63,7 @@ jobs: -p:PublishSingleFile=true \ -p:DebugType=embedded \ -p:IncludeNativeLibrariesForSelfExtract=true \ + -p:EnableCompressionInSingleFile=true \ -p:Version=0.0.${{ github.run_number }} - name: Upload gui package uses: actions/upload-artifact@v3 From 020def5f0f9bd207a79c08a160428e40a7d00301 Mon Sep 17 00:00:00 2001 From: John Bowen Date: Sat, 16 Sep 2023 08:40:18 -0700 Subject: [PATCH 26/30] Adding app icon --- .../Cosmos.DataTransfer.App.Windows.csproj | 5 +++++ .../DataTransferIcon.ico | Bin 0 -> 543366 bytes .../Properties/Settings.Designer.cs | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 App/Cosmos.DataTransfer.App.Windows/DataTransferIcon.ico diff --git a/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj b/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj index 1f315792..b40c2276 100644 --- a/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj +++ b/App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj @@ -8,8 +8,13 @@ true true dmt-gui-win + DataTransferIcon.ico + + + + diff --git a/App/Cosmos.DataTransfer.App.Windows/DataTransferIcon.ico b/App/Cosmos.DataTransfer.App.Windows/DataTransferIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..986f8e15558dd9961de0483976675af37a925018 GIT binary patch literal 543366 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˕T! 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

KM6 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 Fng9>&rfvWL literal 0 HcmV?d00001 diff --git a/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.Designer.cs b/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.Designer.cs index a86a2f5f..d25d0958 100644 --- a/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.Designer.cs +++ b/App/Cosmos.DataTransfer.App.Windows/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace Cosmos.DataTransfer.App.Windows.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.6.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); From 50c799ec8838dbadb8a821c5e7207b8355de73bb Mon Sep 17 00:00:00 2001 From: John Bowen Date: Sat, 16 Sep 2023 09:05:34 -0700 Subject: [PATCH 27/30] Updating builds for current packagable apps --- .github/workflows/dotnet-build-test.yml | 86 ++++++++++++------------- .github/workflows/release.yml | 57 +++++++++++++--- 2 files changed, 91 insertions(+), 52 deletions(-) diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index ec3f799f..ff84cc29 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -29,46 +29,46 @@ jobs: with: name: debug-build path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/Core/Cosmos.DataTransfer.Core/bin/Debug/net6.0 #path/to/artifact/ # or path/to/artifact - build-gui-win: - name: Build GUI projects for Windows - runs-on: windows-2022 - steps: - - uses: actions/checkout@v3 - - name: Setup .NET - uses: actions/setup-dotnet@v2 - with: - dotnet-version: 7.0.x - - name: Install MAUI Workload - run: dotnet workload install maui-windows --ignore-failed-sources - - name: Restore Dependencies - run: dotnet restore ./App/CosmosDbApp.sln - - name: Build App - run: dotnet build --no-restore ./App/CosmosDbApp.sln - - name: Debug Build Artifact - uses: actions/upload-artifact@v3 - with: - name: app-win-build - path: D:\a\data-migration-desktop-tool\data-migration-desktop-tool\App\Cosmos.DataTransfer.App\bin\Debug\net7.0-windows10.0.19041.0\win10-x64 #path/to/artifact/ # or path/to/artifact - build-gui-mac: - name: Build GUI projects for Mac - runs-on: macos-13 - steps: - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '14.3' - - uses: actions/checkout@v3 - - name: Setup .NET - uses: actions/setup-dotnet@v2 - with: - dotnet-version: 7.0.x - - name: Install MAUI Workload - run: dotnet workload install maui-maccatalyst --ignore-failed-sources - - name: Restore Dependencies - run: dotnet restore ./App/CosmosDbApp.sln - - name: Build App - run: dotnet build --no-restore ./App/CosmosDbApp.sln - - name: Debug Build Artifact - uses: actions/upload-artifact@v3 - with: - name: app-mac-build - path: /Users/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/App/Cosmos.DataTransfer.App/bin/Debug/net7.0-maccatalyst/maccatalyst-x64 #path/to/artifact/ # or path/to/artifact + # build-gui-win: + # name: Build GUI projects for Windows + # runs-on: windows-2022 + # steps: + # - uses: actions/checkout@v3 + # - name: Setup .NET + # uses: actions/setup-dotnet@v2 + # with: + # dotnet-version: 7.0.x + # - name: Install MAUI Workload + # run: dotnet workload install maui-windows --ignore-failed-sources + # - name: Restore Dependencies + # run: dotnet restore ./App/CosmosDbApp.sln + # - name: Build App + # run: dotnet build --no-restore ./App/CosmosDbApp.sln + # - name: Debug Build Artifact + # uses: actions/upload-artifact@v3 + # with: + # name: app-win-build + # path: D:\a\data-migration-desktop-tool\data-migration-desktop-tool\App\Cosmos.DataTransfer.App\bin\Debug\net7.0-windows10.0.19041.0\win10-x64 #path/to/artifact/ # or path/to/artifact + # build-gui-mac: + # name: Build GUI projects for Mac + # runs-on: macos-13 + # steps: + # - uses: maxim-lobanov/setup-xcode@v1 + # with: + # xcode-version: '14.3' + # - uses: actions/checkout@v3 + # - name: Setup .NET + # uses: actions/setup-dotnet@v2 + # with: + # dotnet-version: 7.0.x + # - name: Install MAUI Workload + # run: dotnet workload install maui-maccatalyst --ignore-failed-sources + # - name: Restore Dependencies + # run: dotnet restore ./App/CosmosDbApp.sln + # - name: Build App + # run: dotnet build --no-restore ./App/CosmosDbApp.sln + # - name: Debug Build Artifact + # uses: actions/upload-artifact@v3 + # with: + # name: app-mac-build + # path: /Users/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/App/Cosmos.DataTransfer.App/bin/Debug/net7.0-maccatalyst/maccatalyst-x64 #path/to/artifact/ # or path/to/artifact diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0029f92a..71c10642 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,8 +7,13 @@ jobs: github-release: name: Create GitHub release runs-on: ubuntu-latest - needs: build-package + needs: build-package-win steps: + - name: Download Windows GUI x64 package + uses: actions/download-artifact@v3 + with: + name: windows-gui-package + path: windows-gui-package - name: Download Windows x64 package uses: actions/download-artifact@v3 with: @@ -26,6 +31,7 @@ jobs: path: linux-package - name: Package output files run: | + zip -r dmt-gui-${{ github.event.release.tag_name }}-win-x64.zip windows-gui-package/* zip -r dmt-${{ github.event.release.tag_name }}-win-x64.zip windows-package/* zip -r dmt-${{ github.event.release.tag_name }}-mac-x64.zip mac-package/* zip -r dmt-${{ github.event.release.tag_name }}-linux-x64.zip linux-package/* @@ -33,6 +39,7 @@ jobs: uses: softprops/action-gh-release@v1 with: files: | + dmt-gui-${{ github.event.release.tag_name }}-win-x64.zip dmt-${{ github.event.release.tag_name }}-win-x64.zip dmt-${{ github.event.release.tag_name }}-mac-x64.zip dmt-${{ github.event.release.tag_name }}-linux-x64.zip @@ -45,14 +52,6 @@ jobs: run: dotnet --version - name: Checkout source code uses: actions/checkout@v3 - - name: Execute Action build-with-plugins for Windows - uses: ./.github/actions/build-with-plugins - id: build-with-plugins-win - with: - platform: windows - platform-short: win - runtime: win-x64 - build-version: ${{ github.event.release.tag_name }} - name: Execute Action build-with-plugins for MacOS uses: ./.github/actions/build-with-plugins id: build-with-plugins-mac @@ -69,3 +68,43 @@ jobs: platform-short: linux runtime: linux-x64 build-version: ${{ github.event.release.tag_name }} + build-package-win: + name: Build self-contained Windows executables + runs-on: windows-2022 + needs: build-package + steps: + - name: Check .NET version + run: dotnet --version + - name: Checkout source code + uses: actions/checkout@v3 + - name: Setup .NET 7 + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 7.0.x + - name: Execute Action build-with-plugins for Windows + uses: ./.github/actions/build-with-plugins + id: build-with-plugins-win + with: + platform: windows + platform-short: win + runtime: win-x64 + build-version: ${{ github.event.release.tag_name }} + - name: Build Windows desktop package + shell: bash + run: | + dotnet publish \ + App/Cosmos.DataTransfer.App.Windows/Cosmos.DataTransfer.App.Windows.csproj \ + --configuration Release \ + --output win \ + --self-contained true \ + --runtime win-x64 \ + -p:PublishSingleFile=true \ + -p:DebugType=embedded \ + -p:IncludeNativeLibrariesForSelfExtract=true \ + -p:EnableCompressionInSingleFile=true \ + -p:Version=${{ github.event.release.tag_name }} + - name: Upload gui package + uses: actions/upload-artifact@v3 + with: + name: windows-gui-package + path: win/ From c5b4e68fef22064caef7f2feb575577bd46c6b7f Mon Sep 17 00:00:00 2001 From: John Bowen Date: Sat, 16 Sep 2023 09:15:41 -0700 Subject: [PATCH 28/30] Aligning package name --- .github/workflows/internal-test-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/internal-test-build.yml b/.github/workflows/internal-test-build.yml index d546295b..821d93b2 100644 --- a/.github/workflows/internal-test-build.yml +++ b/.github/workflows/internal-test-build.yml @@ -68,5 +68,5 @@ jobs: - name: Upload gui package uses: actions/upload-artifact@v3 with: - name: win-gui-package + name: windows-gui-package path: win/ From 2d00135e7bb139cb87dfd4276f9d2b26583576ca Mon Sep 17 00:00:00 2001 From: John Bowen Date: Sun, 17 Sep 2023 16:53:38 -0700 Subject: [PATCH 29/30] Adding GUI to docs --- README.md | 19 ++++++++++++++++--- media/gui.png | Bin 0 -> 119698 bytes 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 media/gui.png diff --git a/README.md b/README.md index 20419bc1..52f9791a 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,19 @@ To access the archived version of the tool, navigate to the [**Archive branch**] ## Overview -The Azure Cosmos DB Desktop Data Migration Tool is an open-source project containing a command-line application that provides import and export functionality for Azure Cosmos DB. +The Azure Cosmos DB Desktop Data Migration Tool is an open-source project containing a command-line application that provides import and export functionality for Azure Cosmos DB. For Windows, a GUI application is also provided as a wrapper around the command-line functionality. ## Quick Installation -To use the tool, download the latest zip file for your platform (win-x64, mac-x64, or linux-x64) from [Releases](https://github.com/AzureCosmosDB/data-migration-desktop-tool/releases) and extract all files to your desired install location. To begin a data transfer operation, first populate the `migrationsettings.json` file with appropriate settings for your data source and sink (see [detailed instructions](#using-the-command-line) below or [review examples](ExampleConfigs.md)), and then run the application from a command line: `dmt.exe` on Windows or `dmt` on other platforms. +To use the tool, download the latest zip file for your platform (win-x64, mac-x64, or linux-x64) from [Releases](https://github.com/AzureCosmosDB/data-migration-desktop-tool/releases) and extract all files to your desired install location. For Windows you can choose either the command line only (`dmt-2.x-win`) or a complete package that also includes the GUI (`dmt-gui-2.x-win`). + +### Command Line +To begin a data transfer operation, first populate the `migrationsettings.json` file with appropriate settings for your data source and sink (see [detailed instructions](#using-the-command-line) below or [review examples](ExampleConfigs.md)), and then run the application from a command line: `dmt.exe` on Windows or `dmt` on other platforms. + +### GUI (Windows only) +To begin a data transfer operation, launch the `dmt-gui-win.exe` application. Choose both a Source and Sink from the available options and then fill in required and optional settings. To run an operation with the current settings click the **Run Job** button at the top of the screen. Application output and error messages can be seen at the bottom of the screen. + +![The WPF GUI Application for Windows.](media/gui.png "GUI Application") ## Extension documentation @@ -60,6 +68,8 @@ The Azure Cosmos DB Desktop Data Migration Tool is a lightweight executable that ![An extensions folder holds multiple extensions implementations.The application loads extensions from the extensions folder and executes functionality based on an interface implementation.](media/application_architecture.png "Application architecture") +The GUI application executes command-line application commands to discover available extensions and details about the settings that they use. This allows it to provide identical operational functionality to running the command line app directly and takes advantage of the same set of extensions. + ## Project Structure The Cosmos DB Data Migration Tool core project is a C# command-line executable. The core application serves as the composition container for the required Source and Sink extensions. Therefore, the application user needs to put only the desired Extension class library assembly into the Extensions folder before running the application. In addition, the core project has a unit test project to exercise the application's behavior, whereas extension projects contain concrete integration tests that rely on external systems. @@ -84,6 +94,8 @@ git clone https://github.com/AzureCosmosDB/data-migration-desktop-tool.git 2. Build the project using the keyboard shortcut Ctrl+Shift+B (Cmd+Shift+B on a Mac). This will build all current extension projects as well as the command-line **Core** application. The extension projects build assemblies get written to the **Extensions** folder of the **Core** application build. This way all extension options are available when the application is run. +3. The GUI application can be found in a separate `App/CosmosDbApp.sln` solution. This contains both the WPF application for Windows (`Cosmos.DataTransfer.App.Windows`) and a experimental MAUI Blazor implementation of the same UI (`Cosmos.DataTransfer.App`). + ## Tutorial: JSON to Cosmos DB migration This tutorial outlines how to use the Azure Cosmos DB Desktop Data Migration Tool to move JSON data to Azure Cosmos DB. This tutorial uses the Azure Cosmos DB Emulator. @@ -231,7 +243,8 @@ This tutorial outlines how to use the Azure Cosmos DB Desktop Data Migration Too public override string DisplayName => "JSON-AzureBlob"; } ``` - 7. Settings needed by the extension can be retrieved from any standard .NET configuration source in the main application by using the `IConfiguration` instance passed into the `ReadAsync` and `WriteAsync` methods. Settings under `SourceSettings`/`SinkSettings` will be included as well as any settings included in JSON files specified by the `SourceSettingsPath`/`SinkSettingsPath`. + - Settings needed by the extension can be retrieved from any standard .NET configuration source in the main application by using the `IConfiguration` instance passed into the `ReadAsync` and `WriteAsync` methods. Settings under `SourceSettings`/`SinkSettings` will be included as well as any settings included in JSON files specified by the `SourceSettingsPath`/`SinkSettingsPath`. + - To fully support a friendly settings list in the GUI application, your extension can implement the `IDataSinkExtensionWithSettings` or `IDataSourceExtensionWithSettings` interfaces which add an additional `GetSettings` method which should return any settings objects that your extension expects or requires. Properties of these objects will then be listed in the GUI. 8. Implement your extension to read and/or write using the generic `IDataItem` interface which exposes object properties as a list key-value pairs. Depending on the specific structure of the data storage type being implemented, you can choose to support nested objects and arrays or only flat top-level properties. > Binary File Storage extensions are only concerned with generic storage so only work with `Stream` instances representing whole files rather than individual `IDataItem`. diff --git a/media/gui.png b/media/gui.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8c069c4a6c60486fe3426f0b929c0a0f013fdb GIT binary patch literal 119698 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%0DKLmXM`Gc3EqId_%>{}@ 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


}5I*<_PS;`ruOLA8k^wO!V9mdYg0}t-u01y;Tb$ z1N|}&XjhCo>A0k>%E=SkO^oBzxR$-?KR!!dL|9kdbW*XyUwP--3&%EYDzIon%Cw4)>9Scy3@XPn160X>HPT9ghfO?HAd7O?8SSnt&WBOPGTQCF6TLV z{PGL*jqK_2^LU2Ud2>|}HfrI79b%U7^8R!T703mLutRT1)|Lk=?Sy>ukPEe1F!!D8 zJ&)--L-ZX-uPdl+!^p2F1p=vH;OYr?mzz%oHiu-5kOF=JE)q9IfUUos+I$l_S0I;h Im+XK44^#hCAOHXW literal 0 HcmV?d00001 From afb8c326cc461c892d2c702d5dc3917e3411b4b7 Mon Sep 17 00:00:00 2001 From: Chris Pietschmann Date: Thu, 6 Feb 2025 09:53:50 -0500 Subject: [PATCH 30/30] update to actions/upload-artifact@v4 --- .github/workflows/deploy_tool_nupkg.yml | 2 +- .github/workflows/dotnet-build-test.yml | 6 +++--- .github/workflows/internal-test-build.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy_tool_nupkg.yml b/.github/workflows/deploy_tool_nupkg.yml index c53f532d..23a75feb 100644 --- a/.github/workflows/deploy_tool_nupkg.yml +++ b/.github/workflows/deploy_tool_nupkg.yml @@ -39,7 +39,7 @@ jobs: Rename-Item -Path "$($fileName).zip" -NewName $fileName shell: pwsh - name: Upload package - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: nuget-tool-package path: Core/Cosmos.DataTransfer.Core/bin/Release/*.nupkg diff --git a/.github/workflows/dotnet-build-test.yml b/.github/workflows/dotnet-build-test.yml index ff84cc29..958bd69e 100644 --- a/.github/workflows/dotnet-build-test.yml +++ b/.github/workflows/dotnet-build-test.yml @@ -25,7 +25,7 @@ jobs: run: dotnet test --no-build --verbosity normal ./CosmosDbDataMigrationTool.sln - name: Debug Build Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: debug-build path: /home/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/Core/Cosmos.DataTransfer.Core/bin/Debug/net6.0 #path/to/artifact/ # or path/to/artifact @@ -45,7 +45,7 @@ jobs: # - name: Build App # run: dotnet build --no-restore ./App/CosmosDbApp.sln # - name: Debug Build Artifact - # uses: actions/upload-artifact@v3 + # uses: actions/upload-artifact@v4 # with: # name: app-win-build # path: D:\a\data-migration-desktop-tool\data-migration-desktop-tool\App\Cosmos.DataTransfer.App\bin\Debug\net7.0-windows10.0.19041.0\win10-x64 #path/to/artifact/ # or path/to/artifact @@ -68,7 +68,7 @@ jobs: # - name: Build App # run: dotnet build --no-restore ./App/CosmosDbApp.sln # - name: Debug Build Artifact - # uses: actions/upload-artifact@v3 + # uses: actions/upload-artifact@v4 # with: # name: app-mac-build # path: /Users/runner/work/data-migration-desktop-tool/data-migration-desktop-tool/App/Cosmos.DataTransfer.App/bin/Debug/net7.0-maccatalyst/maccatalyst-x64 #path/to/artifact/ # or path/to/artifact diff --git a/.github/workflows/internal-test-build.yml b/.github/workflows/internal-test-build.yml index 821d93b2..711f3861 100644 --- a/.github/workflows/internal-test-build.yml +++ b/.github/workflows/internal-test-build.yml @@ -66,7 +66,7 @@ jobs: -p:EnableCompressionInSingleFile=true \ -p:Version=0.0.${{ github.run_number }} - name: Upload gui package - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: windows-gui-package path: win/