From d3069246ebaec771a1b5c530e0bc0735ca624c88 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 16 Aug 2021 15:28:40 +0300 Subject: [PATCH 001/159] Admin: List events in event-management page --- .../Events/EventDetailDto.cs | 12 ++ .../Events/EventInListDto.cs | 16 ++ .../Events/EventListFilterDto.cs | 17 +++ .../Events/IEventAppService.cs | 16 ++ .../Events/UpdateEventDto.cs | 17 +++ .../EventHubPermissionDefinitionProvider.cs | 3 + .../Permissions/EventHubPermissions.cs | 6 + .../EventHubApplicationAutoMapperProfile.cs | 4 + .../Events/EventAppService.cs | 83 +++++++++++ .../Controllers/Events/EventController.cs | 45 ++++++ .../EventHubBlazorAutoMapperProfile.cs | 3 + .../Menus/EventHubMenuContributor.cs | 17 +++ src/EventHub.Admin.Web/Menus/EventHubMenus.cs | 6 + .../Pages/EventManagement.razor | 138 ++++++++++++++++++ .../Pages/EventManagement.razor.cs | 110 ++++++++++++++ .../Events/EventConsts.cs | 2 + .../Localization/EventHub/en.json | 13 +- 17 files changed, 507 insertions(+), 1 deletion(-) create mode 100644 src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Events/EventInListDto.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs create mode 100644 src/EventHub.Admin.Application/Events/EventAppService.cs create mode 100644 src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs create mode 100644 src/EventHub.Admin.Web/Pages/EventManagement.razor create mode 100644 src/EventHub.Admin.Web/Pages/EventManagement.razor.cs diff --git a/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs b/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs new file mode 100644 index 0000000..a6d5f32 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs @@ -0,0 +1,12 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Events +{ + public class EventDetailDto : EntityDto + { + public string Title { get; set; } + + public DateTime StartTime { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Events/EventInListDto.cs b/src/EventHub.Admin.Application.Contracts/Events/EventInListDto.cs new file mode 100644 index 0000000..c4d148d --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/EventInListDto.cs @@ -0,0 +1,16 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Events +{ + public class EventInListDto : EntityDto + { + public string Title { get; set; } + + public string OrganizationDisplayName { get; set; } + + public int AttendeeCount { get; set; } + + public DateTime StartTime { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs b/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs new file mode 100644 index 0000000..69758a5 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs @@ -0,0 +1,17 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Events +{ + public class EventListFilterDto : PagedAndSortedResultRequestDto + { + public DateTime? StartTime { get; set; } + + public string Title { get; set; } + + public string OrganizationDisplayName { get; set; } + + public int? MinAttendeeCount { get; set; } + public int? MaxAttendeeCount { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs b/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs new file mode 100644 index 0000000..70bd7d5 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs @@ -0,0 +1,16 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace EventHub.Admin.Events +{ + public interface IEventAppService : IApplicationService + { + Task> GetListAsync(EventListFilterDto input); + + Task GetAsync(Guid id); + + Task UpdateAsync(Guid id, UpdateEventDto input); + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs b/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs new file mode 100644 index 0000000..5b8f661 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs @@ -0,0 +1,17 @@ +using System; +using System.ComponentModel.DataAnnotations; +using EventHub.Events; + +namespace EventHub.Admin.Events +{ + public class UpdateEventDto + { + [Required] + [StringLength(EventConsts.MaxTitleLength, MinimumLength = EventConsts.MinTitleLength)] + public string Title { get; set; } + + [Required] + [DataType(DataType.DateTime)] + public DateTime StartTime { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs index b9790b9..d95d637 100644 --- a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs +++ b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs @@ -15,6 +15,9 @@ namespace EventHub.Admin.Permissions organizationsPermission.AddChild(EventHubPermissions.Organizations.Update, L("Permission:Edit")); organizationsPermission.AddChild(EventHubPermissions.Organizations.Delete, L("Permission:Delete")); organizationsPermission.AddChild(EventHubPermissions.Organizations.Memberships.Default, L("Permission:MembershipManagement")); + + var eventPermissions = eventHubGroup.AddPermission(EventHubPermissions.Events.Default, L("Permission:EventManagement")); + eventPermissions.AddChild(EventHubPermissions.Events.Update, L("Permission:Edit")); } private static LocalizableString L(string name) diff --git a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs index a1003bc..0d30b60 100644 --- a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs +++ b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs @@ -16,5 +16,11 @@ public const string Default = Organizations.Default + ".Memberships"; } } + + public static class Events + { + public const string Default = GroupName + ".Events"; + public const string Update = Default + ".Update"; + } } } \ No newline at end of file diff --git a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs index b11a97c..9eddbdb 100644 --- a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs +++ b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs @@ -1,6 +1,8 @@ using AutoMapper; +using EventHub.Admin.Events; using EventHub.Admin.Organizations; using EventHub.Admin.Organizations.Memberships; +using EventHub.Events; using EventHub.Organizations; using EventHub.Organizations.Memberships; using Volo.Abp.AutoMapper; @@ -19,6 +21,8 @@ namespace EventHub.Admin .Ignore(x => x.ProfilePictureContent); CreateMap(); + + CreateMap(); } } } diff --git a/src/EventHub.Admin.Application/Events/EventAppService.cs b/src/EventHub.Admin.Application/Events/EventAppService.cs new file mode 100644 index 0000000..331f4bc --- /dev/null +++ b/src/EventHub.Admin.Application/Events/EventAppService.cs @@ -0,0 +1,83 @@ +using System; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Threading.Tasks; +using EventHub.Events; +using EventHub.Events.Registrations; +using EventHub.Organizations; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Domain.Repositories; + +namespace EventHub.Admin.Events +{ + //[Authorize(EventHubPermissions.Events.Default)] + public class EventAppService : EventHubAdminAppService, IEventAppService + { + private readonly IRepository _eventRepository; + private readonly IRepository _eventRegistrationRepository; + private readonly IRepository _organizationRepository; + + public EventAppService( + IRepository eventRepository, + IRepository eventRegistrationRepository, + IRepository organizationRepository + ) + { + _eventRepository = eventRepository; + _eventRegistrationRepository = eventRegistrationRepository; + _organizationRepository = organizationRepository; + } + + public async Task GetAsync(Guid id) + { + var @event = await _eventRepository.GetAsync(id); + + return ObjectMapper.Map(@event); + } + + public async Task> GetListAsync(EventListFilterDto input) + { + var eventQueryable = await _eventRepository.GetQueryableAsync(); + var eventRegistrationQueryable = await _eventRegistrationRepository.GetQueryableAsync(); + var organizationQueryable = await _organizationRepository.GetQueryableAsync(); + + var query = (from @event in eventQueryable + join organization in organizationQueryable on @event.OrganizationId equals organization.Id + select new EventInListDto + { + Id = @event.Id, + Title = @event.Title, + StartTime = @event.StartTime, + OrganizationDisplayName = organization.DisplayName, + AttendeeCount = (from eventRegistration in eventRegistrationQueryable + where eventRegistration.EventId == @event.Id + group @event by @event.Id into g + select g.Key).Count() + }) + .WhereIf(!string.IsNullOrWhiteSpace(input.Title), x => x.Title.ToLower().Contains(input.Title.ToLower())) + .WhereIf(!string.IsNullOrWhiteSpace(input.OrganizationDisplayName), x => x.OrganizationDisplayName.ToLower().Contains(input.OrganizationDisplayName.ToLower())) + .WhereIf(input.StartTime.HasValue, x => x.StartTime > input.StartTime) + .WhereIf(input.MinAttendeeCount.HasValue, x => x.AttendeeCount >= input.MinAttendeeCount) + .WhereIf(input.MaxAttendeeCount.HasValue, x => x.AttendeeCount <= input.MaxAttendeeCount); + + var totalCount = await AsyncExecuter.CountAsync(query); + query = query.OrderBy(string.IsNullOrWhiteSpace(input.Sorting) ? EventConsts.DefaultSorting : input.Sorting); + query = query.PageBy(input); + + var events = await AsyncExecuter.ToListAsync(query); + + return new PagedResultDto(totalCount, events); + } + + //[Authorize(EventHubPermissions.Events.Update)] + public async Task UpdateAsync(Guid id, UpdateEventDto input) + { + var @event = await _eventRepository.GetAsync(id); + + @event.SetTitle(input.Title); + @event.SetTime(input.StartTime, @event.EndTime); + + await _eventRepository.UpdateAsync(@event); + } + } +} diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs new file mode 100644 index 0000000..bc8e4ab --- /dev/null +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using EventHub.Admin.Events; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace EventHub.Admin.Controllers.Events +{ + [RemoteService(Name = EventHubAdminRemoteServiceConsts.RemoteServiceName)] + [Controller] + [Area("eventhub-admin")] + [ControllerName("Event")] + [Route("/api/eventhub/admin/event")] + public class EventController : AbpController, IEventAppService + { + private readonly IEventAppService _eventAppService; + + public EventController(IEventAppService eventAppService) + { + _eventAppService = eventAppService; + } + + [HttpGet("{id}")] + public Task GetAsync(Guid id) + { + return _eventAppService.GetAsync(id); + } + + [HttpGet] + public Task> GetListAsync(EventListFilterDto input) + { + return _eventAppService.GetListAsync(input); + } + + [HttpPut] + public Task UpdateAsync(Guid id, UpdateEventDto input) + { + return _eventAppService.UpdateAsync(id, input); + } + } +} diff --git a/src/EventHub.Admin.Web/EventHubBlazorAutoMapperProfile.cs b/src/EventHub.Admin.Web/EventHubBlazorAutoMapperProfile.cs index 53cffe5..f55858c 100644 --- a/src/EventHub.Admin.Web/EventHubBlazorAutoMapperProfile.cs +++ b/src/EventHub.Admin.Web/EventHubBlazorAutoMapperProfile.cs @@ -1,4 +1,5 @@ using AutoMapper; +using EventHub.Admin.Events; using EventHub.Admin.Organizations; namespace EventHub.Admin.Web @@ -8,6 +9,8 @@ namespace EventHub.Admin.Web public EventHubBlazorAutoMapperProfile() { CreateMap(); + + CreateMap(); } } } \ No newline at end of file diff --git a/src/EventHub.Admin.Web/Menus/EventHubMenuContributor.cs b/src/EventHub.Admin.Web/Menus/EventHubMenuContributor.cs index 1aa0481..0bd262e 100644 --- a/src/EventHub.Admin.Web/Menus/EventHubMenuContributor.cs +++ b/src/EventHub.Admin.Web/Menus/EventHubMenuContributor.cs @@ -48,6 +48,7 @@ namespace EventHub.Admin.Web.Menus ); await AddOrganizationMenu(context, l); + await AddEventMenu(context, l); } private Task ConfigureUserMenuAsync(MenuConfigurationContext context) @@ -87,5 +88,21 @@ namespace EventHub.Admin.Web.Menus return Task.CompletedTask; } + + private Task AddEventMenu(MenuConfigurationContext context, IStringLocalizer l) + { + var eventMenu = new ApplicationMenuItem( + EventHubMenus.EventManagement.GroupName, + l["Menu:EventManagement"], + icon: "fas fa-calendar-minus" + ); + + context.Menu.Items.Insert(3, eventMenu); + + eventMenu.AddItem(new ApplicationMenuItem(EventHubMenus.EventManagement.Events, displayName: l["Menu:Events"], url: "/events")) + .RequirePermissions(EventHubPermissions.Events.Default); + + return Task.CompletedTask; + } } } \ No newline at end of file diff --git a/src/EventHub.Admin.Web/Menus/EventHubMenus.cs b/src/EventHub.Admin.Web/Menus/EventHubMenus.cs index 66562a1..1e6f30b 100644 --- a/src/EventHub.Admin.Web/Menus/EventHubMenus.cs +++ b/src/EventHub.Admin.Web/Menus/EventHubMenus.cs @@ -11,5 +11,11 @@ public const string Organizations = GroupName + ".Organizations"; public const string OrganizationMemberships = GroupName + ".OrganizationMemberships"; } + + public static class EventManagement + { + public const string GroupName = Prefix + ".EventManagement"; + public const string Events = GroupName + ".Events"; + } } } \ No newline at end of file diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor b/src/EventHub.Admin.Web/Pages/EventManagement.razor new file mode 100644 index 0000000..472aaf1 --- /dev/null +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor @@ -0,0 +1,138 @@ +@page "/events" +@using Microsoft.AspNetCore.Authorization +@using EventHub.Admin.Permissions +@using EventHub.Admin.Events +@inherits EventHubComponentBase +@attribute [Authorize(EventHubPermissions.Events.Default)] +@inject IEventAppService EventAppService + + + + @* ************************* PAGE HEADER ************************* *@ +

@L["Events"]

+
+ + + @* ************************* SEARCH ************************* *@ +
+
+ + + @L["Title"] + + + + + + @L["OrganizationDisplayName"] + + + + + + @L["StartTime"] + + + + + + @L["MinAttendeeCount"] + + + + + + @L["MaxAttendeeCount"] + + + +
+
+ + @* ************************* DATA GRID ************************* *@ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +@* ************************* EDIT MODAL ************************* *@ + + + +
+ + @L["UpdateEvent"] + + + + + + @L["EventInfo"] + @L["Timing"] + @L["CoverImage"] + + + + EventInfo + + + Timing + + + CoverImage + + + + + + + + +
+
+
\ No newline at end of file diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs new file mode 100644 index 0000000..0c919bb --- /dev/null +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs @@ -0,0 +1,110 @@ +using EventHub.Admin.Events; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Blazorise; +using Blazorise.DataGrid; +using Volo.Abp.Application.Dtos; +using System; +using System.ComponentModel; +using Microsoft.AspNetCore.Components.Web; + +namespace EventHub.Admin.Web.Pages +{ + public partial class EventManagement + { + private IReadOnlyList EventList { get; set; } + private EventListFilterDto Filter { get; set; } + private int CurrentPage { get; set; } + private string CurrentSorting { get; set; } + private int TotalCount { get; set; } + private int PageSize { get; } + private Guid EditingEventId { get; set; } + private EventDetailDto Event { get; set; } + private UpdateEventDto EditingEvent { get; set; } + private Modal EditEventModal { get; set; } + private string SelectedTabInEditModal { get; set; } + + public EventManagement() + { + Filter = new EventListFilterDto(); + PageSize = LimitedResultRequestDto.DefaultMaxResultCount; + SelectedTabInEditModal = EventEditTabs.EventInfo.ToString(); + } + + protected override async Task OnInitializedAsync() + { + await GetEventsAsync(); + } + + private async Task GetEventsAsync() + { + Filter.MaxResultCount = PageSize; + Filter.SkipCount = CurrentPage * PageSize; + Filter.Sorting = CurrentSorting; + + var result = await EventAppService.GetListAsync(Filter); + EventList = result.Items; + TotalCount = (int)result.TotalCount; + } + + private async Task OnDataGridReadAsync(DataGridReadDataEventArgs e) + { + CurrentSorting = e.Columns + .Where(c => c.Direction != SortDirection.None) + .Select(c => c.Field + (c.Direction == SortDirection.Descending ? " DESC" : "")) + .JoinAsString(","); + CurrentPage = e.Page - 1; + + await GetEventsAsync(); + await InvokeAsync(StateHasChanged); + } + + private async Task OpenEditEventModal(EventInListDto input) + { + EditingEventId = input.Id; + Event = await EventAppService.GetAsync(EditingEventId); + + EditingEvent = ObjectMapper.Map(Event); + EditEventModal.Show(); + } + + private void OnEditModalClosing(CancelEventArgs e) + { + SelectedTabInEditModal = EventEditTabs.EventInfo.ToString(); + } + + private void OnSelectedTabChangedInEditModal(string name) + { + SelectedTabInEditModal = name; + } + + private async Task UpdateEventAsync() + { + await EventAppService.UpdateAsync(EditingEventId, EditingEvent); + await GetEventsAsync(); + EditEventModal.Hide(); + } + + private async Task OnKeyPress(KeyboardEventArgs e) + { + if (e.Code is "Enter" or "NumpadEnter") + { + await GetEventsAsync(); + } + } + + private async Task OnSelectedDateChanged(DateTime? changedDate) + { + Filter.StartTime = changedDate; + await GetEventsAsync(); + } + } + + public enum EventEditTabs : byte + { + EventInfo, + Timing, + CoverImage + } +} diff --git a/src/EventHub.Domain.Shared/Events/EventConsts.cs b/src/EventHub.Domain.Shared/Events/EventConsts.cs index 78aea56..506d9cf 100644 --- a/src/EventHub.Domain.Shared/Events/EventConsts.cs +++ b/src/EventHub.Domain.Shared/Events/EventConsts.cs @@ -2,6 +2,8 @@ { public static class EventConsts { + public const string DefaultSorting = "Title desc"; + public const int UrlCodeLength = 8; public const int MaxTitleInUrlLength = 60; public const int MaxUrlLength = MaxTitleInUrlLength + 1 + UrlCodeLength; //Format: {Title}-{UrlCode} diff --git a/src/EventHub.Domain.Shared/Localization/EventHub/en.json b/src/EventHub.Domain.Shared/Localization/EventHub/en.json index 1bf060c..43adc30 100644 --- a/src/EventHub.Domain.Shared/Localization/EventHub/en.json +++ b/src/EventHub.Domain.Shared/Localization/EventHub/en.json @@ -115,6 +115,17 @@ "Loading": "Loading", "OrganizationInfo": "Organization Info", "ProfileImage": "Profile Image", - "OrganizationName": "Organization Name" + "OrganizationName": "Organization Name", + "Permission:EventManagement": "Event Management", + "Menu:EventManagement": "Event Management", + "Menu:Events": "Events", + "Title": "Title", + "OrganizationDisplayName": "Organization Display Name", + "StartTime": "Start Time", + "MinAttendeeCount": "Min Attendee Count", + "MaxAttendeeCount": "Max Attendee Count", + "UpdateEvent": "Update Event", + "EventInfo": "Event Info", + "Timing": "Timing" } } From 613e0861fcb024c28be678427d4e28ecee364d05 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 16 Aug 2021 19:23:17 +0300 Subject: [PATCH 002/159] Admin: Edit event details --- .../Events/CountryLookupDto.cs | 10 ++ .../Events/EventDetailDto.cs | 18 ++ .../Events/IEventAppService.cs | 5 + .../Events/UpdateEventDto.cs | 30 ++++ .../EventHubApplicationAutoMapperProfile.cs | 6 +- .../Events/EventAppService.cs | 55 +++++- .../Controllers/Events/EventController.cs | 12 ++ .../Pages/EventManagement.razor | 159 +++++++++++++++++- .../Pages/EventManagement.razor.cs | 82 ++++++++- .../Events/EventAppService.cs | 1 - .../Events/EventConsts.cs | 2 + .../Localization/EventHub/en.json | 10 +- 12 files changed, 377 insertions(+), 13 deletions(-) create mode 100644 src/EventHub.Admin.Application.Contracts/Events/CountryLookupDto.cs diff --git a/src/EventHub.Admin.Application.Contracts/Events/CountryLookupDto.cs b/src/EventHub.Admin.Application.Contracts/Events/CountryLookupDto.cs new file mode 100644 index 0000000..6056ea3 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/CountryLookupDto.cs @@ -0,0 +1,10 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Events +{ + public class CountryLookupDto : EntityDto + { + public string Name { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs b/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs index a6d5f32..a0bded1 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs @@ -7,6 +7,24 @@ namespace EventHub.Admin.Events { public string Title { get; set; } + public string Description { get; set; } + public DateTime StartTime { get; set; } + + public DateTime EndTime { get; set; } + + public byte[] CoverImageContent { get; set; } + + public bool IsOnline { get; set; } + + public string OnlineLink { get; set; } + + public Guid? CountryId { get; set; } + + public string City { get; set; } + + public string Language { get; set; } + + public int? Capacity { get; set; } } } diff --git a/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs b/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs index 70bd7d5..12c2a22 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -12,5 +13,9 @@ namespace EventHub.Admin.Events Task GetAsync(Guid id); Task UpdateAsync(Guid id, UpdateEventDto input); + + Task> GetCountriesLookupAsync(); + + Task GetCoverImageAsync(Guid id); } } diff --git a/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs b/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs index 5b8f661..1b041bd 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; using EventHub.Events; +using JetBrains.Annotations; namespace EventHub.Admin.Events { @@ -10,8 +11,37 @@ namespace EventHub.Admin.Events [StringLength(EventConsts.MaxTitleLength, MinimumLength = EventConsts.MinTitleLength)] public string Title { get; set; } + [Required] + [StringLength(EventConsts.MaxDescriptionLength, MinimumLength = EventConsts.MinDescriptionLength)] + public string Description { get; set; } + [Required] [DataType(DataType.DateTime)] public DateTime StartTime { get; set; } + + [Required] + [DataType(DataType.DateTime)] + public DateTime EndTime { get; set; } + + [CanBeNull] + public byte[] CoverImageContent { get; set; } + + public bool IsOnline { get; set; } + + [CanBeNull] + [StringLength(EventConsts.MaxOnlineLinkLength, MinimumLength = EventConsts.MinOnlineLinkLength)] + public string OnlineLink { get; set; } + public Guid? CountryId { get; set; } + + [CanBeNull] + [StringLength(EventConsts.MaxCityLength, MinimumLength = EventConsts.MinCityLength)] + public string City { get; set; } + + [CanBeNull] + [StringLength(EventConsts.MaxLanguageLength, MinimumLength = EventConsts.MinLanguageLength)] + public string Language { get; set; } + + [Range(1, int.MaxValue)] + public int? Capacity { get; set; } } } diff --git a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs index 9eddbdb..476c8d8 100644 --- a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs +++ b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs @@ -2,6 +2,7 @@ using AutoMapper; using EventHub.Admin.Events; using EventHub.Admin.Organizations; using EventHub.Admin.Organizations.Memberships; +using EventHub.Countries; using EventHub.Events; using EventHub.Organizations; using EventHub.Organizations.Memberships; @@ -22,7 +23,10 @@ namespace EventHub.Admin CreateMap(); - CreateMap(); + CreateMap() + .Ignore(x => x.CoverImageContent); + + CreateMap(); } } } diff --git a/src/EventHub.Admin.Application/Events/EventAppService.cs b/src/EventHub.Admin.Application/Events/EventAppService.cs index 331f4bc..e66ad0a 100644 --- a/src/EventHub.Admin.Application/Events/EventAppService.cs +++ b/src/EventHub.Admin.Application/Events/EventAppService.cs @@ -1,11 +1,14 @@ using System; +using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading.Tasks; +using EventHub.Countries; using EventHub.Events; using EventHub.Events.Registrations; using EventHub.Organizations; using Volo.Abp.Application.Dtos; +using Volo.Abp.BlobStoring; using Volo.Abp.Domain.Repositories; namespace EventHub.Admin.Events @@ -16,23 +19,35 @@ namespace EventHub.Admin.Events private readonly IRepository _eventRepository; private readonly IRepository _eventRegistrationRepository; private readonly IRepository _organizationRepository; + private readonly IBlobContainer _eventBlobContainer; + private readonly EventManager _eventManager; + private readonly IRepository _countryRepository; + public EventAppService( IRepository eventRepository, IRepository eventRegistrationRepository, - IRepository organizationRepository - ) + IRepository organizationRepository, + IBlobContainer eventBlobContainer, + EventManager eventManager, + IRepository countryRepository) { _eventRepository = eventRepository; _eventRegistrationRepository = eventRegistrationRepository; _organizationRepository = organizationRepository; + _eventBlobContainer = eventBlobContainer; + _eventManager = eventManager; + _countryRepository = countryRepository; } public async Task GetAsync(Guid id) { var @event = await _eventRepository.GetAsync(id); - return ObjectMapper.Map(@event); + var eventDetailDto = ObjectMapper.Map(@event); + eventDetailDto.CoverImageContent = await GetCoverImageAsync(id); + + return eventDetailDto; } public async Task> GetListAsync(EventListFilterDto input) @@ -74,10 +89,44 @@ namespace EventHub.Admin.Events { var @event = await _eventRepository.GetAsync(id); + await _eventManager.SetLocationAsync(@event, input.IsOnline, input.OnlineLink, input.CountryId, input.City); @event.SetTitle(input.Title); + @event.SetDescription(input.Description); + @event.Language = input.Language; @event.SetTime(input.StartTime, @event.EndTime); + await _eventManager.SetCapacityAsync(@event, input.Capacity); + + var blobName = id.ToString(); + if (input.CoverImageContent.IsNullOrEmpty()) + { + await _eventBlobContainer.DeleteAsync(blobName); + } + else + { + await _eventBlobContainer.SaveAsync(blobName, input.CoverImageContent, overrideExisting: true); + } await _eventRepository.UpdateAsync(@event); } + + public async Task GetCoverImageAsync(Guid id) + { + var blobName = id.ToString(); + + return await _eventBlobContainer.GetAllBytesOrNullAsync(blobName); + } + + public async Task> GetCountriesLookupAsync() + { + var countriesQueryable = await _countryRepository.GetQueryableAsync(); + + var query = from country in countriesQueryable + orderby country.Name + select country; + + var countries = await AsyncExecuter.ToListAsync(query); + + return ObjectMapper.Map, List>(countries); + } } } diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs index bc8e4ab..f75aa86 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs @@ -30,6 +30,18 @@ namespace EventHub.Admin.Controllers.Events return _eventAppService.GetAsync(id); } + [HttpGet("countries")] + public Task> GetCountriesLookupAsync() + { + return _eventAppService.GetCountriesLookupAsync(); + } + + [HttpGet("cover-image/{id}")] + public Task GetCoverImageAsync(Guid id) + { + return _eventAppService.GetCoverImageAsync(id); + } + [HttpGet] public Task> GetListAsync(EventListFilterDto input) { diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor b/src/EventHub.Admin.Web/Pages/EventManagement.razor index 472aaf1..6b79e4f 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor @@ -2,6 +2,7 @@ @using Microsoft.AspNetCore.Authorization @using EventHub.Admin.Permissions @using EventHub.Admin.Events +@using EventHub.Events @inherits EventHubComponentBase @attribute [Authorize(EventHubPermissions.Events.Default)] @inject IEventAppService EventAppService @@ -111,14 +112,160 @@ @L["CoverImage"] - - EventInfo + + + + + @L["Title"] * + + + + + + + + + + + @L["Description"] * + + + + + + + + + + + @L["IsOnline"] + + + + + + + @L["Language"] + + + + + @if (EditingEvent.IsOnline) + { + + + @L["OnlineLink"] + + + + + + + + } + else + { + + + @L["Country"] + + + + + + + @L["City"] + + + + + + + + } + + + + @L["Capacity"] + + + + + + + + + - - Timing + + + + + @L["StartTime"] * + + + + + + + + + + @L["EndTime"] * + + + + + + + + - - CoverImage + + @if (!string.IsNullOrEmpty(CoverImageUrl)) + { +
+ cover-image +
+ } + +
+ + @L["ChooseCoverImage"] + + + + + @if (!string.IsNullOrEmpty(CoverImageUrl)) + { + + } + else + { + + } + + +
diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs index 0c919bb..c42e142 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs @@ -8,6 +8,9 @@ using Volo.Abp.Application.Dtos; using System; using System.ComponentModel; using Microsoft.AspNetCore.Components.Web; +using System.IO; +using System.Globalization; +using NUglify.Helpers; namespace EventHub.Admin.Web.Pages { @@ -23,18 +26,42 @@ namespace EventHub.Admin.Web.Pages private EventDetailDto Event { get; set; } private UpdateEventDto EditingEvent { get; set; } private Modal EditEventModal { get; set; } - private string SelectedTabInEditModal { get; set; } + private string SelectedTabInEditModal { get; set; } + private string CoverImageUrl { get; set; } + private IFileEntry FileEntry { get; set; } + private List Countries { get; set; } + private List Languages { get; set; } public EventManagement() { Filter = new EventListFilterDto(); PageSize = LimitedResultRequestDto.DefaultMaxResultCount; SelectedTabInEditModal = EventEditTabs.EventInfo.ToString(); + EditingEvent = new UpdateEventDto(); + Countries = new List(); + Languages = new List(); } protected override async Task OnInitializedAsync() { await GetEventsAsync(); + await FillCountriesAsync(); + FillLanguages(); + } + + private void FillLanguages() + { + var result = CultureInfo.GetCultures(CultureTypes.NeutralCultures) + .DistinctBy(x => x.EnglishName) + .OrderBy(x => x.EnglishName) + .ToList(); + result.Remove(result.Single(x => x.TwoLetterISOLanguageName == "iv")); // Invariant Language + + Languages = result.Select(cultureInfo => new Language + { + Value = cultureInfo.TwoLetterISOLanguageName, + Text = cultureInfo.EnglishName + }).ToList(); } private async Task GetEventsAsync() @@ -66,6 +93,8 @@ namespace EventHub.Admin.Web.Pages Event = await EventAppService.GetAsync(EditingEventId); EditingEvent = ObjectMapper.Map(Event); + FillCoverImageUrl(EditingEvent.CoverImageContent); + EditEventModal.Show(); } @@ -83,6 +112,8 @@ namespace EventHub.Admin.Web.Pages { await EventAppService.UpdateAsync(EditingEventId, EditingEvent); await GetEventsAsync(); + CoverImageUrl = string.Empty; + EditEventModal.Hide(); } @@ -99,6 +130,49 @@ namespace EventHub.Admin.Web.Pages Filter.StartTime = changedDate; await GetEventsAsync(); } + + private void FillCoverImageUrl(byte[] content) + { + if (content.IsNullOrEmpty()) + { + return; + } + + var imageBase64Data = Convert.ToBase64String(content); + var imageDataUrl = $"data:image/png;base64,{imageBase64Data}"; + CoverImageUrl = imageDataUrl; + } + + private async Task OnCoverImageFileChanged(FileChangedEventArgs e) + { + FileEntry = e.Files.FirstOrDefault(); + if (FileEntry is null) + { + return; + } + + using (var stream = new MemoryStream()) + { + await FileEntry.WriteToStreamAsync(stream); + + stream.Seek(0, SeekOrigin.Begin); + EditingEvent.CoverImageContent = stream.ToArray(); + FillCoverImageUrl(EditingEvent.CoverImageContent); + await InvokeAsync(StateHasChanged); + } + } + + private void OnDeleteCoverImageButtonClicked() + { + EditingEvent.CoverImageContent = null; + FileEntry = new FileEntry(); + CoverImageUrl = null; + } + + private async Task FillCountriesAsync() + { + Countries = await EventAppService.GetCountriesLookupAsync(); + } } public enum EventEditTabs : byte @@ -107,4 +181,10 @@ namespace EventHub.Admin.Web.Pages Timing, CoverImage } + + public class Language + { + public string Value { get; set; } + public string Text { get; set; } + } } diff --git a/src/EventHub.Application/Events/EventAppService.cs b/src/EventHub.Application/Events/EventAppService.cs index 2bf29cb..ff14e70 100644 --- a/src/EventHub.Application/Events/EventAppService.cs +++ b/src/EventHub.Application/Events/EventAppService.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using EventHub.Countries; using EventHub.Events.Registrations; using EventHub.Organizations; -using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Authorization; diff --git a/src/EventHub.Domain.Shared/Events/EventConsts.cs b/src/EventHub.Domain.Shared/Events/EventConsts.cs index 506d9cf..6e27a39 100644 --- a/src/EventHub.Domain.Shared/Events/EventConsts.cs +++ b/src/EventHub.Domain.Shared/Events/EventConsts.cs @@ -26,5 +26,7 @@ public const int MaxTimingChangeCountForUser = 2; public const int MaxCoverImageFileSize = 5 * 1024 * 1024; + + public static string[] AllowedCoverImageExtensions = { ".jpg", ".png" }; } } diff --git a/src/EventHub.Domain.Shared/Localization/EventHub/en.json b/src/EventHub.Domain.Shared/Localization/EventHub/en.json index 43adc30..e3aa773 100644 --- a/src/EventHub.Domain.Shared/Localization/EventHub/en.json +++ b/src/EventHub.Domain.Shared/Localization/EventHub/en.json @@ -126,6 +126,14 @@ "MaxAttendeeCount": "Max Attendee Count", "UpdateEvent": "Update Event", "EventInfo": "Event Info", - "Timing": "Timing" + "Timing": "Timing", + "IsOnline": "Is Online?", + "OnlineLink": "Online Link", + "Country": "Country", + "City": "City", + "Capacity": "Capacity", + "EndTime": "End Time", + "ChooseCoverImage": "Choose a cover image", + } } From 22f23d5f8dc137c6f38a024670a07bcd2cbbe46f Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Tue, 17 Aug 2021 16:06:08 +0300 Subject: [PATCH 003/159] Admin: Create attendees page and list attendees by events --- .../Events/Registrations/EventAttendeeDto.cs | 16 ++ .../IEventRegistrationAppService.cs | 17 ++ .../EventHubPermissionDefinitionProvider.cs | 4 + .../Permissions/EventHubPermissions.cs | 7 + .../Users/GetUnregisteredUserEventInput.cs | 15 ++ .../Users/IUserAppService.cs | 12 ++ .../Users/UserDto.cs | 19 ++ .../EventHubApplicationAutoMapperProfile.cs | 6 + .../Events/EventAppService.cs | 3 +- .../EventRegistrationAppService.cs | 86 +++++++++ .../Users/UserAppService.cs | 49 +++++ .../Controllers/Events/EventController.cs | 1 - .../EventRegistrationController.cs | 45 +++++ .../Controllers/Users/UserController.cs | 30 ++++ .../Components/UserPicker/UserPicker.razor | 1 + .../Pages/AttendeeDetail.razor | 160 +++++++++++++++++ .../Pages/AttendeeDetail.razor.cs | 170 ++++++++++++++++++ .../Pages/EventManagement.razor | 6 + .../Localization/EventHub/en.json | 9 +- 19 files changed, 652 insertions(+), 4 deletions(-) create mode 100644 src/EventHub.Admin.Application.Contracts/Events/Registrations/EventAttendeeDto.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Users/GetUnregisteredUserEventInput.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Users/IUserAppService.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Users/UserDto.cs create mode 100644 src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs create mode 100644 src/EventHub.Admin.Application/Users/UserAppService.cs create mode 100644 src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs create mode 100644 src/EventHub.Admin.HttpApi.Host/Controllers/Users/UserController.cs create mode 100644 src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor create mode 100644 src/EventHub.Admin.Web/Pages/AttendeeDetail.razor create mode 100644 src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs diff --git a/src/EventHub.Admin.Application.Contracts/Events/Registrations/EventAttendeeDto.cs b/src/EventHub.Admin.Application.Contracts/Events/Registrations/EventAttendeeDto.cs new file mode 100644 index 0000000..3de0a42 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/Registrations/EventAttendeeDto.cs @@ -0,0 +1,16 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Events.Registrations +{ + public class EventAttendeeDto : EntityDto + { + public string UserName { get; set; } + + public string Email { get; set; } + + public string Name { get; set; } + + public string Surname { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs b/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs new file mode 100644 index 0000000..74d21bd --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace EventHub.Admin.Events.Registrations +{ + public interface IEventRegistrationAppService : IApplicationService + { + Task> GetAttendeesAsync(Guid eventId); + + Task RemoveAttendeeAsync(Guid eventId, Guid attendeeId); + + Task RegisterUsersAsync(Guid eventId, List userIds); + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs index d95d637..7e2e6b0 100644 --- a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs +++ b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs @@ -18,6 +18,10 @@ namespace EventHub.Admin.Permissions var eventPermissions = eventHubGroup.AddPermission(EventHubPermissions.Events.Default, L("Permission:EventManagement")); eventPermissions.AddChild(EventHubPermissions.Events.Update, L("Permission:Edit")); + + var eventRegistrationPermission = eventHubGroup.AddPermission(EventHubPermissions.Events.Registrations.Default, L("Permission:RegistrationManagement")); + eventRegistrationPermission.AddChild(EventHubPermissions.Events.Registrations.AddAttendee, L("Permission:AddAttendee")); + eventRegistrationPermission.AddChild(EventHubPermissions.Events.Registrations.RemoveAttendee, L("Permission:RemoveAttendee")); } private static LocalizableString L(string name) diff --git a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs index 0d30b60..98ff749 100644 --- a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs +++ b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs @@ -21,6 +21,13 @@ { public const string Default = GroupName + ".Events"; public const string Update = Default + ".Update"; + + public class Registrations + { + public const string Default = Events.Default + ".Registrations"; + public const string AddAttendee = Default + ".AddAttendee"; + public const string RemoveAttendee = Default + ".RemoveAttendee"; + } } } } \ No newline at end of file diff --git a/src/EventHub.Admin.Application.Contracts/Users/GetUnregisteredUserEventInput.cs b/src/EventHub.Admin.Application.Contracts/Users/GetUnregisteredUserEventInput.cs new file mode 100644 index 0000000..64086a9 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Users/GetUnregisteredUserEventInput.cs @@ -0,0 +1,15 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Users +{ + public class GetUnregisteredUserEventInput : PagedResultRequestDto + { + public Guid EventId { get; set; } + public string Username { get; set; } + public string Name { get; set; } + public string Surname { get; set; } + public string Email { get; set; } + public string Sorting { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Users/IUserAppService.cs b/src/EventHub.Admin.Application.Contracts/Users/IUserAppService.cs new file mode 100644 index 0000000..c7d710e --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Users/IUserAppService.cs @@ -0,0 +1,12 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace EventHub.Admin.Users +{ + public interface IUserAppService : IApplicationService + { + Task> GetUnregisteredUsersOfEventAsync(GetUnregisteredUserEventInput input); + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Users/UserDto.cs b/src/EventHub.Admin.Application.Contracts/Users/UserDto.cs new file mode 100644 index 0000000..bffbed0 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Users/UserDto.cs @@ -0,0 +1,19 @@ +using System; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Auditing; + +namespace EventHub.Admin.Users +{ + public class UserDto : EntityDto, IHasCreationTime + { + public string Username { get; set; } + + public string Email { get; set; } + + public string Name { get; set; } + + public string Surname { get; set; } + + public DateTime CreationTime { get; set; } + } +} diff --git a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs index 476c8d8..e3b9bbb 100644 --- a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs +++ b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs @@ -1,12 +1,15 @@ using AutoMapper; using EventHub.Admin.Events; +using EventHub.Admin.Events.Registrations; using EventHub.Admin.Organizations; using EventHub.Admin.Organizations.Memberships; +using EventHub.Admin.Users; using EventHub.Countries; using EventHub.Events; using EventHub.Organizations; using EventHub.Organizations.Memberships; using Volo.Abp.AutoMapper; +using Volo.Abp.Identity; namespace EventHub.Admin { @@ -27,6 +30,9 @@ namespace EventHub.Admin .Ignore(x => x.CoverImageContent); CreateMap(); + + CreateMap(); + CreateMap(); } } } diff --git a/src/EventHub.Admin.Application/Events/EventAppService.cs b/src/EventHub.Admin.Application/Events/EventAppService.cs index e66ad0a..066cf4b 100644 --- a/src/EventHub.Admin.Application/Events/EventAppService.cs +++ b/src/EventHub.Admin.Application/Events/EventAppService.cs @@ -66,8 +66,7 @@ namespace EventHub.Admin.Events OrganizationDisplayName = organization.DisplayName, AttendeeCount = (from eventRegistration in eventRegistrationQueryable where eventRegistration.EventId == @event.Id - group @event by @event.Id into g - select g.Key).Count() + select @eventRegistration).Count() }) .WhereIf(!string.IsNullOrWhiteSpace(input.Title), x => x.Title.ToLower().Contains(input.Title.ToLower())) .WhereIf(!string.IsNullOrWhiteSpace(input.OrganizationDisplayName), x => x.OrganizationDisplayName.ToLower().Contains(input.OrganizationDisplayName.ToLower())) diff --git a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs new file mode 100644 index 0000000..0e5b78e --- /dev/null +++ b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using EventHub.Admin.Permissions; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Identity; +using EventHub.Events.Registrations; +using Microsoft.AspNetCore.Authorization; +using EventHub.Events; + +namespace EventHub.Admin.Events.Registrations +{ + //[Authorize(EventHubPermissions.Events.Registrations.Default)] + public class EventRegistrationAppService : EventHubAdminAppService, IEventRegistrationAppService + { + private readonly IRepository _userRepository; + private readonly IRepository _eventRegistrationRepository; + private readonly IRepository _eventRepository; + private readonly EventRegistrationManager _eventRegistrationManager; + + + public EventRegistrationAppService( + IRepository userRepository, + IRepository eventRegistrationRepository, + IRepository eventRepository, + EventRegistrationManager eventRegistrationManager) + { + _userRepository = userRepository; + _eventRegistrationRepository = eventRegistrationRepository; + _eventRepository = eventRepository; + _eventRegistrationManager = eventRegistrationManager; + } + + public async Task> GetAttendeesAsync(Guid eventId) + { + var eventRegistrationQueryable = await _eventRegistrationRepository.GetQueryableAsync(); + var userQueryable = await _userRepository.GetQueryableAsync(); + + var query = from eventRegistration in eventRegistrationQueryable + join user in userQueryable on eventRegistration.UserId equals user.Id + where eventRegistration.EventId == eventId + orderby eventRegistration.CreationTime descending + select user; + + var totalCount = await AsyncExecuter.CountAsync(query); + var users = await AsyncExecuter.ToListAsync(query.Take(10)); + + return new PagedResultDto( + totalCount, + ObjectMapper.Map, List>(users) + ); + } + + //[Authorize(EventHubPermissions.Events.Registrations.RemoveAttendee)] + public async Task RemoveAttendeeAsync(Guid eventId, Guid attendeeId) + { + await _eventRegistrationManager.UnregisterAsync( + await _eventRepository.GetAsync(eventId), + await _userRepository.GetAsync(attendeeId) + ); + } + + //[Authorize(EventHubPermissions.Events.Registrations.AddAttendee)] + public async Task RegisterUsersAsync(Guid eventId, List userIds) + { + if (userIds == null || !userIds.Any()) + { + return; + } + + var @event = await _eventRepository.GetAsync(eventId); + + var userQueryable = await _userRepository.GetQueryableAsync(); + var query = userQueryable.Where(user => userIds.Contains(user.Id)); + + var users = await AsyncExecuter.ToListAsync(query); + + foreach (var user in users) + { + await _eventRegistrationManager.RegisterAsync(@event, user); + } + } + } +} diff --git a/src/EventHub.Admin.Application/Users/UserAppService.cs b/src/EventHub.Admin.Application/Users/UserAppService.cs new file mode 100644 index 0000000..b05458a --- /dev/null +++ b/src/EventHub.Admin.Application/Users/UserAppService.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using EventHub.Events.Registrations; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Identity; + +namespace EventHub.Admin.Users +{ + public class UserAppService : EventHubAdminAppService, IUserAppService + { + private readonly IRepository _identityUserRepository; + private readonly IRepository _eventRegistrationRepository; + + public UserAppService(IRepository identityUserRepository, IRepository eventRegistrationRepository) + { + _identityUserRepository = identityUserRepository; + _eventRegistrationRepository = eventRegistrationRepository; + } + + public async Task> GetUnregisteredUsersOfEventAsync(GetUnregisteredUserEventInput input) + { + var identityUserQueryable = await _identityUserRepository.GetQueryableAsync(); + + var eventRegistrationQuery = (await _eventRegistrationRepository.GetQueryableAsync()) + .Where(x => x.EventId == input.EventId) + .Select(x => x.UserId); + + var userIds = await AsyncExecuter.ToListAsync(eventRegistrationQuery); + + var query = identityUserQueryable + .Where(x => !userIds.Contains(x.Id)) + .WhereIf(!string.IsNullOrWhiteSpace(input.Username), user => user.UserName.ToLower().Contains(input.Username.ToLower())) + .WhereIf(!string.IsNullOrWhiteSpace(input.Name), user => user.Name.ToLower().Contains(input.Name.ToLower())) + .WhereIf(!string.IsNullOrWhiteSpace(input.Surname), user => user.Surname.ToLower().Contains(input.Surname.ToLower())) + .WhereIf(!string.IsNullOrWhiteSpace(input.Email), user => user.Email.ToLower().Contains(input.Email.ToLower())); + + var totalCount = await AsyncExecuter.CountAsync(query); + + query = query.PageBy(input); + + var users = await AsyncExecuter.ToListAsync(query); + + return new PagedResultDto(totalCount, ObjectMapper.Map, List>(users)); + } + } +} diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs index f75aa86..5cc02a3 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; using EventHub.Admin.Events; using Microsoft.AspNetCore.Mvc; diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs new file mode 100644 index 0000000..78439ed --- /dev/null +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using EventHub.Admin.Events.Registrations; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace EventHub.Admin.Controllers.Events.Registrations +{ + [RemoteService(Name = EventHubAdminRemoteServiceConsts.RemoteServiceName)] + [Controller] + [Area("eventhub-admin")] + [ControllerName("EventRegistration")] + [Route("/api/eventhub/admin/event-registration")] + public class EventRegistrationController : AbpController, IEventRegistrationAppService + { + private readonly IEventRegistrationAppService _eventRegistrationAppService; + + public EventRegistrationController(IEventRegistrationAppService eventRegistrationAppService) + { + _eventRegistrationAppService = eventRegistrationAppService; + } + + [HttpGet("{eventId}")] + public Task> GetAttendeesAsync(Guid eventId) + { + return _eventRegistrationAppService.GetAttendeesAsync(eventId); + } + + [HttpPost] + public Task RegisterUsersAsync(Guid eventId, List userIds) + { + return _eventRegistrationAppService.RegisterUsersAsync(eventId, userIds); + } + + [HttpGet] + public Task RemoveAttendeeAsync(Guid eventId, Guid attendeeId) + { + return _eventRegistrationAppService.RemoveAttendeeAsync(eventId, attendeeId); + } + } +} diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Users/UserController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Users/UserController.cs new file mode 100644 index 0000000..47c0725 --- /dev/null +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Users/UserController.cs @@ -0,0 +1,30 @@ +using EventHub.Admin.Users; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace EventHub.Admin.Controllers.Users +{ + [RemoteService(Name = EventHubAdminRemoteServiceConsts.RemoteServiceName)] + [Controller] + [Area("eventhub-admin")] + [ControllerName("User")] + [Route("/api/eventhub/admin/user")] + public class UserController : AbpController, IUserAppService + { + private readonly IUserAppService _userAppService; + + public UserController(IUserAppService userAppService) + { + _userAppService = userAppService; + } + + [HttpGet] + public Task> GetUnregisteredUsersOfEventAsync(GetUnregisteredUserEventInput input) + { + return _userAppService.GetUnregisteredUsersOfEventAsync(input); + } + } +} diff --git a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor new file mode 100644 index 0000000..e2590e7 --- /dev/null +++ b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor @@ -0,0 +1 @@ +@inherits EventHubComponentBase \ No newline at end of file diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor new file mode 100644 index 0000000..d3e5233 --- /dev/null +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor @@ -0,0 +1,160 @@ +@page "/events/{EventId:guid}/attendees" +@using EventHub.Admin.Web.Components.UserPicker +@using EventHub.Admin.Events.Registrations +@using EventHub.Admin.Permissions +@using EventHub.Admin.Users +@inherits EventHubComponentBase +@inject IEventRegistrationAppService EventRegistrationAppService +@inject IUserAppService UserAppService + + + + + @* ************************* PAGE HEADER ************************* *@ +

@L["Attendees"]

+ + + @if (CanAddAttendee) + { + + } + +
+ + + @* ************************* DATA GRID ************************* *@ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + @L["AddAttendee"] + + + +
+
+ + + @L["Username"] + + + + + + @L["Name"] + + + + + + @L["Surname"] + + + + + + @L["Email"] + + + +
+
+ + + + + + + + + @if (SelectAllUsers.ContainsKey(context.Id)) + { + + } + + + + + + @(context.Username) + + + + + + @(context.Name) + + + + + + @(context.Surname) + + + + + + @(context.Email) + + + + +
+ + + + +
+
+ diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs new file mode 100644 index 0000000..cb8f721 --- /dev/null +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs @@ -0,0 +1,170 @@ +using Microsoft.AspNetCore.Components; +using System; +using System.Threading.Tasks; +using EventHub.Admin.Events.Registrations; +using System.Collections.Generic; +using System.Linq; +using Blazorise; +using Volo.Abp.Application.Dtos; +using Blazorise.DataGrid; +using EventHub.Admin.Permissions; +using EventHub.Admin.Users; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components.Web; + +namespace EventHub.Admin.Web.Pages +{ + public partial class AttendeeDetail + { + [Parameter] + public Guid EventId { get; set; } + private IReadOnlyList AttendeeList { get; set; } + private int CurrentPage { get; set; } + private string CurrentSorting { get; set; } + private int TotalCount { get; set; } + private int PageSize { get; } + private bool CanAddAttendee { get; set; } + private Modal AddAttendeeModal { get; set; } + private GetUnregisteredUserEventInput Filter { get; set; } + private IReadOnlyList UserList { get; set; } + private int UserListTotalCount { get; set; } + + private Dictionary SelectAllUsers = new(); + + private bool AllUserSelected + { + get => SelectAllUsers.All(x => x.Value); + set + { + foreach (var key in SelectAllUsers.Keys) + { + SelectAllUsers[key] = value; + } + } + } + + public AttendeeDetail() + { + PageSize = LimitedResultRequestDto.DefaultMaxResultCount; + Filter = new GetUnregisteredUserEventInput(); + } + + protected override async Task OnInitializedAsync() + { + await SetPermissionsAsync(); + await GetAttendeesAsync(); + } + + private async Task GetAttendeesAsync() + { + var result = await EventRegistrationAppService.GetAttendeesAsync(EventId); + + AttendeeList = result.Items; + TotalCount = (int)result.TotalCount; + } + + private async Task SetPermissionsAsync() + { + CanAddAttendee = await AuthorizationService.IsGrantedAsync(EventHubPermissions.Events.Registrations.AddAttendee); + } + + private async Task OnDataGridReadAsync(DataGridReadDataEventArgs e) + { + CurrentSorting = e.Columns + .Where(c => c.Direction != SortDirection.None) + .Select(c => c.Field + (c.Direction == SortDirection.Descending ? " DESC" : "")) + .JoinAsString(","); + CurrentPage = e.Page - 1; + + await GetAttendeesAsync(); + await InvokeAsync(StateHasChanged); + } + private async Task RemoveAttendeeAsync(EventAttendeeDto attendee) + { + await EventRegistrationAppService.RemoveAttendeeAsync(EventId, attendee.Id); + await GetAttendeesAsync(); + } + + private async Task OpenAddAttendeeModal() + { + AddAttendeeModal.Show(); + await GetUsersAsync(); + } + + private async Task GetUsersAsync() + { + Filter.EventId = EventId; + Filter.MaxResultCount = PageSize; + Filter.SkipCount = CurrentPage * PageSize; + Filter.Sorting = CurrentSorting; + + var result = await UserAppService.GetUnregisteredUsersOfEventAsync(Filter); + UserList = result.Items; + UserListTotalCount = (int)result.TotalCount; + + FillSelectedUserList(); + } + + private void FillSelectedUserList() + { + SelectAllUsers = new Dictionary(); + + foreach (var user in UserList) + { + SelectAllUsers.Add(user.Id, false); + } + } + + private async Task OnKeyPressed(KeyboardEventArgs e) + { + if (e.Code is "Enter" or "NumpadEnter") + { + await GetUsersAsync(); + } + } + + private async Task OnDataGridReadForUsersAsync(DataGridReadDataEventArgs e) + { + CurrentSorting = e.Columns + .Where(c => c.Direction != SortDirection.None) + .Select(c => c.Field + (c.Direction == SortDirection.Descending ? " DESC" : "")) + .JoinAsString(","); + CurrentPage = e.Page - 1; + + await GetUsersAsync(); + await InvokeAsync(StateHasChanged); + } + + private async Task AddSelectedUsersToEventAsync() + { + try + { + var selectedUserIds= SelectAllUsers + .Where(x => x.Value) + .Select(x => x.Key) + .ToList(); + + await EventRegistrationAppService.RegisterUsersAsync(EventId, selectedUserIds); + await CloseAddAttendeeModalAsync(); + + await GetAttendeesAsync(); + await InvokeAsync(StateHasChanged); + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } + } + + private void ClosingAddAttendeeModal(ModalClosingEventArgs eventArgs) + { + eventArgs.Cancel = eventArgs.CloseReason == CloseReason.FocusLostClosing; + } + + private Task CloseAddAttendeeModalAsync() + { + AddAttendeeModal.Hide(); + return Task.CompletedTask; + } + } +} diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor b/src/EventHub.Admin.Web/Pages/EventManagement.razor index 6b79e4f..aa0ecb1 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor @@ -6,6 +6,7 @@ @inherits EventHubComponentBase @attribute [Authorize(EventHubPermissions.Events.Default)] @inject IEventAppService EventAppService +@inject NavigationManager NavigationManager @@ -67,6 +68,11 @@ Clicked="() => OpenEditEventModal(context)" Text="@L["Edit"]"> + + diff --git a/src/EventHub.Domain.Shared/Localization/EventHub/en.json b/src/EventHub.Domain.Shared/Localization/EventHub/en.json index e3aa773..a816c25 100644 --- a/src/EventHub.Domain.Shared/Localization/EventHub/en.json +++ b/src/EventHub.Domain.Shared/Localization/EventHub/en.json @@ -134,6 +134,13 @@ "Capacity": "Capacity", "EndTime": "End Time", "ChooseCoverImage": "Choose a cover image", - + "Permission:RegistrationManagement": "Registration Management", + "Permission:AddAttendee": "Add Attendee", + "Permission:RemoveAttendee": "Remove Attendee", + "Attendees": "Attendees", + "AddNewUser": "Add New User", + "AttendeeRemoveConfirmationMessage": "Are you sure you want to remove this item?", + "RemoveUser": "Remove User", + "AddAttendee": "Add Attendee" } } From 4dcf9f2a52bd4b1ab6ef661318b195d7f142e1a4 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Wed, 18 Aug 2021 12:10:46 +0300 Subject: [PATCH 004/159] Admin: Create UserPicker component --- .../GetEventRegistrationListInput.cs | 10 ++ .../IEventRegistrationAppService.cs | 4 +- .../Users/GetUnregisteredUserEventInput.cs | 15 --- .../Users/GetUserListInput.cs | 9 ++ .../Users/IUserAppService.cs | 2 +- .../EventRegistrationAppService.cs | 26 +++- .../Users/UserAppService.cs | 25 ++-- .../EventRegistrationController.cs | 12 +- .../Controllers/Users/UserController.cs | 4 +- .../Components/UserPicker/UserPicker.razor | 71 ++++++++++- .../Components/UserPicker/UserPicker.razor.cs | 117 ++++++++++++++++++ .../Pages/AttendeeDetail.razor | 92 +------------- .../Pages/AttendeeDetail.razor.cs | 99 +++------------ .../Localization/EventHub/en.json | 4 +- 14 files changed, 279 insertions(+), 211 deletions(-) create mode 100644 src/EventHub.Admin.Application.Contracts/Events/Registrations/GetEventRegistrationListInput.cs delete mode 100644 src/EventHub.Admin.Application.Contracts/Users/GetUnregisteredUserEventInput.cs create mode 100644 src/EventHub.Admin.Application.Contracts/Users/GetUserListInput.cs create mode 100644 src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor.cs diff --git a/src/EventHub.Admin.Application.Contracts/Events/Registrations/GetEventRegistrationListInput.cs b/src/EventHub.Admin.Application.Contracts/Events/Registrations/GetEventRegistrationListInput.cs new file mode 100644 index 0000000..8b07bf4 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Events/Registrations/GetEventRegistrationListInput.cs @@ -0,0 +1,10 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Events.Registrations +{ + public class GetEventRegistrationListInput : PagedAndSortedResultRequestDto + { + public Guid EventId { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs b/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs index 74d21bd..c15b793 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs @@ -8,10 +8,12 @@ namespace EventHub.Admin.Events.Registrations { public interface IEventRegistrationAppService : IApplicationService { - Task> GetAttendeesAsync(Guid eventId); + Task> GetAttendeesAsync(GetEventRegistrationListInput input); Task RemoveAttendeeAsync(Guid eventId, Guid attendeeId); Task RegisterUsersAsync(Guid eventId, List userIds); + + Task> GetAllAttendeeIdsAsync(Guid eventId); } } diff --git a/src/EventHub.Admin.Application.Contracts/Users/GetUnregisteredUserEventInput.cs b/src/EventHub.Admin.Application.Contracts/Users/GetUnregisteredUserEventInput.cs deleted file mode 100644 index 64086a9..0000000 --- a/src/EventHub.Admin.Application.Contracts/Users/GetUnregisteredUserEventInput.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using Volo.Abp.Application.Dtos; - -namespace EventHub.Admin.Users -{ - public class GetUnregisteredUserEventInput : PagedResultRequestDto - { - public Guid EventId { get; set; } - public string Username { get; set; } - public string Name { get; set; } - public string Surname { get; set; } - public string Email { get; set; } - public string Sorting { get; set; } - } -} diff --git a/src/EventHub.Admin.Application.Contracts/Users/GetUserListInput.cs b/src/EventHub.Admin.Application.Contracts/Users/GetUserListInput.cs new file mode 100644 index 0000000..9027b52 --- /dev/null +++ b/src/EventHub.Admin.Application.Contracts/Users/GetUserListInput.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Users +{ + public class GetUserListInput : PagedAndSortedResultRequestDto + { + public string Username { get; set; } + } +} diff --git a/src/EventHub.Admin.Application.Contracts/Users/IUserAppService.cs b/src/EventHub.Admin.Application.Contracts/Users/IUserAppService.cs index c7d710e..4920226 100644 --- a/src/EventHub.Admin.Application.Contracts/Users/IUserAppService.cs +++ b/src/EventHub.Admin.Application.Contracts/Users/IUserAppService.cs @@ -7,6 +7,6 @@ namespace EventHub.Admin.Users { public interface IUserAppService : IApplicationService { - Task> GetUnregisteredUsersOfEventAsync(GetUnregisteredUserEventInput input); + Task> GetListAsync(GetUserListInput input); } } diff --git a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs index 0e5b78e..ca2acff 100644 --- a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs +++ b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Dynamic.Core; using System.Threading.Tasks; using EventHub.Admin.Permissions; using Volo.Abp.Application.Dtos; @@ -33,18 +34,25 @@ namespace EventHub.Admin.Events.Registrations _eventRegistrationManager = eventRegistrationManager; } - public async Task> GetAttendeesAsync(Guid eventId) + public async Task> GetAttendeesAsync(GetEventRegistrationListInput input) { var eventRegistrationQueryable = await _eventRegistrationRepository.GetQueryableAsync(); var userQueryable = await _userRepository.GetQueryableAsync(); var query = from eventRegistration in eventRegistrationQueryable join user in userQueryable on eventRegistration.UserId equals user.Id - where eventRegistration.EventId == eventId + where eventRegistration.EventId == input.EventId orderby eventRegistration.CreationTime descending select user; var totalCount = await AsyncExecuter.CountAsync(query); + + if (!string.IsNullOrWhiteSpace(input.Sorting)) + { + query = query.OrderBy(input.Sorting); + } + + query = query.PageBy(input); var users = await AsyncExecuter.ToListAsync(query.Take(10)); return new PagedResultDto( @@ -82,5 +90,19 @@ namespace EventHub.Admin.Events.Registrations await _eventRegistrationManager.RegisterAsync(@event, user); } } + + public async Task> GetAllAttendeeIdsAsync(Guid eventId) + { + var eventRegistrationQueryable = await _eventRegistrationRepository.GetQueryableAsync(); + var userQueryable = await _userRepository.GetQueryableAsync(); + + var query = from eventRegistration in eventRegistrationQueryable + join user in userQueryable on eventRegistration.UserId equals user.Id + where eventRegistration.EventId == eventId + orderby eventRegistration.CreationTime descending + select user.Id; + + return await AsyncExecuter.ToListAsync(query); + } } } diff --git a/src/EventHub.Admin.Application/Users/UserAppService.cs b/src/EventHub.Admin.Application/Users/UserAppService.cs index b05458a..398e51b 100644 --- a/src/EventHub.Admin.Application/Users/UserAppService.cs +++ b/src/EventHub.Admin.Application/Users/UserAppService.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Dynamic.Core; using System.Threading.Tasks; -using EventHub.Events.Registrations; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; @@ -12,33 +12,26 @@ namespace EventHub.Admin.Users public class UserAppService : EventHubAdminAppService, IUserAppService { private readonly IRepository _identityUserRepository; - private readonly IRepository _eventRegistrationRepository; - public UserAppService(IRepository identityUserRepository, IRepository eventRegistrationRepository) + public UserAppService(IRepository identityUserRepository) { _identityUserRepository = identityUserRepository; - _eventRegistrationRepository = eventRegistrationRepository; } - public async Task> GetUnregisteredUsersOfEventAsync(GetUnregisteredUserEventInput input) + public async Task> GetListAsync(GetUserListInput input) { var identityUserQueryable = await _identityUserRepository.GetQueryableAsync(); - var eventRegistrationQuery = (await _eventRegistrationRepository.GetQueryableAsync()) - .Where(x => x.EventId == input.EventId) - .Select(x => x.UserId); - - var userIds = await AsyncExecuter.ToListAsync(eventRegistrationQuery); - var query = identityUserQueryable - .Where(x => !userIds.Contains(x.Id)) - .WhereIf(!string.IsNullOrWhiteSpace(input.Username), user => user.UserName.ToLower().Contains(input.Username.ToLower())) - .WhereIf(!string.IsNullOrWhiteSpace(input.Name), user => user.Name.ToLower().Contains(input.Name.ToLower())) - .WhereIf(!string.IsNullOrWhiteSpace(input.Surname), user => user.Surname.ToLower().Contains(input.Surname.ToLower())) - .WhereIf(!string.IsNullOrWhiteSpace(input.Email), user => user.Email.ToLower().Contains(input.Email.ToLower())); + .WhereIf(!string.IsNullOrWhiteSpace(input.Username), user => user.UserName.ToLower().Contains(input.Username.ToLower())); var totalCount = await AsyncExecuter.CountAsync(query); + if (!string.IsNullOrWhiteSpace(input.Sorting)) + { + query = query.OrderBy(input.Sorting); + } + query = query.PageBy(input); var users = await AsyncExecuter.ToListAsync(query); diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs index 78439ed..a4edcca 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs @@ -25,9 +25,15 @@ namespace EventHub.Admin.Controllers.Events.Registrations } [HttpGet("{eventId}")] - public Task> GetAttendeesAsync(Guid eventId) + public Task> GetAllAttendeeIdsAsync(Guid eventId) { - return _eventRegistrationAppService.GetAttendeesAsync(eventId); + return _eventRegistrationAppService.GetAllAttendeeIdsAsync(eventId); + } + + [HttpGet] + public Task> GetAttendeesAsync(GetEventRegistrationListInput input) + { + return _eventRegistrationAppService.GetAttendeesAsync(input); } [HttpPost] @@ -36,7 +42,7 @@ namespace EventHub.Admin.Controllers.Events.Registrations return _eventRegistrationAppService.RegisterUsersAsync(eventId, userIds); } - [HttpGet] + [HttpDelete] public Task RemoveAttendeeAsync(Guid eventId, Guid attendeeId) { return _eventRegistrationAppService.RemoveAttendeeAsync(eventId, attendeeId); diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Users/UserController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Users/UserController.cs index 47c0725..75ff77e 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Users/UserController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Users/UserController.cs @@ -22,9 +22,9 @@ namespace EventHub.Admin.Controllers.Users } [HttpGet] - public Task> GetUnregisteredUsersOfEventAsync(GetUnregisteredUserEventInput input) + public Task> GetListAsync(GetUserListInput input) { - return _userAppService.GetUnregisteredUsersOfEventAsync(input); + return _userAppService.GetListAsync(input); } } } diff --git a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor index e2590e7..82d4fc6 100644 --- a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor +++ b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor @@ -1 +1,70 @@ -@inherits EventHubComponentBase \ No newline at end of file +@using EventHub.Admin.Users +@inherits EventHubComponentBase +@inject IUserAppService UserAppService + + + + @L["AddUser"] + + + +
+ + + @L["UserName"] + + + +
+ + + + + + + + + @if (SelectAllUsers.ContainsKey(context.Id)) + { + + } + + + + + + @(context.Username) + + + + + + @(context.Name) + + + + + + @(context.Surname) + + + + + + @(context.Email) + + + + +
+ + + + +
diff --git a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor.cs b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor.cs new file mode 100644 index 0000000..66982f1 --- /dev/null +++ b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor.cs @@ -0,0 +1,117 @@ +using Blazorise; +using EventHub.Admin.Users; +using Microsoft.AspNetCore.Components; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Blazorise.DataGrid; +using Microsoft.AspNetCore.Components.Web; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Admin.Web.Components.UserPicker +{ + public partial class UserPicker + { + [Parameter] + public Modal UserPickerModal { get; set; } + + [Parameter] + public EventCallback SaveFormAsync { get; set; } + + [Parameter] + public List SelectedUserIds { get; set; } = new List(); + + private GetUserListInput Filter { get; set; } + + private IReadOnlyList UserList { get; set; } + private int CurrentPage { get; set; } + private string CurrentSorting { get; set; } + private int TotalCount { get; set; } + private int PageSize { get; } + public Dictionary SelectAllUsers = new(); + + private bool AllUserSelected + { + get => SelectAllUsers.All(x => x.Value); + set + { + foreach (var key in SelectAllUsers.Keys) + { + SelectAllUsers[key] = value; + } + } + } + + public UserPicker() + { + Filter = new GetUserListInput(); + PageSize = LimitedResultRequestDto.DefaultMaxResultCount; + } + + protected override async Task OnInitializedAsync() + { + await GetUsersAsync(); + } + + protected override async Task OnParametersSetAsync() + { + await GetUsersAsync(); + } + + private async Task GetUsersAsync() + { + Filter.MaxResultCount = PageSize; + Filter.SkipCount = CurrentPage * PageSize; + Filter.Sorting = CurrentSorting; + + var result = await UserAppService.GetListAsync(Filter); + UserList = result.Items; + TotalCount = (int)result.TotalCount; + + FillSelectedUserList(); + } + + private void FillSelectedUserList() + { + SelectAllUsers = new Dictionary(); + + foreach (var user in UserList) + { + SelectAllUsers.Add(user.Id, SelectedUserIds.Contains(user.Id)); + } + } + + private async Task OnKeyPressed(KeyboardEventArgs e) + { + if (e.Code is "Enter" or "NumpadEnter") + { + await GetUsersAsync(); + } + } + + private async Task OnDataGridReadAsync(DataGridReadDataEventArgs e) + { + CurrentSorting = e.Columns + .Where(c => c.Direction != SortDirection.None) + .Select(c => c.Field + (c.Direction == SortDirection.Descending ? " DESC" : "")) + .JoinAsString(","); + CurrentPage = e.Page - 1; + + await GetUsersAsync(); + await InvokeAsync(StateHasChanged); + } + + public Task CloseUserPickerModalAsync() + { + UserPickerModal.Hide(); + + return Task.CompletedTask; + } + + private async Task SaveUserPickerFormAsync() + { + await SaveFormAsync.InvokeAsync(); + } + } +} diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor index d3e5233..c4414b3 100644 --- a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor @@ -17,7 +17,7 @@ @if (CanAddAttendee) { } @@ -69,92 +69,6 @@
- - - - @L["AddAttendee"] - - - -
-
- - - @L["Username"] - - - - - - @L["Name"] - - - - - - @L["Surname"] - - - - - - @L["Email"] - - - -
-
- - - - - - - - - @if (SelectAllUsers.ContainsKey(context.Id)) - { - - } - - - - - - @(context.Username) - - - - - - @(context.Name) - - - - - - @(context.Surname) - - - - - - @(context.Email) - - - - -
- - - - -
+ + - diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs index cb8f721..fd348aa 100644 --- a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs @@ -8,9 +8,8 @@ using Blazorise; using Volo.Abp.Application.Dtos; using Blazorise.DataGrid; using EventHub.Admin.Permissions; -using EventHub.Admin.Users; +using EventHub.Admin.Web.Components.UserPicker; using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Components.Web; namespace EventHub.Admin.Web.Pages { @@ -25,28 +24,15 @@ namespace EventHub.Admin.Web.Pages private int PageSize { get; } private bool CanAddAttendee { get; set; } private Modal AddAttendeeModal { get; set; } - private GetUnregisteredUserEventInput Filter { get; set; } - private IReadOnlyList UserList { get; set; } - private int UserListTotalCount { get; set; } - - private Dictionary SelectAllUsers = new(); - - private bool AllUserSelected - { - get => SelectAllUsers.All(x => x.Value); - set - { - foreach (var key in SelectAllUsers.Keys) - { - SelectAllUsers[key] = value; - } - } - } + private GetEventRegistrationListInput Filter { get; set; } + public UserPicker UserPickerModalRef { get; set; } + private List SelectedUserIds { get; set; } public AttendeeDetail() { PageSize = LimitedResultRequestDto.DefaultMaxResultCount; - Filter = new GetUnregisteredUserEventInput(); + Filter = new GetEventRegistrationListInput(); + SelectedUserIds = new List(); } protected override async Task OnInitializedAsync() @@ -57,10 +43,17 @@ namespace EventHub.Admin.Web.Pages private async Task GetAttendeesAsync() { - var result = await EventRegistrationAppService.GetAttendeesAsync(EventId); + Filter.EventId = EventId; + Filter.MaxResultCount = PageSize; + Filter.SkipCount = CurrentPage * PageSize; + Filter.Sorting = CurrentSorting; + + var result = await EventRegistrationAppService.GetAttendeesAsync(Filter); AttendeeList = result.Items; TotalCount = (int)result.TotalCount; + + SelectedUserIds = await EventRegistrationAppService.GetAllAttendeeIdsAsync(EventId); } private async Task SetPermissionsAsync() @@ -85,67 +78,19 @@ namespace EventHub.Admin.Web.Pages await GetAttendeesAsync(); } - private async Task OpenAddAttendeeModal() - { - AddAttendeeModal.Show(); - await GetUsersAsync(); - } - - private async Task GetUsersAsync() - { - Filter.EventId = EventId; - Filter.MaxResultCount = PageSize; - Filter.SkipCount = CurrentPage * PageSize; - Filter.Sorting = CurrentSorting; - - var result = await UserAppService.GetUnregisteredUsersOfEventAsync(Filter); - UserList = result.Items; - UserListTotalCount = (int)result.TotalCount; - - FillSelectedUserList(); - } - - private void FillSelectedUserList() - { - SelectAllUsers = new Dictionary(); - - foreach (var user in UserList) - { - SelectAllUsers.Add(user.Id, false); - } - } - - private async Task OnKeyPressed(KeyboardEventArgs e) - { - if (e.Code is "Enter" or "NumpadEnter") - { - await GetUsersAsync(); - } - } - - private async Task OnDataGridReadForUsersAsync(DataGridReadDataEventArgs e) - { - CurrentSorting = e.Columns - .Where(c => c.Direction != SortDirection.None) - .Select(c => c.Field + (c.Direction == SortDirection.Descending ? " DESC" : "")) - .JoinAsString(","); - CurrentPage = e.Page - 1; - - await GetUsersAsync(); - await InvokeAsync(StateHasChanged); - } - private async Task AddSelectedUsersToEventAsync() { try { - var selectedUserIds= SelectAllUsers + var selectedUserIds = UserPickerModalRef + .SelectAllUsers .Where(x => x.Value) .Select(x => x.Key) .ToList(); await EventRegistrationAppService.RegisterUsersAsync(EventId, selectedUserIds); - await CloseAddAttendeeModalAsync(); + + AddAttendeeModal.Hide(); await GetAttendeesAsync(); await InvokeAsync(StateHasChanged); @@ -156,15 +101,9 @@ namespace EventHub.Admin.Web.Pages } } - private void ClosingAddAttendeeModal(ModalClosingEventArgs eventArgs) + private void ClosingUserPickerModal(ModalClosingEventArgs eventArgs) { eventArgs.Cancel = eventArgs.CloseReason == CloseReason.FocusLostClosing; } - - private Task CloseAddAttendeeModalAsync() - { - AddAttendeeModal.Hide(); - return Task.CompletedTask; - } } } diff --git a/src/EventHub.Domain.Shared/Localization/EventHub/en.json b/src/EventHub.Domain.Shared/Localization/EventHub/en.json index a816c25..cd1e975 100644 --- a/src/EventHub.Domain.Shared/Localization/EventHub/en.json +++ b/src/EventHub.Domain.Shared/Localization/EventHub/en.json @@ -141,6 +141,8 @@ "AddNewUser": "Add New User", "AttendeeRemoveConfirmationMessage": "Are you sure you want to remove this item?", "RemoveUser": "Remove User", - "AddAttendee": "Add Attendee" + "AddAttendee": "Add Attendee", + "AddUser": "Add User", + } } From 4e4472bc486f6515bed9d751dd74eaa1228decba Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Wed, 18 Aug 2021 12:27:42 +0300 Subject: [PATCH 005/159] Admin: Refactor UserPicker component --- .../Components/UserPicker/UserPicker.razor | 124 +++++++++--------- .../Components/UserPicker/UserPicker.razor.cs | 15 ++- .../Pages/AttendeeDetail.razor | 9 +- .../Pages/AttendeeDetail.razor.cs | 7 +- 4 files changed, 81 insertions(+), 74 deletions(-) diff --git a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor index 82d4fc6..2f089a3 100644 --- a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor +++ b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor @@ -2,69 +2,71 @@ @inherits EventHubComponentBase @inject IUserAppService UserAppService - - - @L["AddUser"] - - - -
- - - @L["UserName"] - - - -
+ + + + @L["AddUser"] + + + +
+ + + @L["UserName"] + + + +
- - - - - - - - @if (SelectAllUsers.ContainsKey(context.Id)) - { - - } - - + + + + + + + + @if (SelectAllUsers.ContainsKey(context.Id)) + { + + } + + - - - @(context.Username) - - + + + @(context.Username) + + - - - @(context.Name) - - + + + @(context.Name) + + - - - @(context.Surname) - - + + + @(context.Surname) + + - - - @(context.Email) - - - - -
- - - - -
+ + + @(context.Email) + + + + +
+ + + + +
+
\ No newline at end of file diff --git a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor.cs b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor.cs index 66982f1..082d268 100644 --- a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor.cs +++ b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor.cs @@ -13,7 +13,6 @@ namespace EventHub.Admin.Web.Components.UserPicker { public partial class UserPicker { - [Parameter] public Modal UserPickerModal { get; set; } [Parameter] @@ -29,8 +28,8 @@ namespace EventHub.Admin.Web.Components.UserPicker private string CurrentSorting { get; set; } private int TotalCount { get; set; } private int PageSize { get; } + public Dictionary SelectAllUsers = new(); - private bool AllUserSelected { get => SelectAllUsers.All(x => x.Value); @@ -102,6 +101,13 @@ namespace EventHub.Admin.Web.Components.UserPicker await InvokeAsync(StateHasChanged); } + public Task OpenUserPickerModalAsync() + { + UserPickerModal.Show(); + + return Task.CompletedTask; + } + public Task CloseUserPickerModalAsync() { UserPickerModal.Hide(); @@ -113,5 +119,10 @@ namespace EventHub.Admin.Web.Components.UserPicker { await SaveFormAsync.InvokeAsync(); } + + private void ClosingUserPickerModal(ModalClosingEventArgs eventArgs) + { + eventArgs.Cancel = eventArgs.CloseReason == CloseReason.FocusLostClosing; + } } } diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor index c4414b3..f99c45b 100644 --- a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor @@ -7,17 +7,15 @@ @inject IEventRegistrationAppService EventRegistrationAppService @inject IUserAppService UserAppService - - @* ************************* PAGE HEADER ************************* *@

@L["Attendees"]

@if (CanAddAttendee) { } @@ -25,7 +23,6 @@
- @* ************************* DATA GRID ************************* *@ - - - + \ No newline at end of file diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs index fd348aa..86380db 100644 --- a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs @@ -23,7 +23,6 @@ namespace EventHub.Admin.Web.Pages private int TotalCount { get; set; } private int PageSize { get; } private bool CanAddAttendee { get; set; } - private Modal AddAttendeeModal { get; set; } private GetEventRegistrationListInput Filter { get; set; } public UserPicker UserPickerModalRef { get; set; } @@ -90,7 +89,7 @@ namespace EventHub.Admin.Web.Pages await EventRegistrationAppService.RegisterUsersAsync(EventId, selectedUserIds); - AddAttendeeModal.Hide(); + await UserPickerModalRef.CloseUserPickerModalAsync(); await GetAttendeesAsync(); await InvokeAsync(StateHasChanged); @@ -101,9 +100,9 @@ namespace EventHub.Admin.Web.Pages } } - private void ClosingUserPickerModal(ModalClosingEventArgs eventArgs) + private async Task OpenUserPickerModal() { - eventArgs.Cancel = eventArgs.CloseReason == CloseReason.FocusLostClosing; + await UserPickerModalRef.OpenUserPickerModalAsync(); } } } From f528d746750429814e8a8b9c7186277110a3fbda Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Wed, 18 Aug 2021 14:14:08 +0300 Subject: [PATCH 006/159] Admin: Add or Remove attends according to UserPick component --- .../Events/EventListFilterDto.cs | 3 +- .../IEventRegistrationAppService.cs | 2 +- .../Events/EventAppService.cs | 9 +++-- .../EventRegistrationAppService.cs | 34 +++++++++++++------ .../EventRegistrationController.cs | 4 +-- .../Pages/AttendeeDetail.razor.cs | 9 +++-- .../Pages/EventManagement.razor | 10 ++++-- .../Pages/EventManagement.razor.cs | 10 ++++-- .../Registrations/EventRegistrationManager.cs | 5 +++ 9 files changed, 62 insertions(+), 24 deletions(-) diff --git a/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs b/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs index 69758a5..08fed91 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs @@ -5,7 +5,8 @@ namespace EventHub.Admin.Events { public class EventListFilterDto : PagedAndSortedResultRequestDto { - public DateTime? StartTime { get; set; } + public DateTime? MinStartTime { get; set; } + public DateTime? MaxStartTime { get; set; } public string Title { get; set; } diff --git a/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs b/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs index c15b793..eb491bb 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/Registrations/IEventRegistrationAppService.cs @@ -10,7 +10,7 @@ namespace EventHub.Admin.Events.Registrations { Task> GetAttendeesAsync(GetEventRegistrationListInput input); - Task RemoveAttendeeAsync(Guid eventId, Guid attendeeId); + Task UnRegisterAttendeeAsync(Guid eventId, Guid attendeeId); Task RegisterUsersAsync(Guid eventId, List userIds); diff --git a/src/EventHub.Admin.Application/Events/EventAppService.cs b/src/EventHub.Admin.Application/Events/EventAppService.cs index 066cf4b..10eccd8 100644 --- a/src/EventHub.Admin.Application/Events/EventAppService.cs +++ b/src/EventHub.Admin.Application/Events/EventAppService.cs @@ -3,17 +3,19 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading.Tasks; +using EventHub.Admin.Permissions; using EventHub.Countries; using EventHub.Events; using EventHub.Events.Registrations; using EventHub.Organizations; +using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.BlobStoring; using Volo.Abp.Domain.Repositories; namespace EventHub.Admin.Events { - //[Authorize(EventHubPermissions.Events.Default)] + [Authorize(EventHubPermissions.Events.Default)] public class EventAppService : EventHubAdminAppService, IEventAppService { private readonly IRepository _eventRepository; @@ -70,7 +72,8 @@ namespace EventHub.Admin.Events }) .WhereIf(!string.IsNullOrWhiteSpace(input.Title), x => x.Title.ToLower().Contains(input.Title.ToLower())) .WhereIf(!string.IsNullOrWhiteSpace(input.OrganizationDisplayName), x => x.OrganizationDisplayName.ToLower().Contains(input.OrganizationDisplayName.ToLower())) - .WhereIf(input.StartTime.HasValue, x => x.StartTime > input.StartTime) + .WhereIf(input.MinStartTime.HasValue, x => x.StartTime >= input.MinStartTime) + .WhereIf(input.MaxStartTime.HasValue, x => x.StartTime <= input.MaxStartTime) .WhereIf(input.MinAttendeeCount.HasValue, x => x.AttendeeCount >= input.MinAttendeeCount) .WhereIf(input.MaxAttendeeCount.HasValue, x => x.AttendeeCount <= input.MaxAttendeeCount); @@ -83,7 +86,7 @@ namespace EventHub.Admin.Events return new PagedResultDto(totalCount, events); } - //[Authorize(EventHubPermissions.Events.Update)] + [Authorize(EventHubPermissions.Events.Update)] public async Task UpdateAsync(Guid id, UpdateEventDto input) { var @event = await _eventRepository.GetAsync(id); diff --git a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs index ca2acff..bdcee4f 100644 --- a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs +++ b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs @@ -10,10 +10,11 @@ using Volo.Abp.Identity; using EventHub.Events.Registrations; using Microsoft.AspNetCore.Authorization; using EventHub.Events; +using Volo.Abp; namespace EventHub.Admin.Events.Registrations { - //[Authorize(EventHubPermissions.Events.Registrations.Default)] + [Authorize(EventHubPermissions.Events.Registrations.Default)] public class EventRegistrationAppService : EventHubAdminAppService, IEventRegistrationAppService { private readonly IRepository _userRepository; @@ -21,7 +22,6 @@ namespace EventHub.Admin.Events.Registrations private readonly IRepository _eventRepository; private readonly EventRegistrationManager _eventRegistrationManager; - public EventRegistrationAppService( IRepository userRepository, IRepository eventRegistrationRepository, @@ -61,16 +61,13 @@ namespace EventHub.Admin.Events.Registrations ); } - //[Authorize(EventHubPermissions.Events.Registrations.RemoveAttendee)] - public async Task RemoveAttendeeAsync(Guid eventId, Guid attendeeId) + [Authorize(EventHubPermissions.Events.Registrations.RemoveAttendee)] + public async Task UnRegisterAttendeeAsync(Guid eventId, Guid attendeeId) { - await _eventRegistrationManager.UnregisterAsync( - await _eventRepository.GetAsync(eventId), - await _userRepository.GetAsync(attendeeId) - ); + await _eventRegistrationRepository.DeleteAsync(x => x.EventId == eventId && x.UserId == attendeeId); } - //[Authorize(EventHubPermissions.Events.Registrations.AddAttendee)] + [Authorize(EventHubPermissions.Events.Registrations.AddAttendee)] public async Task RegisterUsersAsync(Guid eventId, List userIds) { if (userIds == null || !userIds.Any()) @@ -83,11 +80,15 @@ namespace EventHub.Admin.Events.Registrations var userQueryable = await _userRepository.GetQueryableAsync(); var query = userQueryable.Where(user => userIds.Contains(user.Id)); + await CheckEventCapacityAsync(@event); + var users = await AsyncExecuter.ToListAsync(query); - foreach (var user in users) { - await _eventRegistrationManager.RegisterAsync(@event, user); + if (!await _eventRegistrationManager.IsRegisteredAsync(@event, user)) + { + await _eventRegistrationRepository.InsertAsync(await _eventRegistrationManager.CreateAsync(@event.Id, user.Id)); + } } } @@ -104,5 +105,16 @@ namespace EventHub.Admin.Events.Registrations return await AsyncExecuter.ToListAsync(query); } + + private async Task CheckEventCapacityAsync(Event @event) + { + var registrationCount = await _eventRegistrationRepository.CountAsync(x => x.EventId == @event.Id); + + if (@event.Capacity != null && registrationCount >= @event.Capacity) + { + throw new BusinessException(EventHubErrorCodes.CapacityOfEventFull) + .WithData("EventTitle", @event.Title); + } + } } } diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs index a4edcca..7abd373 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/Registrations/EventRegistrationController.cs @@ -43,9 +43,9 @@ namespace EventHub.Admin.Controllers.Events.Registrations } [HttpDelete] - public Task RemoveAttendeeAsync(Guid eventId, Guid attendeeId) + public Task UnRegisterAttendeeAsync(Guid eventId, Guid attendeeId) { - return _eventRegistrationAppService.RemoveAttendeeAsync(eventId, attendeeId); + return _eventRegistrationAppService.UnRegisterAttendeeAsync(eventId, attendeeId); } } } diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs index 86380db..1e6aae1 100644 --- a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs @@ -73,7 +73,7 @@ namespace EventHub.Admin.Web.Pages } private async Task RemoveAttendeeAsync(EventAttendeeDto attendee) { - await EventRegistrationAppService.RemoveAttendeeAsync(EventId, attendee.Id); + await EventRegistrationAppService.UnRegisterAttendeeAsync(EventId, attendee.Id); await GetAttendeesAsync(); } @@ -87,8 +87,13 @@ namespace EventHub.Admin.Web.Pages .Select(x => x.Key) .ToList(); - await EventRegistrationAppService.RegisterUsersAsync(EventId, selectedUserIds); + var removedAttendees = SelectedUserIds.Except(selectedUserIds).ToList(); + foreach (var attendeeId in removedAttendees) + { + await EventRegistrationAppService.UnRegisterAttendeeAsync(EventId, attendeeId); + } + await EventRegistrationAppService.RegisterUsersAsync(EventId, selectedUserIds); await UserPickerModalRef.CloseUserPickerModalAsync(); await GetAttendeesAsync(); diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor b/src/EventHub.Admin.Web/Pages/EventManagement.razor index aa0ecb1..8d6cee9 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor @@ -32,8 +32,14 @@ - @L["StartTime"] - + @L["MinStartTime"] + + + + + + @L["MaxEndTime"] + diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs index c42e142..05d3453 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs @@ -125,9 +125,15 @@ namespace EventHub.Admin.Web.Pages } } - private async Task OnSelectedDateChanged(DateTime? changedDate) + private async Task OnSelectedDateChangedForMinStartTime(DateTime? minStartTime) { - Filter.StartTime = changedDate; + Filter.MinStartTime = minStartTime; + await GetEventsAsync(); + } + + private async Task OnSelectedDateChangedForMaxStartTime(DateTime? maxStartTime) + { + Filter.MaxStartTime = maxStartTime; await GetEventsAsync(); } diff --git a/src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs b/src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs index 2938903..9579cbe 100644 --- a/src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs +++ b/src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs @@ -16,6 +16,11 @@ namespace EventHub.Events.Registrations _eventRegistrationRepository = eventRegistrationRepository; } + public async Task CreateAsync(Guid eventId, Guid userId) + { + return new EventRegistration(GuidGenerator.Create(), eventId, userId); + } + public async Task RegisterAsync( Event @event, IdentityUser user) From f5c8c2ffdaab160b112357b9bf5fd7df7ec19952 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Wed, 18 Aug 2021 15:06:15 +0300 Subject: [PATCH 007/159] Admin: Refactoring --- .../Events/EventListFilterDto.cs | 3 --- .../EventHubPermissionDefinitionProvider.cs | 8 +++++--- .../Permissions/EventHubPermissions.cs | 5 +++++ .../Users/UserAppService.cs | 4 +++- src/EventHub.Admin.HttpApi.Host/appsettings.json | 4 ++++ .../Components/UserPicker/UserPicker.razor | 4 ++-- src/EventHub.Admin.Web/Pages/AttendeeDetail.razor | 2 +- src/EventHub.Admin.Web/Pages/EventManagement.razor | 14 +++++--------- .../Pages/EventManagement.razor.cs | 8 +++++++- .../Localization/EventHub/en.json | 2 +- src/EventHub.HttpApi.Host/appsettings.json | 8 ++++++++ src/EventHub.IdentityServer/appsettings.json | 10 +++++++++- 12 files changed, 50 insertions(+), 22 deletions(-) diff --git a/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs b/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs index 08fed91..bf5cb36 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/EventListFilterDto.cs @@ -7,11 +7,8 @@ namespace EventHub.Admin.Events { public DateTime? MinStartTime { get; set; } public DateTime? MaxStartTime { get; set; } - public string Title { get; set; } - public string OrganizationDisplayName { get; set; } - public int? MinAttendeeCount { get; set; } public int? MaxAttendeeCount { get; set; } } diff --git a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs index 7e2e6b0..546274e 100644 --- a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs +++ b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissionDefinitionProvider.cs @@ -19,9 +19,11 @@ namespace EventHub.Admin.Permissions var eventPermissions = eventHubGroup.AddPermission(EventHubPermissions.Events.Default, L("Permission:EventManagement")); eventPermissions.AddChild(EventHubPermissions.Events.Update, L("Permission:Edit")); - var eventRegistrationPermission = eventHubGroup.AddPermission(EventHubPermissions.Events.Registrations.Default, L("Permission:RegistrationManagement")); - eventRegistrationPermission.AddChild(EventHubPermissions.Events.Registrations.AddAttendee, L("Permission:AddAttendee")); - eventRegistrationPermission.AddChild(EventHubPermissions.Events.Registrations.RemoveAttendee, L("Permission:RemoveAttendee")); + var eventRegistrationPermissions = eventHubGroup.AddPermission(EventHubPermissions.Events.Registrations.Default, L("Permission:RegistrationManagement")); + eventRegistrationPermissions.AddChild(EventHubPermissions.Events.Registrations.AddAttendee, L("Permission:AddAttendee")); + eventRegistrationPermissions.AddChild(EventHubPermissions.Events.Registrations.RemoveAttendee, L("Permission:RemoveAttendee")); + + var userPermissions = eventHubGroup.AddPermission(EventHubPermissions.Users.Default, L("Permission:UserManagement")); } private static LocalizableString L(string name) diff --git a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs index 98ff749..f8d9f10 100644 --- a/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs +++ b/src/EventHub.Admin.Application.Contracts/Permissions/EventHubPermissions.cs @@ -29,5 +29,10 @@ public const string RemoveAttendee = Default + ".RemoveAttendee"; } } + + public static class Users + { + public const string Default = GroupName + ".Users"; + } } } \ No newline at end of file diff --git a/src/EventHub.Admin.Application/Users/UserAppService.cs b/src/EventHub.Admin.Application/Users/UserAppService.cs index 398e51b..0300bdb 100644 --- a/src/EventHub.Admin.Application/Users/UserAppService.cs +++ b/src/EventHub.Admin.Application/Users/UserAppService.cs @@ -3,12 +3,15 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading.Tasks; +using EventHub.Admin.Permissions; +using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; namespace EventHub.Admin.Users { + [Authorize(EventHubPermissions.Users.Default)] public class UserAppService : EventHubAdminAppService, IUserAppService { private readonly IRepository _identityUserRepository; @@ -35,7 +38,6 @@ namespace EventHub.Admin.Users query = query.PageBy(input); var users = await AsyncExecuter.ToListAsync(query); - return new PagedResultDto(totalCount, ObjectMapper.Map, List>(users)); } } diff --git a/src/EventHub.Admin.HttpApi.Host/appsettings.json b/src/EventHub.Admin.HttpApi.Host/appsettings.json index aca9ac1..9f60a10 100644 --- a/src/EventHub.Admin.HttpApi.Host/appsettings.json +++ b/src/EventHub.Admin.HttpApi.Host/appsettings.json @@ -10,5 +10,9 @@ "RequireHttpsMetadata": "true", "SwaggerClientId": "EventHub_Swagger", "SwaggerClientSecret": "1q2w3e*" + }, + "AppUrls": { + "Account": "https://localhost:44313", + "Admin": "https://localhost:44307" } } diff --git a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor index 2f089a3..9f44ecc 100644 --- a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor +++ b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor @@ -32,8 +32,8 @@ @if (SelectAllUsers.ContainsKey(context.Id)) - { - + { + } diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor index f99c45b..bc1f3d2 100644 --- a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor @@ -1,4 +1,4 @@ -@page "/events/{EventId:guid}/attendees" +@page "/event/{EventId:guid}/attendees" @using EventHub.Admin.Web.Components.UserPicker @using EventHub.Admin.Events.Registrations @using EventHub.Admin.Permissions diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor b/src/EventHub.Admin.Web/Pages/EventManagement.razor index 8d6cee9..19c70b8 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor @@ -3,6 +3,7 @@ @using EventHub.Admin.Permissions @using EventHub.Admin.Events @using EventHub.Events +@using Volo.Abp.AspNetCore.Components.Notifications @inherits EventHubComponentBase @attribute [Authorize(EventHubPermissions.Events.Default)] @inject IEventAppService EventAppService @@ -10,12 +11,10 @@ - @* ************************* PAGE HEADER ************************* *@

@L["Events"]

- @* ************************* SEARCH ************************* *@
@@ -57,7 +56,6 @@
- @* ************************* DATA GRID ************************* *@ @@ -107,8 +105,6 @@
-@* ************************* EDIT MODAL ************************* *@ -
@@ -177,7 +173,7 @@ { - @L["OnlineLink"] + @L["OnlineLink"] * @@ -190,7 +186,7 @@ { - @L["Country"] + @L["Country"] * - Online - In Person + @L["Online"] + @L["InPerson"] diff --git a/src/EventHub.Domain.Shared/Localization/EventHub/en.json b/src/EventHub.Domain.Shared/Localization/EventHub/en.json index 54e484e..7f48d9f 100644 --- a/src/EventHub.Domain.Shared/Localization/EventHub/en.json +++ b/src/EventHub.Domain.Shared/Localization/EventHub/en.json @@ -127,7 +127,7 @@ "UpdateEvent": "Update Event", "EventInfo": "Event Info", "Timing": "Timing", - "IsOnline": "Is Online?", + "IsOnline": "Is Online", "OnlineLink": "Online Link", "Country": "Country", "City": "City", @@ -143,6 +143,13 @@ "RemoveUser": "Remove User", "AddAttendee": "Add Attendee", "AddUser": "Add User", - "CountryAndCityRequiredForUpdateInPersonEvent": "You need to select a country and city to update the event." + "CountryAndCityRequiredForUpdateInPersonEvent": "You need to select a country and city to update the event.", + "Permission:UserManagement": "User Management", + "Cancel": "Cancel", + "Save": "Save", + "MinStartTime": "Min Start Time", + "MaxStartTime": "Max Start Time", + "Online": "Online", + "InPerson": "In Person" } } From f2b0b09ac27218e935c9e80ef2a9f61682f80847 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Thu, 19 Aug 2021 10:27:19 +0300 Subject: [PATCH 009/159] Update EventAppService.cs --- src/EventHub.Admin.Application/Events/EventAppService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EventHub.Admin.Application/Events/EventAppService.cs b/src/EventHub.Admin.Application/Events/EventAppService.cs index 134f943..19617d6 100644 --- a/src/EventHub.Admin.Application/Events/EventAppService.cs +++ b/src/EventHub.Admin.Application/Events/EventAppService.cs @@ -125,7 +125,7 @@ namespace EventHub.Admin.Events private async Task SetCoverImageAsync(string blobName, byte[] coverImageContent, bool overrideExisting = true) { - await _eventBlobContainer.SaveAsync(blobName, coverImageContent, overrideExisting: true); + await _eventBlobContainer.SaveAsync(blobName, coverImageContent, overrideExisting); } } } From 3e56839f9caec9fbc1cdd85aca9180ff7910353b Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 19 Aug 2021 12:14:27 +0300 Subject: [PATCH 010/159] Admin: Refactoring --- .../Events/Registrations/EventAttendeeDto.cs | 5 +++-- .../EventHubApplicationAutoMapperProfile.cs | 7 ++++-- .../EventRegistrationAppService.cs | 18 +-------------- .../appsettings.json | 4 ---- .../Pages/AttendeeDetail.razor.cs | 2 +- .../Pages/EventManagement.razor.cs | 22 +++++++++---------- .../Registrations/EventRegistrationManager.cs | 5 ----- src/EventHub.HttpApi.Host/appsettings.json | 8 ------- src/EventHub.IdentityServer/appsettings.json | 10 +-------- 9 files changed, 22 insertions(+), 59 deletions(-) diff --git a/src/EventHub.Admin.Application.Contracts/Events/Registrations/EventAttendeeDto.cs b/src/EventHub.Admin.Application.Contracts/Events/Registrations/EventAttendeeDto.cs index 3de0a42..60faf5a 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/Registrations/EventAttendeeDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/Registrations/EventAttendeeDto.cs @@ -1,10 +1,11 @@ using System; -using Volo.Abp.Application.Dtos; namespace EventHub.Admin.Events.Registrations { - public class EventAttendeeDto : EntityDto + public class EventAttendeeDto { + public Guid UserId { get; set; } + public string UserName { get; set; } public string Email { get; set; } diff --git a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs index e3b9bbb..8109698 100644 --- a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs +++ b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs @@ -13,7 +13,7 @@ using Volo.Abp.Identity; namespace EventHub.Admin { - public class EventHubAdminApplicationAutoMapperProfile : Profile + public class EventHubAdminApplicationAutoMapperProfile : Profile { public EventHubAdminApplicationAutoMapperProfile() { @@ -31,7 +31,10 @@ namespace EventHub.Admin CreateMap(); - CreateMap(); + CreateMap() + .ForMember(eventAttendee => eventAttendee.UserId, + opt => opt.MapFrom(user => user.Id)); + CreateMap(); } } diff --git a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs index bdcee4f..d9140ea 100644 --- a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs +++ b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs @@ -80,15 +80,10 @@ namespace EventHub.Admin.Events.Registrations var userQueryable = await _userRepository.GetQueryableAsync(); var query = userQueryable.Where(user => userIds.Contains(user.Id)); - await CheckEventCapacityAsync(@event); - var users = await AsyncExecuter.ToListAsync(query); foreach (var user in users) { - if (!await _eventRegistrationManager.IsRegisteredAsync(@event, user)) - { - await _eventRegistrationRepository.InsertAsync(await _eventRegistrationManager.CreateAsync(@event.Id, user.Id)); - } + await _eventRegistrationManager.RegisterAsync(@event, user); } } @@ -105,16 +100,5 @@ namespace EventHub.Admin.Events.Registrations return await AsyncExecuter.ToListAsync(query); } - - private async Task CheckEventCapacityAsync(Event @event) - { - var registrationCount = await _eventRegistrationRepository.CountAsync(x => x.EventId == @event.Id); - - if (@event.Capacity != null && registrationCount >= @event.Capacity) - { - throw new BusinessException(EventHubErrorCodes.CapacityOfEventFull) - .WithData("EventTitle", @event.Title); - } - } } } diff --git a/src/EventHub.Admin.HttpApi.Host/appsettings.json b/src/EventHub.Admin.HttpApi.Host/appsettings.json index 9f60a10..aca9ac1 100644 --- a/src/EventHub.Admin.HttpApi.Host/appsettings.json +++ b/src/EventHub.Admin.HttpApi.Host/appsettings.json @@ -10,9 +10,5 @@ "RequireHttpsMetadata": "true", "SwaggerClientId": "EventHub_Swagger", "SwaggerClientSecret": "1q2w3e*" - }, - "AppUrls": { - "Account": "https://localhost:44313", - "Admin": "https://localhost:44307" } } diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs index 1e6aae1..ac16813 100644 --- a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs +++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor.cs @@ -73,7 +73,7 @@ namespace EventHub.Admin.Web.Pages } private async Task RemoveAttendeeAsync(EventAttendeeDto attendee) { - await EventRegistrationAppService.UnRegisterAttendeeAsync(EventId, attendee.Id); + await EventRegistrationAppService.UnRegisterAttendeeAsync(EventId, attendee.UserId); await GetAttendeesAsync(); } diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs index 8f49e90..a0ed087 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs @@ -185,18 +185,18 @@ namespace EventHub.Admin.Web.Pages { Countries = await EventAppService.GetCountriesLookupAsync(); } - } - public enum EventEditTabs : byte - { - EventInfo, - Timing, - CoverImage - } + private enum EventEditTabs : byte + { + EventInfo, + Timing, + CoverImage + } - public class Language - { - public string Value { get; set; } - public string Text { get; set; } + private class Language + { + public string Value { get; set; } + public string Text { get; set; } + } } } diff --git a/src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs b/src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs index 9579cbe..2938903 100644 --- a/src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs +++ b/src/EventHub.Domain/Events/Registrations/EventRegistrationManager.cs @@ -16,11 +16,6 @@ namespace EventHub.Events.Registrations _eventRegistrationRepository = eventRegistrationRepository; } - public async Task CreateAsync(Guid eventId, Guid userId) - { - return new EventRegistration(GuidGenerator.Create(), eventId, userId); - } - public async Task RegisterAsync( Event @event, IdentityUser user) diff --git a/src/EventHub.HttpApi.Host/appsettings.json b/src/EventHub.HttpApi.Host/appsettings.json index 3732e15..aca9ac1 100644 --- a/src/EventHub.HttpApi.Host/appsettings.json +++ b/src/EventHub.HttpApi.Host/appsettings.json @@ -10,13 +10,5 @@ "RequireHttpsMetadata": "true", "SwaggerClientId": "EventHub_Swagger", "SwaggerClientSecret": "1q2w3e*" - }, - "AppUrls": { - "Account": "https://localhost:44313", - "Www": "https://localhost:44308", - "Api": "https://localhost:44362", - "ApiInternal": "https://localhost:44362", - "Admin": "https://localhost:44307", - "AdminApi": "https://localhost:44305" } } diff --git a/src/EventHub.IdentityServer/appsettings.json b/src/EventHub.IdentityServer/appsettings.json index 1f7275a..85f4ef3 100644 --- a/src/EventHub.IdentityServer/appsettings.json +++ b/src/EventHub.IdentityServer/appsettings.json @@ -4,13 +4,5 @@ }, "Redis": { "Configuration": "localhost" - }, - "AppUrls": { - "Account": "https://localhost:44313", - "Www": "https://localhost:44308", - "Api": "https://localhost:44362", - "ApiInternal": "https://localhost:44362", - "Admin": "https://localhost:44307", - "AdminApi": "https://localhost:44305" - } + } } From 1548c36ce90992a997ed96d975d5517fbb9eb154 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 19 Aug 2021 15:24:45 +0300 Subject: [PATCH 011/159] Admin: Create custom repositories for Event, EventRegistration and User --- .../EventHubApplicationAutoMapperProfile.cs | 5 + .../Events/EventAppService.cs | 55 +++------- .../EventRegistrationAppService.cs | 42 ++------ .../OrganizationMembershipAppService.cs | 7 +- .../Organizations/OrganizationAppService.cs | 5 +- .../Users/UserAppService.cs | 32 ++---- .../Events/EventAppService.cs | 13 +-- .../EventRegistrationAppService.cs | 14 +-- .../OrganizationMembershipAppService.cs | 13 +-- .../Organizations/OrganizationAppService.cs | 10 +- .../Users/UserAppService.cs | 4 +- .../Events/EventWithDetails.cs | 17 +++ .../Events/IEventRepository.cs | 34 ++++++ .../EventRegistrationWithDetails.cs | 20 ++++ .../IEventRegistrationRepository.cs | 21 ++++ src/EventHub.Domain/Users/IUserRepository.cs | 25 +++++ .../Events/EventRepository.cs | 102 ++++++++++++++++++ .../EventRegistrationRepository.cs | 61 +++++++++++ .../Users/UserRepository.cs | 43 ++++++++ 19 files changed, 396 insertions(+), 127 deletions(-) create mode 100644 src/EventHub.Domain/Events/EventWithDetails.cs create mode 100644 src/EventHub.Domain/Events/IEventRepository.cs create mode 100644 src/EventHub.Domain/Events/Registrations/EventRegistrationWithDetails.cs create mode 100644 src/EventHub.Domain/Events/Registrations/IEventRegistrationRepository.cs create mode 100644 src/EventHub.Domain/Users/IUserRepository.cs create mode 100644 src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Events/EventRepository.cs create mode 100644 src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Events/Registrations/EventRegistrationRepository.cs create mode 100644 src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Users/UserRepository.cs diff --git a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs index 8109698..0779f1e 100644 --- a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs +++ b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs @@ -6,6 +6,7 @@ using EventHub.Admin.Organizations.Memberships; using EventHub.Admin.Users; using EventHub.Countries; using EventHub.Events; +using EventHub.Events.Registrations; using EventHub.Organizations; using EventHub.Organizations.Memberships; using Volo.Abp.AutoMapper; @@ -36,6 +37,10 @@ namespace EventHub.Admin opt => opt.MapFrom(user => user.Id)); CreateMap(); + + CreateMap(); + + CreateMap(); } } } diff --git a/src/EventHub.Admin.Application/Events/EventAppService.cs b/src/EventHub.Admin.Application/Events/EventAppService.cs index 19617d6..daf2b16 100644 --- a/src/EventHub.Admin.Application/Events/EventAppService.cs +++ b/src/EventHub.Admin.Application/Events/EventAppService.cs @@ -6,8 +6,6 @@ using System.Threading.Tasks; using EventHub.Admin.Permissions; using EventHub.Countries; using EventHub.Events; -using EventHub.Events.Registrations; -using EventHub.Organizations; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.BlobStoring; @@ -18,25 +16,18 @@ namespace EventHub.Admin.Events [Authorize(EventHubPermissions.Events.Default)] public class EventAppService : EventHubAdminAppService, IEventAppService { - private readonly IRepository _eventRepository; - private readonly IRepository _eventRegistrationRepository; - private readonly IRepository _organizationRepository; + private readonly IEventRepository _eventRepository; private readonly IBlobContainer _eventBlobContainer; private readonly EventManager _eventManager; private readonly IRepository _countryRepository; - public EventAppService( - IRepository eventRepository, - IRepository eventRegistrationRepository, - IRepository organizationRepository, + IEventRepository eventRepository, IBlobContainer eventBlobContainer, - EventManager eventManager, + EventManager eventManager, IRepository countryRepository) { _eventRepository = eventRepository; - _eventRegistrationRepository = eventRegistrationRepository; - _organizationRepository = organizationRepository; _eventBlobContainer = eventBlobContainer; _eventManager = eventManager; _countryRepository = countryRepository; @@ -54,34 +45,14 @@ namespace EventHub.Admin.Events public async Task> GetListAsync(EventListFilterDto input) { - var eventQueryable = await _eventRepository.GetQueryableAsync(); - var eventRegistrationQueryable = await _eventRegistrationRepository.GetQueryableAsync(); - var organizationQueryable = await _organizationRepository.GetQueryableAsync(); - - var query = (from @event in eventQueryable - join organization in organizationQueryable on @event.OrganizationId equals organization.Id - select new EventInListDto - { - Id = @event.Id, - Title = @event.Title, - StartTime = @event.StartTime, - OrganizationDisplayName = organization.DisplayName, - AttendeeCount = (from eventRegistration in eventRegistrationQueryable - where eventRegistration.EventId == @event.Id - select @eventRegistration).Count() - }) - .WhereIf(!string.IsNullOrWhiteSpace(input.Title), x => x.Title.ToLower().Contains(input.Title.ToLower())) - .WhereIf(!string.IsNullOrWhiteSpace(input.OrganizationDisplayName), x => x.OrganizationDisplayName.ToLower().Contains(input.OrganizationDisplayName.ToLower())) - .WhereIf(input.MinStartTime.HasValue, x => x.StartTime >= input.MinStartTime) - .WhereIf(input.MaxStartTime.HasValue, x => x.StartTime <= input.MaxStartTime) - .WhereIf(input.MinAttendeeCount.HasValue, x => x.AttendeeCount >= input.MinAttendeeCount) - .WhereIf(input.MaxAttendeeCount.HasValue, x => x.AttendeeCount <= input.MaxAttendeeCount); - - var totalCount = await AsyncExecuter.CountAsync(query); - query = query.OrderBy(string.IsNullOrWhiteSpace(input.Sorting) ? EventConsts.DefaultSorting : input.Sorting); - query = query.PageBy(input); - - var events = await AsyncExecuter.ToListAsync(query); + var totalCount = await _eventRepository.GetCountAsync(input.Title, input.OrganizationDisplayName, input.MinAttendeeCount, + input.MaxAttendeeCount, input.MinStartTime, input.MaxStartTime); + + var items = await _eventRepository.GetListAsync(input.Sorting, input.SkipCount, input.MaxResultCount, + input.Title, input.OrganizationDisplayName, input.MinAttendeeCount, input.MaxAttendeeCount, + input.MinStartTime, input.MaxStartTime); + + var events = ObjectMapper.Map, List>(items); return new PagedResultDto(totalCount, events); } @@ -115,8 +86,8 @@ namespace EventHub.Admin.Events var countriesQueryable = await _countryRepository.GetQueryableAsync(); var query = from country in countriesQueryable - orderby country.Name - select country; + orderby country.Name + select country; var countries = await AsyncExecuter.ToListAsync(query); diff --git a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs index d9140ea..26495c5 100644 --- a/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs +++ b/src/EventHub.Admin.Application/Events/Registrations/EventRegistrationAppService.cs @@ -5,27 +5,25 @@ using System.Linq.Dynamic.Core; using System.Threading.Tasks; using EventHub.Admin.Permissions; using Volo.Abp.Application.Dtos; -using Volo.Abp.Domain.Repositories; -using Volo.Abp.Identity; using EventHub.Events.Registrations; using Microsoft.AspNetCore.Authorization; using EventHub.Events; -using Volo.Abp; +using EventHub.Users; namespace EventHub.Admin.Events.Registrations { [Authorize(EventHubPermissions.Events.Registrations.Default)] public class EventRegistrationAppService : EventHubAdminAppService, IEventRegistrationAppService { - private readonly IRepository _userRepository; - private readonly IRepository _eventRegistrationRepository; - private readonly IRepository _eventRepository; + private readonly IUserRepository _userRepository; + private readonly IEventRegistrationRepository _eventRegistrationRepository; + private readonly IEventRepository _eventRepository; private readonly EventRegistrationManager _eventRegistrationManager; public EventRegistrationAppService( - IRepository userRepository, - IRepository eventRegistrationRepository, - IRepository eventRepository, + IUserRepository userRepository, + IEventRegistrationRepository eventRegistrationRepository, + IEventRepository eventRepository, EventRegistrationManager eventRegistrationManager) { _userRepository = userRepository; @@ -36,29 +34,11 @@ namespace EventHub.Admin.Events.Registrations public async Task> GetAttendeesAsync(GetEventRegistrationListInput input) { - var eventRegistrationQueryable = await _eventRegistrationRepository.GetQueryableAsync(); - var userQueryable = await _userRepository.GetQueryableAsync(); - - var query = from eventRegistration in eventRegistrationQueryable - join user in userQueryable on eventRegistration.UserId equals user.Id - where eventRegistration.EventId == input.EventId - orderby eventRegistration.CreationTime descending - select user; - - var totalCount = await AsyncExecuter.CountAsync(query); - - if (!string.IsNullOrWhiteSpace(input.Sorting)) - { - query = query.OrderBy(input.Sorting); - } - - query = query.PageBy(input); - var users = await AsyncExecuter.ToListAsync(query.Take(10)); + var totalCount = await _eventRegistrationRepository.GetCountAsync(input.EventId); + var items = await _eventRegistrationRepository.GetListAsync(input.EventId, input.Sorting, input.SkipCount, input.MaxResultCount); + var users = ObjectMapper.Map, List>(items); - return new PagedResultDto( - totalCount, - ObjectMapper.Map, List>(users) - ); + return new PagedResultDto(totalCount, users); } [Authorize(EventHubPermissions.Events.Registrations.RemoveAttendee)] diff --git a/src/EventHub.Admin.Application/Organizations/Memberships/OrganizationMembershipAppService.cs b/src/EventHub.Admin.Application/Organizations/Memberships/OrganizationMembershipAppService.cs index b97d381..afba9ec 100644 --- a/src/EventHub.Admin.Application/Organizations/Memberships/OrganizationMembershipAppService.cs +++ b/src/EventHub.Admin.Application/Organizations/Memberships/OrganizationMembershipAppService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using EventHub.Admin.Permissions; using EventHub.Organizations.Memberships; +using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -17,11 +18,11 @@ namespace EventHub.Admin.Organizations.Memberships public class OrganizationMembershipAppService : ApplicationService, IOrganizationMembershipAppService { private readonly IOrganizationMembershipRepository _organizationMembershipRepository; - private readonly IRepository _userRepository; + private readonly IUserRepository _userRepository; public OrganizationMembershipAppService( - IOrganizationMembershipRepository organizationMembershipRepository, - IRepository userRepository) + IOrganizationMembershipRepository organizationMembershipRepository, + IUserRepository userRepository) { _organizationMembershipRepository = organizationMembershipRepository; _userRepository = userRepository; diff --git a/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs b/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs index df3794c..4e21c4e 100644 --- a/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs +++ b/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs @@ -5,6 +5,7 @@ using System.Linq.Dynamic.Core; using System.Threading.Tasks; using EventHub.Admin.Permissions; using EventHub.Organizations; +using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -18,12 +19,12 @@ namespace EventHub.Admin.Organizations public class OrganizationAppService : EventHubAdminAppService, IOrganizationAppService { private readonly IRepository _organizationRepository; - private readonly IRepository _identityUserRepository; + private readonly IUserRepository _identityUserRepository; private readonly IBlobContainer _organizationBlobContainer; public OrganizationAppService( IRepository organizationRepository, - IRepository identityUserRepository, + IUserRepository identityUserRepository, IBlobContainer organizationBlobContainer) { _organizationRepository = organizationRepository; diff --git a/src/EventHub.Admin.Application/Users/UserAppService.cs b/src/EventHub.Admin.Application/Users/UserAppService.cs index 0300bdb..8af8994 100644 --- a/src/EventHub.Admin.Application/Users/UserAppService.cs +++ b/src/EventHub.Admin.Application/Users/UserAppService.cs @@ -1,12 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Dynamic.Core; +using System.Collections.Generic; using System.Threading.Tasks; using EventHub.Admin.Permissions; +using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; -using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; namespace EventHub.Admin.Users @@ -14,31 +11,20 @@ namespace EventHub.Admin.Users [Authorize(EventHubPermissions.Users.Default)] public class UserAppService : EventHubAdminAppService, IUserAppService { - private readonly IRepository _identityUserRepository; + private readonly IUserRepository _userRepository; - public UserAppService(IRepository identityUserRepository) + public UserAppService(IUserRepository userRepository) { - _identityUserRepository = identityUserRepository; + _userRepository = userRepository; } public async Task> GetListAsync(GetUserListInput input) { - var identityUserQueryable = await _identityUserRepository.GetQueryableAsync(); + var totalCount = await _userRepository.GetCountAsync(input.Username); + var items = await _userRepository.GetListAsync(input.Sorting, input.SkipCount, input.MaxResultCount, input.Username); + var users = ObjectMapper.Map, List>(items); - var query = identityUserQueryable - .WhereIf(!string.IsNullOrWhiteSpace(input.Username), user => user.UserName.ToLower().Contains(input.Username.ToLower())); - - var totalCount = await AsyncExecuter.CountAsync(query); - - if (!string.IsNullOrWhiteSpace(input.Sorting)) - { - query = query.OrderBy(input.Sorting); - } - - query = query.PageBy(input); - - var users = await AsyncExecuter.ToListAsync(query); - return new PagedResultDto(totalCount, ObjectMapper.Map, List>(users)); + return new PagedResultDto(totalCount, users); } } } diff --git a/src/EventHub.Application/Events/EventAppService.cs b/src/EventHub.Application/Events/EventAppService.cs index ff14e70..a116920 100644 --- a/src/EventHub.Application/Events/EventAppService.cs +++ b/src/EventHub.Application/Events/EventAppService.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using EventHub.Countries; using EventHub.Events.Registrations; using EventHub.Organizations; +using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Authorization; @@ -19,20 +20,20 @@ namespace EventHub.Events { private readonly EventManager _eventManager; private readonly EventRegistrationManager _eventRegistrationManager; - private readonly IRepository _eventRegistrationRepository; - private readonly IRepository _eventRepository; + private readonly IEventRegistrationRepository _eventRegistrationRepository; + private readonly IEventRepository _eventRepository; private readonly IRepository _organizationRepository; - private readonly IRepository _userRepository; + private readonly IUserRepository _userRepository; private readonly IRepository _countriesRepository; private readonly IBlobContainer _eventBlobContainer; public EventAppService( EventManager eventManager, EventRegistrationManager eventRegistrationManager, - IRepository eventRegistrationRepository, - IRepository eventRepository, + IEventRegistrationRepository eventRegistrationRepository, + IEventRepository eventRepository, IRepository organizationRepository, - IRepository userRepository, + IUserRepository userRepository, IRepository countriesRepository, IBlobContainer eventBlobContainer) { diff --git a/src/EventHub.Application/Events/Registrations/EventRegistrationAppService.cs b/src/EventHub.Application/Events/Registrations/EventRegistrationAppService.cs index 1197a5a..32637ba 100644 --- a/src/EventHub.Application/Events/Registrations/EventRegistrationAppService.cs +++ b/src/EventHub.Application/Events/Registrations/EventRegistrationAppService.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; -using Volo.Abp.Domain.Repositories; using Volo.Abp.Users; using Volo.Abp.Identity; @@ -13,16 +13,16 @@ namespace EventHub.Events.Registrations public class EventRegistrationAppService : EventHubAppService, IEventRegistrationAppService { private readonly EventRegistrationManager _eventRegistrationManager; - private readonly IRepository _userRepository; - private readonly IRepository _eventRepository; - private readonly IRepository _eventRegistrationRepository; + private readonly IUserRepository _userRepository; + private readonly IEventRepository _eventRepository; + private readonly IEventRegistrationRepository _eventRegistrationRepository; private readonly EventRegistrationNotifier _eventRegistrationNotifier; public EventRegistrationAppService( EventRegistrationManager eventRegistrationManager, - IRepository userRepository, - IRepository eventRepository, - IRepository eventRegistrationRepository, + IUserRepository userRepository, + IEventRepository eventRepository, + IEventRegistrationRepository eventRegistrationRepository, EventRegistrationNotifier eventRegistrationNotifier) { _eventRegistrationManager = eventRegistrationManager; diff --git a/src/EventHub.Application/Organizations/Memberships/OrganizationMembershipAppService.cs b/src/EventHub.Application/Organizations/Memberships/OrganizationMembershipAppService.cs index d6a43ea..05375c9 100644 --- a/src/EventHub.Application/Organizations/Memberships/OrganizationMembershipAppService.cs +++ b/src/EventHub.Application/Organizations/Memberships/OrganizationMembershipAppService.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Repositories; @@ -13,15 +14,15 @@ namespace EventHub.Organizations.Memberships public class OrganizationMembershipAppService : EventHubAppService, IOrganizationMembershipAppService { private readonly OrganizationMembershipManager _organizationMembershipManager; - private readonly IRepository _userRepository; + private readonly IUserRepository _userRepository; private readonly IRepository _organizationRepository; - private readonly IRepository _organizationMembershipsRepository; + private readonly IOrganizationMembershipRepository _organizationMembershipsRepository; public OrganizationMembershipAppService( - OrganizationMembershipManager organizationMembershipManager, - IRepository userRepository, - IRepository organizationRepository, - IRepository organizationMembershipsRepository) + OrganizationMembershipManager organizationMembershipManager, + IUserRepository userRepository, + IRepository organizationRepository, + IOrganizationMembershipRepository organizationMembershipsRepository) { _organizationMembershipManager = organizationMembershipManager; _userRepository = userRepository; diff --git a/src/EventHub.Application/Organizations/OrganizationAppService.cs b/src/EventHub.Application/Organizations/OrganizationAppService.cs index a53573f..7d36f4c 100644 --- a/src/EventHub.Application/Organizations/OrganizationAppService.cs +++ b/src/EventHub.Application/Organizations/OrganizationAppService.cs @@ -17,17 +17,17 @@ namespace EventHub.Organizations public class OrganizationAppService : EventHubAppService, IOrganizationAppService { private readonly IRepository _organizationRepository; - private readonly IRepository _organizationMembershipsRepository; + private readonly IOrganizationMembershipRepository _organizationMembershipsRepository; private readonly OrganizationManager _organizationManager; private readonly IBlobContainer _organizationBlobContainer; - private readonly IRepository _userRepository; + private readonly IUserRepository _userRepository; public OrganizationAppService( IRepository organizationRepository, - IRepository organizationMembershipsRepository, + IOrganizationMembershipRepository organizationMembershipsRepository, OrganizationManager organizationManager, - IBlobContainer organizationBlobContainer, - IRepository userRepository) + IBlobContainer organizationBlobContainer, + IUserRepository userRepository) { _organizationRepository = organizationRepository; _organizationMembershipsRepository = organizationMembershipsRepository; diff --git a/src/EventHub.Application/Users/UserAppService.cs b/src/EventHub.Application/Users/UserAppService.cs index 2481f18..42ed495 100644 --- a/src/EventHub.Application/Users/UserAppService.cs +++ b/src/EventHub.Application/Users/UserAppService.cs @@ -8,9 +8,9 @@ namespace EventHub.Users { public class UserAppService : EventHubAppService, IUserAppService { - private readonly IRepository _userRepository; + private readonly IUserRepository _userRepository; - public UserAppService(IRepository userRepository) + public UserAppService(IUserRepository userRepository) { _userRepository = userRepository; } diff --git a/src/EventHub.Domain/Events/EventWithDetails.cs b/src/EventHub.Domain/Events/EventWithDetails.cs new file mode 100644 index 0000000..c88055d --- /dev/null +++ b/src/EventHub.Domain/Events/EventWithDetails.cs @@ -0,0 +1,17 @@ +using System; + +namespace EventHub.Events +{ + public class EventWithDetails + { + public Guid Id { get; set; } + + public string Title { get; set; } + + public string OrganizationDisplayName { get; set; } + + public int AttendeeCount { get; set; } + + public DateTime StartTime { get; set; } + } +} diff --git a/src/EventHub.Domain/Events/IEventRepository.cs b/src/EventHub.Domain/Events/IEventRepository.cs new file mode 100644 index 0000000..4c3a528 --- /dev/null +++ b/src/EventHub.Domain/Events/IEventRepository.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; + +namespace EventHub.Events +{ + public interface IEventRepository : IRepository + { + Task GetCountAsync( + string title = null, + string organizationDisplayName = null, + int? minAttendeeCount = null, + int? maxAttendeeCount = null, + DateTime? minStartTime = null, + DateTime? maxStartTime = null, + CancellationToken cancellationToken = default + ); + + Task> GetListAsync( + string sorting = null, + int skipCount = 0, + int maxResultCount = int.MaxValue, + string title = null, + string organizationDisplayName = null, + int? minAttendeeCount = null, + int? maxAttendeeCount = null, + DateTime? minStartTime = null, + DateTime? maxStartTime = null, + CancellationToken cancellationToken = default + ); + } +} diff --git a/src/EventHub.Domain/Events/Registrations/EventRegistrationWithDetails.cs b/src/EventHub.Domain/Events/Registrations/EventRegistrationWithDetails.cs new file mode 100644 index 0000000..4c59921 --- /dev/null +++ b/src/EventHub.Domain/Events/Registrations/EventRegistrationWithDetails.cs @@ -0,0 +1,20 @@ +using System; +using Volo.Abp.Auditing; + +namespace EventHub.Events.Registrations +{ + public class EventRegistrationWithDetails : IHasCreationTime + { + public Guid UserId { get; set; } + + public string UserName { get; set; } + + public string Email { get; set; } + + public string Name { get; set; } + + public string Surname { get; set; } + + public DateTime CreationTime { get; set; } + } +} diff --git a/src/EventHub.Domain/Events/Registrations/IEventRegistrationRepository.cs b/src/EventHub.Domain/Events/Registrations/IEventRegistrationRepository.cs new file mode 100644 index 0000000..6348c29 --- /dev/null +++ b/src/EventHub.Domain/Events/Registrations/IEventRegistrationRepository.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; + +namespace EventHub.Events.Registrations +{ + public interface IEventRegistrationRepository : IRepository + { + Task GetCountAsync(Guid eventId, CancellationToken cancellationToken = default); + + Task> GetListAsync( + Guid eventId, + string sorting = null, + int skipCount = 0, + int maxResultCount = int.MaxValue, + CancellationToken cancellationToken = default + ); + } +} diff --git a/src/EventHub.Domain/Users/IUserRepository.cs b/src/EventHub.Domain/Users/IUserRepository.cs new file mode 100644 index 0000000..f9d07aa --- /dev/null +++ b/src/EventHub.Domain/Users/IUserRepository.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Identity; + +namespace EventHub.Users +{ + public interface IUserRepository : IRepository + { + Task> GetListAsync( + string sorting = null, + int skipCount = 0, + int maxResultCount = int.MaxValue, + string username = null, + CancellationToken cancellationToken = default + ); + + Task GetCountAsync( + string username = null, + CancellationToken cancellationToken = default + ); + } +} diff --git a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Events/EventRepository.cs b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Events/EventRepository.cs new file mode 100644 index 0000000..603824c --- /dev/null +++ b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Events/EventRepository.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Threading; +using System.Threading.Tasks; +using EventHub.Events; +using EventHub.Events.Registrations; +using EventHub.Organizations; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace EventHub.EntityFrameworkCore.Events +{ + public class EventRepository : EfCoreRepository, IEventRepository + { + public EventRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public async Task GetCountAsync( + string title = null, + string organizationDisplayName = null, + int? minAttendeeCount = null, + int? maxAttendeeCount = null, + DateTime? minStartTime = null, + DateTime? maxStartTime = null, + CancellationToken cancellationToken = default + ) + { + var dbContext = await GetDbContextAsync(); + + var eventQueryable = await GetQueryableAsync(); + var eventRegistrationQueryable = dbContext.Set().AsQueryable(); + var organizationQueryable = dbContext.Set().AsQueryable(); + + var query = (from @event in eventQueryable + join organization in organizationQueryable on @event.OrganizationId equals organization.Id + select new + { + Event = @event, + Organization = organization, + AttendeeCount = (from eventRegistration in eventRegistrationQueryable + where eventRegistration.EventId == @event.Id + select @eventRegistration).Count() + }) + .WhereIf(!string.IsNullOrWhiteSpace(title), x => x.Event.Title.ToLower().Contains(title.ToLower())) + .WhereIf(!string.IsNullOrWhiteSpace(organizationDisplayName), x => x.Organization.DisplayName.ToLower().Contains(organizationDisplayName.ToLower())) + .WhereIf(minStartTime.HasValue, x => x.Event.StartTime >= minStartTime) + .WhereIf(maxStartTime.HasValue, x => x.Event.StartTime <= maxStartTime) + .WhereIf(minAttendeeCount.HasValue, x => x.AttendeeCount >= minAttendeeCount) + .WhereIf(maxAttendeeCount.HasValue, x => x.AttendeeCount <= maxAttendeeCount); + + return await query.CountAsync(GetCancellationToken(cancellationToken)); + } + + public async Task> GetListAsync( + string sorting = null, + int skipCount = 0, + int maxResultCount = int.MaxValue, + string title = null, + string organizationDisplayName = null, + int? minAttendeeCount = null, + int? maxAttendeeCount = null, + DateTime? minStartTime = null, + DateTime? maxStartTime = null, + CancellationToken cancellationToken = default + ) + { + var dbContext = await GetDbContextAsync(); + + var eventQueryable = await GetQueryableAsync(); + var eventRegistrationQueryable = dbContext.Set().AsQueryable(); + var organizationQueryable = dbContext.Set().AsQueryable(); + + var query = (from @event in eventQueryable + join organization in organizationQueryable on @event.OrganizationId equals organization.Id + select new EventWithDetails + { + Id = @event.Id, + Title = @event.Title, + StartTime = @event.StartTime, + OrganizationDisplayName = organization.DisplayName, + AttendeeCount = (from eventRegistration in eventRegistrationQueryable + where eventRegistration.EventId == @event.Id + select @eventRegistration).Count() + }) + .WhereIf(!string.IsNullOrWhiteSpace(title), x => x.Title.ToLower().Contains(title.ToLower())) + .WhereIf(!string.IsNullOrWhiteSpace(organizationDisplayName), + x => x.OrganizationDisplayName.ToLower().Contains(organizationDisplayName.ToLower())) + .WhereIf(minStartTime.HasValue, x => x.StartTime >= minStartTime) + .WhereIf(maxStartTime.HasValue, x => x.StartTime <= maxStartTime) + .WhereIf(minAttendeeCount.HasValue, x => x.AttendeeCount >= minAttendeeCount) + .WhereIf(maxAttendeeCount.HasValue, x => x.AttendeeCount <= maxAttendeeCount) + .OrderBy(string.IsNullOrWhiteSpace(sorting) ? EventConsts.DefaultSorting : sorting) + .PageBy(skipCount, maxResultCount); + + return await query.ToListAsync(GetCancellationToken(cancellationToken)); + } + } +} diff --git a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Events/Registrations/EventRegistrationRepository.cs b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Events/Registrations/EventRegistrationRepository.cs new file mode 100644 index 0000000..79807fb --- /dev/null +++ b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Events/Registrations/EventRegistrationRepository.cs @@ -0,0 +1,61 @@ +using EventHub.Events.Registrations; +using System; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.Identity; + +namespace EventHub.EntityFrameworkCore.Events.Registrations +{ + public class EventRegistrationRepository : EfCoreRepository, IEventRegistrationRepository + { + public EventRegistrationRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public async Task GetCountAsync(Guid eventId, CancellationToken cancellationToken = default) + { + var userQueryable = (await GetDbContextAsync()).Set().AsQueryable(); + + var query = from eventRegistration in (await GetQueryableAsync()) + join user in userQueryable on eventRegistration.UserId equals user.Id + where eventRegistration.EventId == eventId + select user; + + return await query.CountAsync(GetCancellationToken(cancellationToken)); + } + + public async Task> GetListAsync( + Guid eventId, + string sorting = null, + int skipCount = 0, + int maxResultCount = int.MaxValue, + CancellationToken cancellationToken = default + ) + { + var userQueryable = (await GetDbContextAsync()).Set().AsQueryable(); + + var query = (from eventRegistration in (await GetQueryableAsync()) + join user in userQueryable on eventRegistration.UserId equals user.Id + where eventRegistration.EventId == eventId + select new EventRegistrationWithDetails + { + UserId = user.Id, + Name = user.Name, + Surname = user.Surname, + UserName = user.UserName, + Email = user.Email, + CreationTime = user.CreationTime + }) + .OrderBy(string.IsNullOrWhiteSpace(sorting) ? nameof(EventRegistrationWithDetails.CreationTime) : sorting) + .PageBy(skipCount, maxResultCount); + + return await query.ToListAsync(GetCancellationToken(cancellationToken)); + } + } +} diff --git a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Users/UserRepository.cs b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Users/UserRepository.cs new file mode 100644 index 0000000..0e684b3 --- /dev/null +++ b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/Users/UserRepository.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Threading; +using System.Threading.Tasks; +using EventHub.Users; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.Identity; + +namespace EventHub.EntityFrameworkCore.Users +{ + public class UserRepository : EfCoreRepository, IUserRepository + { + public UserRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public async Task GetCountAsync(string username = null, CancellationToken cancellationToken = default) + { + return await (await GetQueryableAsync()) + .WhereIf(!string.IsNullOrWhiteSpace(username), user => user.UserName.ToLower().Contains(username.ToLower())) + .CountAsync(GetCancellationToken(cancellationToken)); + } + + public async Task> GetListAsync( + string sorting = null, + int skipCount = 0, + int maxResultCount = int.MaxValue, + string username = null, + CancellationToken cancellationToken = default + ) + { + return await (await GetQueryableAsync()) + .WhereIf(!string.IsNullOrWhiteSpace(username), user => user.UserName.ToLower().Contains(username.ToLower())) + .OrderBy(string.IsNullOrWhiteSpace(sorting) ? nameof(IdentityUser.CreationTime) : sorting) + .PageBy(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + } +} From b33668f1b2a7fab832b632850cf609e7000ad496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 20 Aug 2021 14:30:13 +0300 Subject: [PATCH 012/159] Update README.md --- etc/k8s/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/etc/k8s/README.md b/etc/k8s/README.md index 7810dae..396ba56 100644 --- a/etc/k8s/README.md +++ b/etc/k8s/README.md @@ -16,6 +16,7 @@ ```` * Run `build-images.ps1` in the `scripts` directory. -* Run `helm install eh-st eventhub` in the `helm-chart` directory. +* Run `deploy-staging.ps1` in the `helm-chart` directory. It is deployed with the `eventhub` namespace. +* *You may wait ~30 seconds on first run for preparing the database*. * Browse https://eh-st-www and https://eh-st-admin * Username: `admin`, password: `1q2w3E*`. From 87a531bdd5bd669957764381ac4eb5fc00608f74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 20 Aug 2021 14:30:31 +0300 Subject: [PATCH 013/159] Update EventHub.Admin.Web.csproj --- src/EventHub.Admin.Web/EventHub.Admin.Web.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj index aaa7547..63e7ffa 100644 --- a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj +++ b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj @@ -3,7 +3,6 @@ net5.0 true - false From d6b0ca34ea931a7365b5c9a92c5a1c16967438e5 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Fri, 27 Aug 2021 17:03:40 +0300 Subject: [PATCH 014/159] refactor(EventHub.Web): Use IRemoteContentStream instead of byte for Organization --- .../Organizations/CreateOrganizationDto.cs | 3 +- .../Organizations/IOrganizationAppService.cs | 3 + .../Organizations/OrganizationInListDto.cs | 2 - .../Organizations/OrganizationProfileDto.cs | 2 - .../Organizations/UpdateOrganizationDto.cs | 3 +- .../Organizations/OrganizationAppService.cs | 63 +++++++++--------- .../Organizations/OrganizationController.cs | 27 +++++++- .../ProfilePictures/eh-organization.png | Bin 0 -> 556910 bytes .../EventHub.HttpApi.Host.csproj | 1 + .../EventHubHttpApiHostModule.cs | 25 +++++-- .../_organizationListSection.cshtml | 15 ++--- .../Pages/Organizations/Edit.cshtml | 12 ++-- .../Pages/Organizations/Edit.cshtml.cs | 19 +++--- .../Pages/Organizations/New.cshtml.cs | 22 +++--- .../Pages/Organizations/Profile.cshtml | 12 ++-- 15 files changed, 121 insertions(+), 88 deletions(-) create mode 100644 src/EventHub.HttpApi.Host/Controllers/Organizations/ProfilePictures/eh-organization.png diff --git a/src/EventHub.Application.Contracts/Organizations/CreateOrganizationDto.cs b/src/EventHub.Application.Contracts/Organizations/CreateOrganizationDto.cs index 08cb45a..32560d1 100644 --- a/src/EventHub.Application.Contracts/Organizations/CreateOrganizationDto.cs +++ b/src/EventHub.Application.Contracts/Organizations/CreateOrganizationDto.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using JetBrains.Annotations; +using Volo.Abp.Content; namespace EventHub.Organizations { @@ -18,7 +19,7 @@ namespace EventHub.Organizations public string Description { get; set; } [CanBeNull] - public byte[] ProfilePictureContent { get; set; } + public RemoteStreamContent ProfilePictureStreamContent { get; set; } [StringLength(OrganizationConsts.MaxWebsiteLength)] public string Website { get; set; } diff --git a/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs b/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs index 0516a30..55fa1a7 100644 --- a/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs +++ b/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.Content; namespace EventHub.Organizations { @@ -18,5 +19,7 @@ namespace EventHub.Organizations Task IsOrganizationOwnerAsync(Guid organizationId); Task UpdateAsync(Guid id, UpdateOrganizationDto input); + + Task GetProfilePictureAsync(Guid id); } } diff --git a/src/EventHub.Application.Contracts/Organizations/OrganizationInListDto.cs b/src/EventHub.Application.Contracts/Organizations/OrganizationInListDto.cs index f064065..16f6fd3 100644 --- a/src/EventHub.Application.Contracts/Organizations/OrganizationInListDto.cs +++ b/src/EventHub.Application.Contracts/Organizations/OrganizationInListDto.cs @@ -10,7 +10,5 @@ namespace EventHub.Organizations public string DisplayName { get; set; } public string Description { get; set; } - - public byte[] ProfilePictureContent { get; set; } } } diff --git a/src/EventHub.Application.Contracts/Organizations/OrganizationProfileDto.cs b/src/EventHub.Application.Contracts/Organizations/OrganizationProfileDto.cs index 1f5f89a..f7999ef 100644 --- a/src/EventHub.Application.Contracts/Organizations/OrganizationProfileDto.cs +++ b/src/EventHub.Application.Contracts/Organizations/OrganizationProfileDto.cs @@ -26,7 +26,5 @@ namespace EventHub.Organizations public string InstagramUsername { get; set; } public string MediumUsername { get; set; } - - public byte[] ProfilePictureContent { get; set; } } } diff --git a/src/EventHub.Application.Contracts/Organizations/UpdateOrganizationDto.cs b/src/EventHub.Application.Contracts/Organizations/UpdateOrganizationDto.cs index 8d43241..e5a2da4 100644 --- a/src/EventHub.Application.Contracts/Organizations/UpdateOrganizationDto.cs +++ b/src/EventHub.Application.Contracts/Organizations/UpdateOrganizationDto.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using JetBrains.Annotations; +using Volo.Abp.Content; namespace EventHub.Organizations { @@ -14,7 +15,7 @@ namespace EventHub.Organizations public string Description { get; set; } [CanBeNull] - public byte[] ProfilePictureContent { get; set; } + public RemoteStreamContent ProfilePictureStreamContent { get; set; } [CanBeNull] [StringLength(OrganizationConsts.MaxWebsiteLength)] diff --git a/src/EventHub.Application/Organizations/OrganizationAppService.cs b/src/EventHub.Application/Organizations/OrganizationAppService.cs index a53573f..03dd22e 100644 --- a/src/EventHub.Application/Organizations/OrganizationAppService.cs +++ b/src/EventHub.Application/Organizations/OrganizationAppService.cs @@ -3,11 +3,11 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using EventHub.Organizations.Memberships; -using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Authorization; using Volo.Abp.BlobStoring; +using Volo.Abp.Content; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; using Volo.Abp.Users; @@ -17,7 +17,7 @@ namespace EventHub.Organizations public class OrganizationAppService : EventHubAppService, IOrganizationAppService { private readonly IRepository _organizationRepository; - private readonly IRepository _organizationMembershipsRepository; + private readonly IRepository _organizationMembershipsRepository; private readonly OrganizationManager _organizationManager; private readonly IBlobContainer _organizationBlobContainer; private readonly IRepository _userRepository; @@ -26,7 +26,7 @@ namespace EventHub.Organizations IRepository organizationRepository, IRepository organizationMembershipsRepository, OrganizationManager organizationManager, - IBlobContainer organizationBlobContainer, + IBlobContainer organizationBlobContainer, IRepository userRepository) { _organizationRepository = organizationRepository; @@ -52,12 +52,12 @@ namespace EventHub.Organizations organization.FacebookUsername = input.FacebookUsername; organization.InstagramUsername = input.InstagramUsername; organization.MediumUsername = input.MediumUsername; - + await _organizationRepository.InsertAsync(organization, true); - - if (input.ProfilePictureContent != null && input.ProfilePictureContent.Length > 0) + + if (input.ProfilePictureStreamContent != null && input.ProfilePictureStreamContent.ContentLength > 0) { - await SaveProfilePictureAsync(organization.Id, input.ProfilePictureContent); + await SaveProfilePictureAsync(organization.Id, input.ProfilePictureStreamContent); } } @@ -67,13 +67,13 @@ namespace EventHub.Organizations var organizationMemberQueryable = await _organizationMembershipsRepository.GetQueryableAsync(); var query = organizationQueryable; - + if (input.RegisteredUserId.HasValue) { var registeredOrganization = organizationMemberQueryable .Where(x => x.UserId == input.RegisteredUserId) .Select(x => x.OrganizationId); - + var organizationIds = await AsyncExecuter.ToListAsync(registeredOrganization); query = query.Where(x => organizationIds.Contains(x.Id)); } @@ -84,11 +84,6 @@ namespace EventHub.Organizations var organizationDto = ObjectMapper .Map, List>(await AsyncExecuter.ToListAsync(query)); - - foreach (var organization in organizationDto) - { - organization.ProfilePictureContent = await GetProfilePictureAsync(organization.Id); - } return new PagedResultDto( totalCount, @@ -104,7 +99,6 @@ namespace EventHub.Organizations var owner = await _userRepository.GetAsync(u => u.Id == organization.OwnerUserId); organizationProfileDto.OwnerUserName = owner.UserName; organizationProfileDto.OwnerEmail = owner.Email; - organizationProfileDto.ProfilePictureContent = await GetProfilePictureAsync(organizationProfileDto.Id); return organizationProfileDto; } @@ -116,17 +110,13 @@ namespace EventHub.Organizations var organizationDto = ObjectMapper.Map, List>(organizations); - foreach (var organization in organizationDto) - { - organization.ProfilePictureContent = await GetProfilePictureAsync(organization.Id); - } - return new ListResultDto(organizationDto); } public async Task IsOrganizationOwnerAsync(Guid organizationId) { - return CurrentUser.Id.HasValue && await _organizationRepository.AnyAsync(x => x.Id == organizationId && x.OwnerUserId == CurrentUser.Id.Value); + return CurrentUser.Id.HasValue && await _organizationRepository + .AnyAsync(x => x.Id == organizationId && x.OwnerUserId == CurrentUser.Id.Value); } [Authorize] @@ -148,35 +138,42 @@ namespace EventHub.Organizations organization.InstagramUsername = input.InstagramUsername; organization.FacebookUsername = input.FacebookUsername; organization.MediumUsername = input.MediumUsername; - - if (input.ProfilePictureContent != null && input.ProfilePictureContent.Length > 0) + + if (input.ProfilePictureStreamContent != null && input.ProfilePictureStreamContent.ContentLength > 0) { - await SaveProfilePictureAsync(organization.Id, input.ProfilePictureContent); + await SaveProfilePictureAsync(organization.Id, input.ProfilePictureStreamContent); } - + await _organizationRepository.UpdateAsync(organization); } - private async Task SaveProfilePictureAsync(Guid id, byte[] bytes) + private async Task SaveProfilePictureAsync(Guid id, IRemoteStreamContent streamContent) { var organization = await _organizationRepository.GetAsync(x => x.Id == id); - + if (organization.OwnerUserId != CurrentUser.GetId()) { throw new AbpAuthorizationException(EventHubErrorCodes.NotAuthorizedToUpdateOrganizationProfile) .WithData("Name", organization.DisplayName); } - + var blobName = id.ToString(); - - await _organizationBlobContainer.SaveAsync(blobName, bytes, overrideExisting: true); + + await _organizationBlobContainer.SaveAsync(blobName, streamContent.GetStream(), overrideExisting: true); } - private async Task GetProfilePictureAsync(Guid id) + public async Task GetProfilePictureAsync(Guid id) { var blobName = id.ToString(); - return await _organizationBlobContainer.GetAllBytesOrNullAsync(blobName); + var pictureContent = await _organizationBlobContainer.GetOrNullAsync(blobName); + + if (pictureContent is null) + { + return null; + } + + return new RemoteStreamContent(pictureContent, blobName); } } -} +} \ No newline at end of file diff --git a/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs b/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs index 3f090b5..a921baf 100644 --- a/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs +++ b/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs @@ -5,6 +5,8 @@ using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Content; +using Volo.Abp.VirtualFileSystem; namespace EventHub.Controllers.Organizations { @@ -15,10 +17,14 @@ namespace EventHub.Controllers.Organizations public class OrganizationController : AbpController, IOrganizationAppService { private readonly IOrganizationAppService _organizationAppService; + private readonly IVirtualFileProvider _virtualFileProvider; - public OrganizationController(IOrganizationAppService organizationAppService) + public OrganizationController( + IOrganizationAppService organizationAppService, + IVirtualFileProvider virtualFileProvider) { _organizationAppService = organizationAppService; + _virtualFileProvider = virtualFileProvider; } [HttpPost] @@ -60,5 +66,24 @@ namespace EventHub.Controllers.Organizations { await _organizationAppService.UpdateAsync(id, input); } + + [HttpGet] + [Route("profile-picture/{id}")] + public async Task GetProfilePictureAsync(Guid id) + { + var remoteStreamContent = await _organizationAppService.GetProfilePictureAsync(id); + + if (remoteStreamContent is null) + { + await using var stream = _virtualFileProvider.GetFileInfo("/Controllers/Organizations/ProfilePictures/eh-organization.png").CreateReadStream(); + remoteStreamContent = new RemoteStreamContent(stream); + await stream.FlushAsync(); + } + + Response.Headers.Add("Accept-Ranges", "bytes"); + Response.ContentType = remoteStreamContent.ContentType; + + return remoteStreamContent; + } } } \ No newline at end of file diff --git a/src/EventHub.HttpApi.Host/Controllers/Organizations/ProfilePictures/eh-organization.png b/src/EventHub.HttpApi.Host/Controllers/Organizations/ProfilePictures/eh-organization.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf5b0c5b469a1b6de95c7c0ee5f2f8d2f2dcfcd GIT binary patch literal 556910 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

)d@BcEnPKlNhP?d21tOH`jN-8Ttn$zU_7I;M<4 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

X~qkAyNsD-JO+W{n~n<|_y8xB^(rIuIDs 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 + diff --git a/src/EventHub.HttpApi.Host/EventHubHttpApiHostModule.cs b/src/EventHub.HttpApi.Host/EventHubHttpApiHostModule.cs index b164b37..945c1aa 100644 --- a/src/EventHub.HttpApi.Host/EventHubHttpApiHostModule.cs +++ b/src/EventHub.HttpApi.Host/EventHubHttpApiHostModule.cs @@ -11,6 +11,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using EventHub.EntityFrameworkCore; +using EventHub.Organizations; using EventHub.Utils; using EventHub.Web; using Microsoft.AspNetCore.Localization; @@ -61,6 +62,16 @@ namespace EventHub ConfigureCookies(context); ConfigureSwaggerServices(context, configuration); ConfigureBackgroundJobs(); + ConfigureAutoApiControllers(); + } + + private void ConfigureAutoApiControllers() + { + Configure(options => + { + options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(CreateOrganizationDto)); + options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(UpdateOrganizationDto)); + }); } private void ConfigureBackgroundJobs() @@ -79,10 +90,14 @@ namespace EventHub private void ConfigureVirtualFileSystem(ServiceConfigurationContext context) { var hostingEnvironment = context.Services.GetHostingEnvironment(); - - if (hostingEnvironment.IsDevelopment()) + + Configure(options => { - Configure(options => + options.FileSets.AddEmbedded( + baseNamespace: "EventHub", + baseFolder: "/Controllers/Organizations/ProfilePictures"); + + if (hostingEnvironment.IsDevelopment()) { options.FileSets.ReplaceEmbeddedByPhysical( Path.Combine(hostingEnvironment.ContentRootPath, @@ -96,8 +111,8 @@ namespace EventHub options.FileSets.ReplaceEmbeddedByPhysical( Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}EventHub.Application")); - }); - } + } + }); } private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) diff --git a/src/EventHub.Web/Pages/Organizations/Components/OrganizationsArea/_organizationListSection.cshtml b/src/EventHub.Web/Pages/Organizations/Components/OrganizationsArea/_organizationListSection.cshtml index 07f9fdf..cec73b8 100644 --- a/src/EventHub.Web/Pages/Organizations/Components/OrganizationsArea/_organizationListSection.cshtml +++ b/src/EventHub.Web/Pages/Organizations/Components/OrganizationsArea/_organizationListSection.cshtml @@ -1,19 +1,14 @@ +@using EventHub.Web +@using Microsoft.Extensions.Options @model List +@inject IOptions UrlOptions @foreach (var organization in Model) {

- @if (organization.ProfilePictureContent == null) - { -
-
- } - else - { -
-
- } +
+
diff --git a/src/EventHub.Web/Pages/Organizations/Edit.cshtml b/src/EventHub.Web/Pages/Organizations/Edit.cshtml index 091efaa..708f518 100644 --- a/src/EventHub.Web/Pages/Organizations/Edit.cshtml +++ b/src/EventHub.Web/Pages/Organizations/Edit.cshtml @@ -2,9 +2,12 @@ @inject IHtmlLocalizer L @using EventHub.Localization @using EventHub.Organizations +@using EventHub.Web @using Microsoft.AspNetCore.Mvc.Localization +@using Microsoft.Extensions.Options @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal @model EventHub.Web.Pages.Organizations.EditPageModel +@inject IOptions UrlOptions @section scripts { @@ -26,14 +29,7 @@
- @if (Model.ProfilePictureContent != null && Model.ProfilePictureContent.Length > 0) - { - - } - else - { - - } +
diff --git a/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs b/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs index 221eddc..d31be7a 100644 --- a/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs +++ b/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; +using Volo.Abp.Content; namespace EventHub.Web.Pages.Organizations { @@ -20,7 +21,6 @@ namespace EventHub.Web.Pages.Organizations [BindProperty] public EditOrganizationViewModel Organization { get; set; } - public byte[] ProfilePictureContent { get; private set; } private readonly IOrganizationAppService _organizationAppService; @@ -32,7 +32,6 @@ namespace EventHub.Web.Pages.Organizations public async Task OnGetAsync() { var organizationProfileDto = await _organizationAppService.GetProfileAsync(Name); - ProfilePictureContent = organizationProfileDto.ProfilePictureContent; Organization = ObjectMapper.Map(organizationProfileDto); } @@ -43,18 +42,20 @@ namespace EventHub.Web.Pages.Organizations { ValidateModel(); - var input = ObjectMapper.Map(Organization); - + var updateOrganizationDto = ObjectMapper.Map(Organization); + + await using var memoryStream = new MemoryStream(); if (Organization.ProfilePictureFile != null && Organization.ProfilePictureFile.Length > 0) { - using (var memoryStream = new MemoryStream()) + await Organization.ProfilePictureFile.CopyToAsync(memoryStream); + updateOrganizationDto.ProfilePictureStreamContent = new RemoteStreamContent(memoryStream) { - await Organization.ProfilePictureFile.CopyToAsync(memoryStream); - input.ProfilePictureContent = memoryStream.ToArray(); - } + ContentType = Organization.ProfilePictureFile.ContentType, + FileName = Organization.ProfilePictureFile.FileName, + }; } - await _organizationAppService.UpdateAsync(Organization.Id, input); + await _organizationAppService.UpdateAsync(Organization.Id, updateOrganizationDto); return RedirectToPage("./Profile", new { name = Name }); } diff --git a/src/EventHub.Web/Pages/Organizations/New.cshtml.cs b/src/EventHub.Web/Pages/Organizations/New.cshtml.cs index 4789a5b..b895e22 100644 --- a/src/EventHub.Web/Pages/Organizations/New.cshtml.cs +++ b/src/EventHub.Web/Pages/Organizations/New.cshtml.cs @@ -9,13 +9,15 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; +using Volo.Abp.Content; namespace EventHub.Web.Pages.Organizations { [Authorize] public class NewPageModel : EventHubPageModel { - [BindProperty] public CreateOrganizationViewModel Organization { get; set; } + [BindProperty] + public CreateOrganizationViewModel Organization { get; set; } private readonly IOrganizationAppService _organizationAppService; @@ -35,18 +37,22 @@ namespace EventHub.Web.Pages.Organizations { ValidateModel(); - var input = ObjectMapper.Map(Organization); - + var createOrganizationDto = ObjectMapper.Map(Organization); + + await using var memoryStream = new MemoryStream(); if (Organization.ProfilePictureFile != null && Organization.ProfilePictureFile.Length > 0) { - using (var memoryStream = new MemoryStream()) + await Organization.ProfilePictureFile.CopyToAsync(memoryStream); + + createOrganizationDto.ProfilePictureStreamContent = new RemoteStreamContent(memoryStream) { - await Organization.ProfilePictureFile.CopyToAsync(memoryStream); - input.ProfilePictureContent = memoryStream.ToArray(); - } + ContentType = Organization.ProfilePictureFile.ContentType, + FileName = Organization.ProfilePictureFile.FileName + }; } - await _organizationAppService.CreateAsync(input); + await _organizationAppService.CreateAsync(createOrganizationDto); + await memoryStream.FlushAsync(); return RedirectToPage("./Profile", new {name = Organization.Name}); } diff --git a/src/EventHub.Web/Pages/Organizations/Profile.cshtml b/src/EventHub.Web/Pages/Organizations/Profile.cshtml index c8e8e0f..6d0e148 100644 --- a/src/EventHub.Web/Pages/Organizations/Profile.cshtml +++ b/src/EventHub.Web/Pages/Organizations/Profile.cshtml @@ -1,13 +1,16 @@ @page "/organizations/{name}" @inject IHtmlLocalizer L @using EventHub.Localization +@using EventHub.Web @using EventHub.Web.Pages.Events.Components.EventsArea @using EventHub.Web.Pages.Organizations.Components.JoinArea @using EventHub.Web.Pages.Organizations.Components.MembersArea @using Microsoft.AspNetCore.Mvc.Localization +@using Microsoft.Extensions.Options @using Volo.Abp.Timing @model EventHub.Web.Pages.Organizations.ProfilePageModel @inject IClock Clock +@inject IOptions UrlOptions @section scripts { @@ -18,14 +21,7 @@
- @if (Model.Organization.ProfilePictureContent == null) - { - @Model.Organization.Name - } - else - { - @Model.Organization.Name - } + @Model.Organization.Name
From 277f6e72ac07fccece881a37cd3aa9d76d52f4c6 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Tue, 31 Aug 2021 09:38:18 +0300 Subject: [PATCH 015/159] refactor(EventHub.Web): Use IRemoteContentStream instead of byte array for Events --- .../Events/CreateEventDto.cs | 3 +- .../Events/EventDetailDto.cs | 4 +-- .../Events/EventInListDto.cs | 2 -- .../Events/IEventAppService.cs | 3 +- .../Events/UpdateEventDto.cs | 3 +- .../Events/EventAppService.cs | 33 +++++++++--------- .../Organizations/OrganizationAppService.cs | 24 +++++-------- .../Controllers/Events/EventController.cs | 24 +++++++++++-- .../Organizations/OrganizationController.cs | 2 +- .../EventHub.HttpApi.Host.csproj | 2 +- .../EventHubHttpApiHostModule.cs | 5 ++- src/EventHub.HttpApi.Host/Images/eh-event.png | Bin 0 -> 188095 bytes .../eh-organization.png | Bin .../Controllers/EventController.cs | 15 -------- .../EventHubWebAutoMapperProfile.cs | 2 +- .../EventsArea/_eventListSection.cshtml | 18 ++++------ src/EventHub.Web/Pages/Events/Detail.cshtml | 21 ++--------- src/EventHub.Web/Pages/Events/Edit.cshtml | 12 +++---- src/EventHub.Web/Pages/Events/Edit.cshtml.cs | 21 ++++++----- src/EventHub.Web/Pages/Events/New.cshtml.cs | 20 +++++++---- src/EventHub.Web/Pages/Index.cshtml | 26 +++----------- .../Pages/Organizations/Edit.cshtml.cs | 1 + .../Pages/Organizations/New.cshtml.cs | 2 +- 23 files changed, 104 insertions(+), 139 deletions(-) create mode 100644 src/EventHub.HttpApi.Host/Images/eh-event.png rename src/EventHub.HttpApi.Host/{Controllers/Organizations/ProfilePictures => Images}/eh-organization.png (100%) diff --git a/src/EventHub.Application.Contracts/Events/CreateEventDto.cs b/src/EventHub.Application.Contracts/Events/CreateEventDto.cs index 801c904..a508867 100644 --- a/src/EventHub.Application.Contracts/Events/CreateEventDto.cs +++ b/src/EventHub.Application.Contracts/Events/CreateEventDto.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; using JetBrains.Annotations; +using Volo.Abp.Content; namespace EventHub.Events { @@ -24,7 +25,7 @@ namespace EventHub.Events public string Description { get; set; } [CanBeNull] - public byte[] CoverImageContent { get; set; } + public IRemoteStreamContent CoverImageStreamContent { get; set; } public bool IsOnline { get; set; } diff --git a/src/EventHub.Application.Contracts/Events/EventDetailDto.cs b/src/EventHub.Application.Contracts/Events/EventDetailDto.cs index 6418a9e..ddb3eec 100644 --- a/src/EventHub.Application.Contracts/Events/EventDetailDto.cs +++ b/src/EventHub.Application.Contracts/Events/EventDetailDto.cs @@ -22,9 +22,7 @@ namespace EventHub.Events public DateTime StartTime { get; set; } public DateTime EndTime { get; set; } - - public byte[] CoverImageContent { get; set; } - + public bool IsOnline { get; set; } public string OnlineLink { get; set; } diff --git a/src/EventHub.Application.Contracts/Events/EventInListDto.cs b/src/EventHub.Application.Contracts/Events/EventInListDto.cs index d6208c1..a2235ac 100644 --- a/src/EventHub.Application.Contracts/Events/EventInListDto.cs +++ b/src/EventHub.Application.Contracts/Events/EventInListDto.cs @@ -16,8 +16,6 @@ namespace EventHub.Events public DateTime StartTime { get; set; } public DateTime EndTime { get; set; } - - public byte[] CoverImageContent { get; set; } public bool IsOnline { get; set; } diff --git a/src/EventHub.Application.Contracts/Events/IEventAppService.cs b/src/EventHub.Application.Contracts/Events/IEventAppService.cs index dd253d3..bd1238f 100644 --- a/src/EventHub.Application.Contracts/Events/IEventAppService.cs +++ b/src/EventHub.Application.Contracts/Events/IEventAppService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.Content; namespace EventHub.Events { @@ -22,6 +23,6 @@ namespace EventHub.Events Task UpdateAsync(Guid id, UpdateEventDto input); - Task GetCoverImageAsync(Guid id); + Task GetCoverImageAsync(Guid id); } } diff --git a/src/EventHub.Application.Contracts/Events/UpdateEventDto.cs b/src/EventHub.Application.Contracts/Events/UpdateEventDto.cs index 82aae30..0e1edf6 100644 --- a/src/EventHub.Application.Contracts/Events/UpdateEventDto.cs +++ b/src/EventHub.Application.Contracts/Events/UpdateEventDto.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; using JetBrains.Annotations; +using Volo.Abp.Content; namespace EventHub.Events { @@ -15,7 +16,7 @@ namespace EventHub.Events public string Description { get; set; } [CanBeNull] - public byte[] CoverImageContent { get; set; } + public IRemoteStreamContent CoverImageStreamContent { get; set; } [Required] [DataType(DataType.DateTime)] diff --git a/src/EventHub.Application/Events/EventAppService.cs b/src/EventHub.Application/Events/EventAppService.cs index 2bf29cb..22b3898 100644 --- a/src/EventHub.Application/Events/EventAppService.cs +++ b/src/EventHub.Application/Events/EventAppService.cs @@ -5,11 +5,11 @@ using System.Threading.Tasks; using EventHub.Countries; using EventHub.Events.Registrations; using EventHub.Organizations; -using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Authorization; using Volo.Abp.BlobStoring; +using Volo.Abp.Content; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; using Volo.Abp.Users; @@ -73,9 +73,9 @@ namespace EventHub.Events await _eventManager.SetCapacityAsync(@event, input.Capacity); - if (input.CoverImageContent != null && input.CoverImageContent.Length > 0) + if (input.CoverImageStreamContent != null && input.CoverImageStreamContent.ContentLength > 0) { - await SaveCoverImageAsync(@event.Id, input.CoverImageContent); + await SaveCoverImageAsync(@event.Id, input.CoverImageStreamContent); } await _eventRepository.InsertAsync(@event); @@ -161,11 +161,6 @@ namespace EventHub.Events } ).ToList(); - foreach (var @event in events) - { - @event.CoverImageContent = await GetCoverImageAsync(@event.Id); - } - return new PagedResultDto(totalCount, events); } @@ -179,8 +174,7 @@ namespace EventHub.Events dto.OrganizationId = organization.Id; dto.OrganizationName = organization.Name; dto.OrganizationDisplayName = organization.DisplayName; - dto.CoverImageContent = await GetCoverImageAsync(dto.Id); - + var user = await _userRepository.GetAsync(organization.OwnerUserId); dto.OwnerUserName = user.UserName; dto.OwnerEmail = user.Email; @@ -254,26 +248,33 @@ namespace EventHub.Events @event.SetTime(input.StartTime, input.EndTime); await _eventManager.SetCapacityAsync(@event, input.Capacity); - if (input.CoverImageContent != null && input.CoverImageContent.Length > 0) + if (input.CoverImageStreamContent != null && input.CoverImageStreamContent.ContentLength > 0) { - await SaveCoverImageAsync(@event.Id, input.CoverImageContent); + await SaveCoverImageAsync(@event.Id, input.CoverImageStreamContent); } await _eventRepository.UpdateAsync(@event); } - public async Task GetCoverImageAsync(Guid id) + public async Task GetCoverImageAsync(Guid id) { var blobName = id.ToString(); - return await _eventBlobContainer.GetAllBytesOrNullAsync(blobName); + var coverImageStream = await _eventBlobContainer.GetOrNullAsync(blobName); + + if (coverImageStream is null) + { + return null; + } + + return new RemoteStreamContent(coverImageStream, blobName); } - private async Task SaveCoverImageAsync(Guid id, byte[] coverImageContent) + private async Task SaveCoverImageAsync(Guid id, IRemoteStreamContent streamContent) { var blobName = id.ToString(); - await _eventBlobContainer.SaveAsync(blobName, coverImageContent, overrideExisting: true); + await _eventBlobContainer.SaveAsync(blobName, streamContent.GetStream(), overrideExisting: true); } } } \ No newline at end of file diff --git a/src/EventHub.Application/Organizations/OrganizationAppService.cs b/src/EventHub.Application/Organizations/OrganizationAppService.cs index 03dd22e..0fb89de 100644 --- a/src/EventHub.Application/Organizations/OrganizationAppService.cs +++ b/src/EventHub.Application/Organizations/OrganizationAppService.cs @@ -146,22 +146,7 @@ namespace EventHub.Organizations await _organizationRepository.UpdateAsync(organization); } - - private async Task SaveProfilePictureAsync(Guid id, IRemoteStreamContent streamContent) - { - var organization = await _organizationRepository.GetAsync(x => x.Id == id); - - if (organization.OwnerUserId != CurrentUser.GetId()) - { - throw new AbpAuthorizationException(EventHubErrorCodes.NotAuthorizedToUpdateOrganizationProfile) - .WithData("Name", organization.DisplayName); - } - - var blobName = id.ToString(); - - await _organizationBlobContainer.SaveAsync(blobName, streamContent.GetStream(), overrideExisting: true); - } - + public async Task GetProfilePictureAsync(Guid id) { var blobName = id.ToString(); @@ -175,5 +160,12 @@ namespace EventHub.Organizations return new RemoteStreamContent(pictureContent, blobName); } + + private async Task SaveProfilePictureAsync(Guid id, IRemoteStreamContent streamContent) + { + var blobName = id.ToString(); + + await _organizationBlobContainer.SaveAsync(blobName, streamContent.GetStream(), overrideExisting: true); + } } } \ No newline at end of file diff --git a/src/EventHub.HttpApi.Host/Controllers/Events/EventController.cs b/src/EventHub.HttpApi.Host/Controllers/Events/EventController.cs index b1f6e34..ba988fc 100644 --- a/src/EventHub.HttpApi.Host/Controllers/Events/EventController.cs +++ b/src/EventHub.HttpApi.Host/Controllers/Events/EventController.cs @@ -6,6 +6,8 @@ using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Content; +using Volo.Abp.VirtualFileSystem; namespace EventHub.Controllers.Events { @@ -16,10 +18,14 @@ namespace EventHub.Controllers.Events public class EventController : AbpController, IEventAppService { private readonly IEventAppService _eventAppService; + private readonly IVirtualFileProvider _virtualFileProvider; - public EventController(IEventAppService eventAppService) + public EventController( + IEventAppService eventAppService, + IVirtualFileProvider virtualFileProvider) { _eventAppService = eventAppService; + _virtualFileProvider = virtualFileProvider; } [HttpPost] @@ -71,9 +77,21 @@ namespace EventHub.Controllers.Events [HttpGet] [Route("cover-image/{id}")] - public async Task GetCoverImageAsync(Guid id) + public async Task GetCoverImageAsync(Guid id) { - return await _eventAppService.GetCoverImageAsync(id); + var remoteStreamContent = await _eventAppService.GetCoverImageAsync(id); + + if (remoteStreamContent is null) + { + var stream = _virtualFileProvider.GetFileInfo("/Images/eh-event.png").CreateReadStream(); + remoteStreamContent = new RemoteStreamContent(stream); + await stream.FlushAsync(); + } + + Response.Headers.Add("Accept-Ranges", "bytes"); + Response.ContentType = remoteStreamContent.ContentType; + + return remoteStreamContent; } } } \ No newline at end of file diff --git a/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs b/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs index a921baf..4c94f8d 100644 --- a/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs +++ b/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs @@ -75,7 +75,7 @@ namespace EventHub.Controllers.Organizations if (remoteStreamContent is null) { - await using var stream = _virtualFileProvider.GetFileInfo("/Controllers/Organizations/ProfilePictures/eh-organization.png").CreateReadStream(); + var stream = _virtualFileProvider.GetFileInfo("/Images/eh-organization.png").CreateReadStream(); remoteStreamContent = new RemoteStreamContent(stream); await stream.FlushAsync(); } diff --git a/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj b/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj index 5416adb..7c30386 100644 --- a/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj +++ b/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj @@ -33,7 +33,7 @@ - + diff --git a/src/EventHub.HttpApi.Host/EventHubHttpApiHostModule.cs b/src/EventHub.HttpApi.Host/EventHubHttpApiHostModule.cs index 945c1aa..a9eceb1 100644 --- a/src/EventHub.HttpApi.Host/EventHubHttpApiHostModule.cs +++ b/src/EventHub.HttpApi.Host/EventHubHttpApiHostModule.cs @@ -11,6 +11,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using EventHub.EntityFrameworkCore; +using EventHub.Events; using EventHub.Organizations; using EventHub.Utils; using EventHub.Web; @@ -71,6 +72,8 @@ namespace EventHub { options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(CreateOrganizationDto)); options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(UpdateOrganizationDto)); + options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(CreateEventDto)); + options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(UpdateEventDto)); }); } @@ -95,7 +98,7 @@ namespace EventHub { options.FileSets.AddEmbedded( baseNamespace: "EventHub", - baseFolder: "/Controllers/Organizations/ProfilePictures"); + baseFolder: "/Images"); if (hostingEnvironment.IsDevelopment()) { diff --git a/src/EventHub.HttpApi.Host/Images/eh-event.png b/src/EventHub.HttpApi.Host/Images/eh-event.png new file mode 100644 index 0000000000000000000000000000000000000000..b49547ef8d2c866796a12f92e191630eef68202f GIT binary patch literal 188095 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
diff --git a/src/EventHub.Web/Pages/Events/Detail.cshtml b/src/EventHub.Web/Pages/Events/Detail.cshtml index 9c0c15e..67c825b 100644 --- a/src/EventHub.Web/Pages/Events/Detail.cshtml +++ b/src/EventHub.Web/Pages/Events/Detail.cshtml @@ -24,17 +24,7 @@ @{ string description = Model.Event.Description.Length >= 160 ? Model.Event.Description.TruncateWithPostfix(155) : Model.Event.Description; string title = Model.Event.Title; - string coverImageUrl; - - if (Model.Event.CoverImageContent is null) - { - // TODO(berkansasmaz): Get a default image from the design team to be used in social media posts - coverImageUrl = UrlOptions.Value.Www + "/assets/slide.jpg"; - } - else - { - coverImageUrl = $"{UrlOptions.Value.Www}/api/event/cover-picture-source/{Model.Event.Id}"; - } + string coverImageUrl = UrlOptions.Value.Api.EnsureEndsWith('/') + $"api/eventhub/event/cover-image/{Model.Event.Id}"; ViewBag.Title = title; ViewBag.Description = description; @@ -52,14 +42,7 @@
- @if (Model.Event.CoverImageContent == null) - { - @Model.Event.Title - } - else - { - @Model.Event.Title - } + @Model.Event.Title
diff --git a/src/EventHub.Web/Pages/Events/Edit.cshtml b/src/EventHub.Web/Pages/Events/Edit.cshtml index c5d3d40..dfe4c1d 100644 --- a/src/EventHub.Web/Pages/Events/Edit.cshtml +++ b/src/EventHub.Web/Pages/Events/Edit.cshtml @@ -1,8 +1,11 @@ @page "/event/edit/{url}" @inject IHtmlLocalizer L @using EventHub.Localization +@using EventHub.Web @using Microsoft.AspNetCore.Mvc.Localization +@using Microsoft.Extensions.Options @model EventHub.Web.Pages.Events.EditPageModel +@inject IOptions UrlOptions @section scripts { @@ -62,14 +65,7 @@
- @if (Model.CoverImageContent != null && Model.CoverImageContent.Length > 0) - { - - } - else - { - - } +
diff --git a/src/EventHub.Web/Pages/Events/Edit.cshtml.cs b/src/EventHub.Web/Pages/Events/Edit.cshtml.cs index d1f00f5..05bd3fe 100644 --- a/src/EventHub.Web/Pages/Events/Edit.cshtml.cs +++ b/src/EventHub.Web/Pages/Events/Edit.cshtml.cs @@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using NUglify.Helpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; +using Volo.Abp.Content; using Volo.Abp.Users; namespace EventHub.Web.Pages.Events @@ -30,7 +31,6 @@ namespace EventHub.Web.Pages.Events public List Organizations { get; private set; } public List Countries { get; private set; } public List Languages { get; private set; } - public byte[] CoverImageContent { get; private set; } private readonly IEventAppService _eventAppService; private readonly IOrganizationAppService _organizationAppService; @@ -47,7 +47,7 @@ namespace EventHub.Web.Pages.Events { var urlCode = EventUrlCodeHelper.GetCodeFromUrl(Url); var eventDetailDto = await _eventAppService.GetByUrlCodeAsync(urlCode); - CoverImageContent = eventDetailDto.CoverImageContent; + Event = ObjectMapper.Map(eventDetailDto); await FillOrganizationsAsync(); @@ -61,19 +61,22 @@ namespace EventHub.Web.Pages.Events { ValidateModel(); - var input = ObjectMapper.Map(Event); + var updateEventDto = ObjectMapper.Map(Event); + await using var memoryStream = new MemoryStream(); if (Event.CoverImageFile != null && Event.CoverImageFile.Length > 0) { - using (var memoryStream = new MemoryStream()) + await Event.CoverImageFile.CopyToAsync(memoryStream); + updateEventDto.CoverImageStreamContent = new RemoteStreamContent(memoryStream) { - await Event.CoverImageFile.CopyToAsync(memoryStream); - input.CoverImageContent = memoryStream.ToArray(); - } + ContentType = Event.CoverImageFile.ContentType, + FileName = Event.CoverImageFile.FileName, + }; } - await _eventAppService.UpdateAsync(Event.Id, input); - + await _eventAppService.UpdateAsync(Event.Id, updateEventDto); + await memoryStream.DisposeAsync(); + return RedirectToPage("./Detail", new { url = Url }); } catch (Exception exception) diff --git a/src/EventHub.Web/Pages/Events/New.cshtml.cs b/src/EventHub.Web/Pages/Events/New.cshtml.cs index da2afbf..671e7a7 100644 --- a/src/EventHub.Web/Pages/Events/New.cshtml.cs +++ b/src/EventHub.Web/Pages/Events/New.cshtml.cs @@ -15,13 +15,15 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using NUglify.Helpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; +using Volo.Abp.Content; using Volo.Abp.Users; namespace EventHub.Web.Pages.Events { public class NewPageModel : EventHubPageModel { - [BindProperty] public NewEventViewModel Event { get; set; } + [BindProperty] + public NewEventViewModel Event { get; set; } public List Organizations { get; private set; } public List Countries { get; private set; } @@ -57,18 +59,22 @@ namespace EventHub.Web.Pages.Events { ValidateModel(); - var input = ObjectMapper.Map(Event); + var createEventDto = ObjectMapper.Map(Event); + await using var memoryStream = new MemoryStream(); if (Event.CoverImageFile != null && Event.CoverImageFile.Length > 0) { - using (var memoryStream = new MemoryStream()) + await Event.CoverImageFile.CopyToAsync(memoryStream); + + createEventDto.CoverImageStreamContent = new RemoteStreamContent(memoryStream) { - await Event.CoverImageFile.CopyToAsync(memoryStream); - input.CoverImageContent = memoryStream.ToArray(); - } + ContentType = Event.CoverImageFile.ContentType, + FileName = Event.CoverImageFile.FileName + }; } - var eventDto = await _eventAppService.CreateAsync(input); + var eventDto = await _eventAppService.CreateAsync(createEventDto); + await memoryStream.DisposeAsync(); return RedirectToPage("/Events/Detail", new {url = eventDto.UrlCode}); } diff --git a/src/EventHub.Web/Pages/Index.cshtml b/src/EventHub.Web/Pages/Index.cshtml index b5e6042..0bc2774 100644 --- a/src/EventHub.Web/Pages/Index.cshtml +++ b/src/EventHub.Web/Pages/Index.cshtml @@ -152,16 +152,8 @@
- @if (Model.OnlineEvents[i].CoverImageContent is null) - { -
-
- } - else - { -
-
- } +
+
@@ -171,7 +163,7 @@ @Model.OnlineEvents[i].StartTime.ToString("MMMM dd, yyyy dddd")
@Model.OnlineEvents[i].StartTime.ToString("hh tt", CultureInfo.InvariantCulture) - @Model.OnlineEvents[i].EndTime.ToString("hh tt", CultureInfo.InvariantCulture) | Online

@Model.OnlineEvents[i].Description

- Learn More + Learn More
@@ -182,16 +174,8 @@
- @if (Model.OnlineEvents[i + 1].CoverImageContent is null) - { -
-
- } - else - { -
-
- } +
+
diff --git a/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs b/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs index d31be7a..b2f7c36 100644 --- a/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs +++ b/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs @@ -56,6 +56,7 @@ namespace EventHub.Web.Pages.Organizations } await _organizationAppService.UpdateAsync(Organization.Id, updateOrganizationDto); + await memoryStream.DisposeAsync(); return RedirectToPage("./Profile", new { name = Name }); } diff --git a/src/EventHub.Web/Pages/Organizations/New.cshtml.cs b/src/EventHub.Web/Pages/Organizations/New.cshtml.cs index b895e22..e7edcf6 100644 --- a/src/EventHub.Web/Pages/Organizations/New.cshtml.cs +++ b/src/EventHub.Web/Pages/Organizations/New.cshtml.cs @@ -52,7 +52,7 @@ namespace EventHub.Web.Pages.Organizations } await _organizationAppService.CreateAsync(createOrganizationDto); - await memoryStream.FlushAsync(); + await memoryStream.DisposeAsync(); return RedirectToPage("./Profile", new {name = Organization.Name}); } From 66520d226c9e1aa39f4d8914a6984e718e56055b Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 6 Sep 2021 15:30:04 +0300 Subject: [PATCH 016/159] Admin: Use `IRemoteContentStream` for organization profile picture --- .../Organizations/IOrganizationAppService.cs | 3 ++ .../Organizations/OrganizationProfileDto.cs | 2 - .../Organizations/UpdateOrganizationDto.cs | 3 +- .../EventHubApplicationAutoMapperProfile.cs | 3 +- .../Organizations/OrganizationAppService.cs | 33 +++++++---------- .../Organizations/OrganizationController.cs | 35 +++++++++++++++++- .../EventHub.Admin.HttpApi.Host.csproj | 1 + .../EventHubAdminHttpApiHostModule.cs | 23 ++++++++++-- .../Images/eh-organization.png | Bin 0 -> 556910 bytes .../Pages/OrganizationManagement.razor | 3 ++ .../Pages/OrganizationManagement.razor.cs | 30 +++++++++------ .../Events/EventAppService.cs | 1 + .../Organizations/OrganizationAppService.cs | 1 + 13 files changed, 96 insertions(+), 42 deletions(-) create mode 100644 src/EventHub.Admin.HttpApi.Host/Images/eh-organization.png diff --git a/src/EventHub.Admin.Application.Contracts/Organizations/IOrganizationAppService.cs b/src/EventHub.Admin.Application.Contracts/Organizations/IOrganizationAppService.cs index b0850b8..fa26ed0 100644 --- a/src/EventHub.Admin.Application.Contracts/Organizations/IOrganizationAppService.cs +++ b/src/EventHub.Admin.Application.Contracts/Organizations/IOrganizationAppService.cs @@ -2,6 +2,7 @@ using System; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.Content; namespace EventHub.Admin.Organizations { @@ -16,5 +17,7 @@ namespace EventHub.Admin.Organizations Task UpdateAsync(Guid id, UpdateOrganizationDto input); Task DeleteAsync(Guid id); + + Task GetCoverImageAsync(Guid id); } } diff --git a/src/EventHub.Admin.Application.Contracts/Organizations/OrganizationProfileDto.cs b/src/EventHub.Admin.Application.Contracts/Organizations/OrganizationProfileDto.cs index 86b469c..bb7ad46 100644 --- a/src/EventHub.Admin.Application.Contracts/Organizations/OrganizationProfileDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Organizations/OrganizationProfileDto.cs @@ -9,8 +9,6 @@ namespace EventHub.Admin.Organizations public string DisplayName { get; set; } - public byte[] ProfilePictureContent { get; set; } - public string OwnerUserName { get; set; } public string OwnerEmail { get; set; } diff --git a/src/EventHub.Admin.Application.Contracts/Organizations/UpdateOrganizationDto.cs b/src/EventHub.Admin.Application.Contracts/Organizations/UpdateOrganizationDto.cs index c90c59b..c2b018b 100644 --- a/src/EventHub.Admin.Application.Contracts/Organizations/UpdateOrganizationDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Organizations/UpdateOrganizationDto.cs @@ -1,6 +1,7 @@ using System.ComponentModel.DataAnnotations; using EventHub.Organizations; using JetBrains.Annotations; +using Volo.Abp.Content; namespace EventHub.Admin.Organizations { @@ -15,7 +16,7 @@ namespace EventHub.Admin.Organizations public string Description { get; set; } [CanBeNull] - public byte[] ProfilePictureContent { get; set; } + public RemoteStreamContent ProfilePictureStreamContent { get; set; } [CanBeNull] [StringLength(OrganizationConsts.MaxWebsiteLength)] diff --git a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs index 0779f1e..e3bc1de 100644 --- a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs +++ b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs @@ -22,8 +22,7 @@ namespace EventHub.Admin CreateMap() .Ignore(x => x.OwnerUserName) - .Ignore(x => x.OwnerEmail) - .Ignore(x => x.ProfilePictureContent); + .Ignore(x => x.OwnerEmail); CreateMap(); diff --git a/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs b/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs index 4e21c4e..9c1a491 100644 --- a/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs +++ b/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs @@ -10,8 +10,8 @@ using Microsoft.AspNetCore.Authorization; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.BlobStoring; +using Volo.Abp.Content; using Volo.Abp.Domain.Repositories; -using Volo.Abp.Identity; namespace EventHub.Admin.Organizations { @@ -106,13 +106,9 @@ namespace EventHub.Admin.Organizations organization.InstagramUsername = input.InstagramUsername; organization.MediumUsername = input.MediumUsername; - if (input.ProfilePictureContent?.Length > 0) + if (input.ProfilePictureStreamContent != null && input.ProfilePictureStreamContent.ContentLength > 0) { - await SaveCoverImageAsync(organization.Id, input.ProfilePictureContent); - } - else - { - await DeleteCoverImageAsync(organization.Id); + await SaveCoverImageAsync(organization.Id, input.ProfilePictureStreamContent); } await _organizationRepository.UpdateAsync(organization); @@ -134,29 +130,28 @@ namespace EventHub.Admin.Organizations dto.OwnerUserName = user.UserName; dto.OwnerEmail = user.Email; - dto.ProfilePictureContent = await GetCoverImageAsync(organization.Id); return dto; } - private async Task GetCoverImageAsync(Guid id) - { - var blobName = id.ToString(); - - return await _organizationBlobContainer.GetAllBytesOrNullAsync(blobName); - } - - private async Task SaveCoverImageAsync(Guid id, byte[] coverImageContent) + [AllowAnonymous] + public async Task GetCoverImageAsync(Guid id) { var blobName = id.ToString(); + var coverImageStream = await _organizationBlobContainer.GetOrNullAsync(blobName); + + if (coverImageStream is null) + { + return null; + } - await _organizationBlobContainer.SaveAsync(blobName, coverImageContent, overrideExisting: true); + return new RemoteStreamContent(coverImageStream, blobName); } - private async Task DeleteCoverImageAsync(Guid id) + private async Task SaveCoverImageAsync(Guid id, IRemoteStreamContent coverImageContent) { var blobName = id.ToString(); - await _organizationBlobContainer.DeleteAsync(blobName); + await _organizationBlobContainer.SaveAsync(blobName, coverImageContent.GetStream(), overrideExisting: true); } } } \ No newline at end of file diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs index 82fd290..72f3794 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs @@ -1,10 +1,14 @@ using System; +using System.IO; using System.Threading.Tasks; using EventHub.Admin.Organizations; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Content; +using Volo.Abp.VirtualFileSystem; namespace EventHub.Admin.Controllers.Organizations { @@ -16,10 +20,12 @@ namespace EventHub.Admin.Controllers.Organizations public class OrganizationController : AbpController, IOrganizationAppService { private readonly IOrganizationAppService _organizationAppService; - - public OrganizationController(IOrganizationAppService organizationAppService) + private readonly IVirtualFileProvider _virtualFileProvider; + + public OrganizationController(IOrganizationAppService organizationAppService, IVirtualFileProvider virtualFileProvider) { _organizationAppService = organizationAppService; + _virtualFileProvider = virtualFileProvider; } [HttpGet] @@ -54,5 +60,30 @@ namespace EventHub.Admin.Controllers.Organizations { return _organizationAppService.DeleteAsync(id); } + + [HttpGet] + [AllowAnonymous] + [Route("cover-image/{id}")] + public async Task GetCoverImageAsync(Guid id) + { + var remoteStreamContent = await _organizationAppService.GetCoverImageAsync(id); + if (remoteStreamContent is null) + { + var stream = _virtualFileProvider + .GetFileInfo("/Images/eh-organization.png") + .CreateReadStream(); + + remoteStreamContent = new RemoteStreamContent(stream) + { + ContentType = "image/png" + }; + await stream.FlushAsync(); + } + + Response.Headers.Add("Accept-Ranges", "bytes"); + Response.ContentType = remoteStreamContent.ContentType; + + return remoteStreamContent; + } } } \ No newline at end of file diff --git a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj index f67494c..138285b 100644 --- a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj +++ b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj @@ -33,6 +33,7 @@ + diff --git a/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs b/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs index a2b47f8..b059e42 100644 --- a/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs +++ b/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using EventHub.Admin.Organizations; using EventHub.Admin.Utils; using EventHub.EntityFrameworkCore; using EventHub.Web; @@ -17,6 +18,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.OpenApi.Models; using StackExchange.Redis; using Volo.Abp; +using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Serilog; @@ -59,6 +61,15 @@ namespace EventHub.Admin ConfigureCookies(context); ConfigureSwaggerServices(context, configuration); ConfigureBackgroundJobs(); + ConfigureAutoApiControllers(); + } + + private void ConfigureAutoApiControllers() + { + Configure(options => + { + options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(UpdateOrganizationDto)); + }); } private void ConfigureBackgroundJobs() @@ -78,9 +89,13 @@ namespace EventHub.Admin { var hostingEnvironment = context.Services.GetHostingEnvironment(); - if (hostingEnvironment.IsDevelopment()) + Configure(options => { - Configure(options => + options.FileSets.AddEmbedded( + baseNamespace: "EventHub.Admin", + baseFolder: "/Images"); + + if (hostingEnvironment.IsDevelopment()) { options.FileSets.ReplaceEmbeddedByPhysical( Path.Combine(hostingEnvironment.ContentRootPath, @@ -94,8 +109,8 @@ namespace EventHub.Admin options.FileSets.ReplaceEmbeddedByPhysical( Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}EventHub.Admin.Application")); - }); - } + } + }); } private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) diff --git a/src/EventHub.Admin.HttpApi.Host/Images/eh-organization.png b/src/EventHub.Admin.HttpApi.Host/Images/eh-organization.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf5b0c5b469a1b6de95c7c0ee5f2f8d2f2dcfcd GIT binary patch literal 556910 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

)d@BcEnPKlNhP?d21tOH`jN-8Ttn$zU_7I;M<4 zl6!6*9$S`;Av-EpJNqLH4oow|B=bMFS(`UPXJz?TP}0|2$RmOp0j+}q zb@8yxkmsj2l9#3NG+W}79KyEL&TIk)6vb;l7#z`eML9j_dqF!jx!$=$fduQ#TrG8s zz!2gTPepYeYu6gPFDpsHghU-BeyO4QC_loA0Lk8_Yo5d6aGKnnFQ5`1Zu)$TU$ZhS zL`d=sI^yH_^Q&(&K75grDkby!FV|0I{?lvMd~#WxA%r7hyC*&VMncDxtiqrGXi9QrNcxH3$3o_ zx0(jUL>l5Oa~zgUb=?Kt9to&bVz-CA4aMj9dK!rdKB`jP3-#Ia7x91o^}~nf=dNHx zUpcalz;HRX=JfYDkE2~n3+uCz?b6OrcDQz|9dfsa z)wqL2MucO8Sc^JNAV9o|9QOn z^eI}x{?)SaUSG(6piZjUNY>kpjh#uu=&9j(ECf6Fhbw;K|Ador<*(;1zflN@jUa#@dXTOPWo>|+geBaaoX#2|a~K74a|EKrsJ%rkkq17{85cBWdeJb& zf#1BNx$7ZjS|GPDr|b46esIj3tR``W#af@Xdn?sFUU;d-;QtMj#%tInJ5Cu_nLf{w zpHTXM;96`kU*=9!p~(a7f@jq%I?$no*l<$dq>aC)%-)t`1tDS>IGF%1;eWiFG}`xY za8@mW2%SR6)}*I%NWk5lqV|U1h+hs!(hvds^$<80W8k`mmUPyzwU5nJG(*0qt%+6^R(>aG?< z`UPBE;Or4Q4dBXz@^-~Yp7AiJj_8uOS5gnygd0ef)z@XibS(=QMN&$;jV; zzx*@`qO>Kko2bBcLQC%h@e4*>Y-hz^>aZlV1qvEWlwmDXH%3emw7cU1NiSwt?bL|v zqDEoHxC4e| z&QcF2<>E+JNaJ!y>S>ymx`rub6w?6@%!HzWByB}0kQd4Kamtd#K*@yLCkzX>==m}-aG951EWpfZqTRDw?&8U1u^7Xkq(hwfB5r1pI+lJ zyC$ZX>YaEBfQbaC5^LsvapE`q6^ca+QB>I?MlOtYvY=9lHL$nC6gpR2F64UI-SWS2 zUHsp}S4AiznSC?2O9}u}8N;knt2_@Qj2FxD-yR-N#^(O#gdxX^obTfv|HsZdj9GHv z^Jg#O7surl&#mQ}C@i0 z!_R+~SagWH`9BJPK9RwJ!}*^j^rDX((Is1$AIrO{IKdqxUGSw~&$21(;Qx%&RsbiH zsx$BW75+z!a;N4qxi49sgKBI1pXC1zp-{wO^>F1jLB=fh-M8P>N1y&CpMU$@FanDQ z+Q9<5M4T_hIr#s&T(TL#j+eVu&2oEr8C*OHoiONm2(7nX|G{y21-OuiyU}fJg9}&{ ztFhn{5Fswu?p#BO!>2=)Bo+&q0oFeE=Cv_c4bw-L4PWR#IN?6pJ>7B`$GkF>$TQCt#=s?RNf8OEmW6#h@Mi+aCHoJ)tm$S?1K7kV1HR29nT9;z|0@;^iyU}RownJFa$z@BJ@N<(d4UqrPb3u0rntmnL)&!ijv#$+j%zs! z>u$GQ4i5_tmmv^ZyP6z{>?Ri0Tx71Awfttkb#JqX^XFlv2M5ELv*IC+ zr7@hHC6DqZ-D&uDEi!VDC$A#MJr8&&Ai4(s+jw^#nk1KZr56C7vU^-P|C0sJ?j8Bl z`3jC@4#^LgM8_Q|U7t`D)*zU_Gh*#k>B8YghW*-aniyWV=Xg zu`6Z->}q|ZzSw<{w29d)hhMX|jw+GHchW~UjYOeoVP&ketUd!3M~QfmO%DLVpiPI5 z>KNU6>2H~xWveI5%-6{wB7l#G*r2ti$$S>Vdc}bhxEpq2ILZGeN`{gX)f_S1+ILShhi%J~~{aLwAWLNvg5LZML3utI8 zP0nU&jEa%b?V8JlX8|l|WI1yBoT-$3soplQ+hQu(cI%D@5H6Hzi7KYMZC6`R2RBu4Dr#p4%+4`mGdiF0JbI1tDcb#Q zuaL`G+!(9{+{eVC4b8u!3R^?6dS(sc9Rt*{5fJ7hLibM`Vu?ry+zoa+CnfZ(#A;o% zfi*gPQjXmvuCSnTy;dC6Zj4an&{nKjc0?&)nSyjHj2*LkfpH?&xxlbm=62SJihw}s zltZ06w|hE#_}oxtD5J+44{`n8MqCqGqtPc z*xU3@1%RgJEBwC5uSb;U$l=u1^A$U~jDnfj$ky4@B7{Cf2c%`;ZJ@IC~c>8Qv@mrMMYzx!#t^5n508Mt4R z;ngV$a91o|_NdqxXTsj(e^I#Chp07?_7+P-46g^zY46fd%Mky!fh>5_`!6`b61fjo z6?B4x(m>7s53jDhYjL5s`?Ywq3wvwv-FMgc?I*v97vH{MuyyH&%eaqsm!v(aJU+tj zQ>)U@wLCZrMaGD;?_q|gnbJxjo zj)D)uw5YE-7g{~}E=-6^_#K!l;mF8BN$4+7Je{6>q z`m4bFMVNh6r<^gkb`-&_PHi+*js;^=R~0)Mrqo^BOo-eogx)gM*J?Ub6LTLc@`*-a zKj5X5JZUo~yz--Gm7r@2k?9>WK&iasICDAy60$Ad zp*XXc!7!@>lArgzqRWZy$++a}>!T32npyjV#ME>^MLC~1&lxNf14@~;so(>pS z{sWXpAJu-1zVm2UQgO>R{72*s0Zy5uBevl;`83as?EP`TWqcI9c0+MH>98`=={9jG zEOqt_O7h$`Hye*^^jfl{BU)ttf&@NDPL6?HZK$DhbpF>_{iPS$xUx$6nps)O|G3Zp zPB_Qq760-?NA~C0u{O7=2iBTu ztR1dx994XqD*YHpz~B-Y6&6gEmwUm)oZK;naU=b@`?Aop%POM#GV^%(JdD=n>Uysi zHx^dMlP9m#-~a4q@yaVtx=-hSNMWFon2f~+bOC1p1Gc54+Fzt|BEM{C?>zJP68|sZ zi>OEri9KNa>>B13apM1)M=3LXu{Pjp#|H%i-xIIioZs!hl0`9P#aUFXDHf z{`O(<;oF2A9HZ7xoLQU(J+@-qxflG5)mklLbo+&4svmTN5y>n9#W1(0x4-v;c=NTl z#sA45%FwaSJQaIjB+@31g*R&(Zk!76f9`0>fSvuX(7ap!hx0R#Vnzixw@aKfJZ2^c zcFmDf#^rGEj>lm+7U!7(QW1E2UMD5zICf<3XfC&1<2`Z|zG(6R|0nqWj#(ugWZC$? z%&r={2kiFZ4=B;$Y+d{Yx=tFG$9HJ3L|`R{uZR)seaup0^%=nX?YcXJdZ9oG z_&Z?~&&Whs%>Y`NUolJUObh-VI{`EbFU>Cl3swMFu25HS%sP)i;5UGdRtwsBRk#= zCsJoI6QjyTp6U#ZOgkfzJBNglYNh26rK3`bK{d4hSFULZ!VV5CEcMCwW~CD7E|HW+ z5^RLtl0)EDWuq*GOWvS`JpY3+;lb9~+%`lcW*(V4YCzNhP;hQ z)hu!Kr1W?)VCISrkPDOOPcmcTYfOR3QprMtci| zPQ~>vEstCEgka#u4w|HQ|JB|OvY;9TR|0c8*94nItjvJ6i zi2q~b{|JwrR%#TvRXK>M>iM_N>$iP*#hOw9(f2%oe=<`dhA}qAZSx)gTPf(jo~OgU@9!9V=!a`(mno1rG$bW15XR3 z!(PC&2y~0Wk-jn0)H`fXW*AWn7sK+vXL4wq?~~GA8ET0m%wTLcg~I` zM^zU93c54GnU*?)nBf*V@!#@8E_X#3|3{73xjim6P@$MfGjB!N0>MJh&X1we7O@D$ zt?*s1%WVPz2Kgj*H()lWW<6_3`=C2lnQBq(WqddwuNdf%Ga$P1=5xY`*vxzUTxQKl zliQ&?FX-u>O5yB4V@PZTk6cKZGw48YL+-0ku#I3aLX(jVoFx9lrsIw5l@4qktt4YgTa>ExQOIsxFsMlaUK2`BLVoNIFN{=B%%l!> zV`nCVbg_IsO1gP?j4)DUho^3iPzRtliS~CjWX4F1wtXm?;pAV}>B^Dp4AdkRDPJ{E zJj^CEVN_XCb`Stk;j;={O>`5gv$U1M z7X_U34!!9cKu6BOs;h(~Le_hw_zEkX<4)+s~ z8G|R2@-SFX;1(k>fkdmXV##!K+?psI`_Xk{MhDS$4L-E{jc_|c=)Femn91l(6=sXf zJLL~CiWr!|d^S?sV(yaM^*o~OH#(wdz=COS)UNYlTU5GT3uflO|`Sqh8)edwkd zCa>$|qcQA~Twi1>+86cCkW5CIp=(^@IXY{v$^SKpzRu!~cWrs)t3z~$>s2;5CkEup z=2bT}B``2D@3rjZ{O_ii;!-&0X$u8<@?u9PqN7JP+E2wp@@#*hsE-(eDOV#;cG#?9 zXQ;wZ$pkI*P(~YuI7+=9n7TAOE`Z=Z8>Z1n-h%o+*SM$_e^9GrrwFwE$Yr}1z zLUXiHEZ5L(N899Ljh$%K>>d_#f4bepIsi1po!IHHUUj7)F>8l)C2N_|y<)^_E_hek zzE(CZFUc@Ugxs=`LDzkEN+xt7pXn%c(uGigEZSAFji78j8GeP+LSaInpNeMP| z(*M#v7nly*z-O5wXY?o*CN0i-S4_07)5f8NJ92>hGbv+{Xtg+`cpTW|+mbhVAsn`2 z^!OdyWq@Q|q!~9t!LUTAD$Czu427{S;t5uhm3o5UXr=|1%*c~vL96n85f4SvJzf>c zm&gfV)X^syt;#RH$@s&!%R!lgtA=HN{IKZo4^In-RRa#XXsN;wL}1H*z(l~ATmEA` zK07zNY4icfUsd8^w-CyeTiC0u{8!g$qRLC@Z+KRwbjVBiA2tTslrph3XHGSuS~>~= z0Ff#z8S^nKI8cc{=tyEm#G2h#i2oxzwkw1&Fj1zs4DO0;G^t$@{P_4UfBEKic}3l> zRWDwNkidZ@9_x{rs6`4bx_!A|T{h5Bn=xTi-aYWE5@ySs-w|`G&ydm!6{wklixd`$ zK?C6fc(z1Gj?t~BElgBj0uf^(+25CyISoevbvC)Y-h6(`avJ0P<2LIhI42L>$jLnN4NDC+c5&D0T;|N zb|h06|3sJ^p}b-#MLXmM@vSQL<(P<+(^f08e+>Hf*X+JfSa(X4<)OI0hGCRZdT@t> z`>zx(OriqbH_$BK9v|=m6&RR_jzUcZCJO~UoT2V~aU6U#hh~^Y)myR)lTReVYZp&j7V91bcLaeqkBOjQHgD*y|ZKo_Dhbk;q z=H)Dtz|H~WiFp#{F%AH<-yKZsI8F?C9iZW;$!-F36QV}7;0WM0;UQwu49g-#uT2yf z;~?QBN_eQpc(lTpD*!hV*>4%Uja#9tY19K`qXwh&`O)7|Mqdje|ZJn z@$iCX2oq>tN(M$%swk#5hW#8^=Jqfdut5W7bM4W02op_|&^5&+n6RWeexV{zGNYst zn-(Hy{9J8!-rAaZF=62#U<%?#)G5jn9i{a+#u`Dc{O>&LK3ZZKZrNu6 z>+Itl-T?>s=dZuHU0xC2J)F69d$%bwn9Mn=#a@5Q+~<+oj)1h23k`Ih?aMkh_hYAo zs}`(%6l4jbFpp4ur7XgeHOiS72$1Rc+B+_|SfVryZJq+eB=M&x9|Wuk97bJAV{4&U zzkPnYr^A2!+26%0PhN>t!zlmB|4dh?r*81eWJqV~8VwdL426^322Io$tRNuf6hmwadm$ zH`K-C|0z(QewvFS-846L@yXu^hw1s8-}9UsT~ZsGu>KESnvs?P%sFNi=M#kG>7klYYuH6_my6na`Gj=!oTcC1lJk5qFHWI zbd@N)9~W3R<3t#PF~TY@IdAcg&85bpg?gwPFLXiI2*l||T6_>z6jgFi6eK{3;>5E9 zFex;nzc4{O9=&4Ok*EwSEaD2mN0Jvqp^9loar$d*CO1#(;OpbOq}1Pi+UtzBWR z#af+i4I$>fcA(&yta_G{Kq^Rm{8t5NX@~Upv$K=W*P!d&9=ua zZmxZ&dlWYa_3nZ(YvAemU*Vusj8(pmQ~nMCgfA;3x=)NC_zoy)XKNXh6>E2MAWjSV zb(PUs-02_O7?GH46Al>tRjS)+yEZtj_N;iBbwkm6J}nAHj} zXBmI4bE?&5^q)Pc`1!iL0+8=D&B*LbGS=ubGtx^4J+FpWVn%x@(&ZUrAf69jTz!|& zWSOx-=@HkEdk?fNEiOz&0M@=YxE*;&eiTe>O&O)!H zGmeZy_B9`fjDY}DE#XT54{MtpS7fRxbb8zA@XLSsAg>RL4r$k*ql;3#pSx|qCyGzZ zjnJ$JPH_j_I^!~v_YA5S33q$j_eP)%f+ph`W_>DX(-DRn6bdHxFZpBMF7H>#{ZBpXKC4(=$xQ0*3$~d zRsIi$82{IPSb+a;&);6Z&EI|Yn|$%@w;+jFG3S`aGSI_+B31RJV;Km~{_eW(20gkO zI48md3TD|R$J_t!zWIJWdGxfCv$_w2J?^cR?ovL_oZ{N|-SViWrT4{%v}oCnG_xDL z!yfBh^ssv;hcylqAKBd8IRlNE1de8`h4X(S44U4QzFdf_v4t}@$|8*`C`_zU*?=&p zK(40qNHOcWw6U@(wo;M9AU0w?8*XcQ#(qeldBXFNo7nh>(#5~oUb@S1OvSbsdG2D2 zZ~S-Mm&4@kLq>HHqqY{;!=~)6?Y+kuMZTbW;2#)-%Pfo!K~X0?tXcPS!*l5B^ASZ9 zg=7)H*Il0kC*pm;mBFAh;ebA?O2rs@%Lq)%{>}F(m!4PLVlR+#*ISV0h5)EX+}Zs= zAXFN(kt&cZh2*Z4^xc+{nWa_i<2@7uu|$_*`02upuMnFvc(YkLwm{67Ctb{>n7JU_ z%6eKFBuWJv-tfe2UQKN59*B)fcTjgsU>=E>^K4#Bp6f1Br+`)l4I`pvh#Aj?JZfI= zvnH`!v)mXK@Q(7#nn12{1<*tbEAwV_7V@xJgjGuwZd^Bny`E!r)Ri~QC9e^~07Xb9 z6;OSaF79Af03`u2wSVrh#JDb{PDc3k z&&NArN!5AGRtSjKtg?V*7v}OP7E8;wRo^~* z_`kl+`pPjzF=xt0{QOB|FFM37fEQa6qe3amkRFE-7sSUA#_P*weFzPyL4@ZKagsai zK!g~|MLFnNsmT)jHk~XsZRo9yXksj$^nwQTjysshG2w+i zfL5haJ=x{%chtGZG3?0$EC&k4lP8b!c29@fPiJZ#Na8~9K$&@Ig2EL7r;SPfd0AQ} zeGROR@km%S1hCHkozBe%63@(2M*kFxO#>6+_M`;oB-Bk18Y6f9&*@?54_S0cu&WDjmuU4%|8fybOg0wU*EPh+l<@@nD>2sFp35@ZKNB{T~4Zgu^2B3pYEn4HE!1PqU|^vDxeq%f3$p;l#x4q^p_ zl=HJc+uJ;SY=#xEHk%Na)OMv;8*3W}Xdqd`7p~});wPF?6zF zl9;v)(jJ(<|KzxqCf%$LYFf;rtFZNzj;q$agCaG~95R$+jF8hzzt&Jv(*(N^^Q31r zYeBY-LQJS>5|~LQ0>vl03FXze+yry9R{XgxbE&}PvW-IfyLzUTrp@L)P@OW_lO0dq<<@f8?(%>zJkGn)?5R|LVsg$eMHy$f-d- zuXRd06%J#q9Ee` z@^Mm$fQ*ln1X?^xPu^p!YgKLWY=I6LEs&AyDrrXn0{#c~qN~aOrQ(&=*!-W{a|om} zCM@JscEM;p|Mpq@?z3O#@heY&frUV6k=bJx1R1h$nGCwJO@(02b1tCb`d>U%k$Xv; z$D+e~Z~bjNdHgh`OBhggqII7^9E~^wcaHpDxD|vnie~S{B@v7pHtWQ(&uhk@JXReL zifg;{A>ii0|0X}{f0US$|8er=j?UYoAh_*U2LFRwZ@Xt;##AIIsLC$`OX^%3|Hsb% z(scyr<;MTAi)U9d3L7_S<71_kJ*U1K^*<=HdSOQC7ApV4?$yxg-?cLP4b=Z7;BIG7 zix`-ZCa>9*wnxn6?kWM4V^ilG?8iYoVw4>0y)19tkRb6@uq`oTmXI~GWK_%}=mcyC zGhX|jUbtRg5~ma?M~4+kZ$%W+uIOB7(=X<#sGd{uNR5%&AuCD0&W4muvO(+UN!>-= zkSjw3WniUw3pr1_B)`A&dBQi)p>Lv#OTiM&sh?KG*a-v7_SWGrIXEJYC z@buuTlaZDyrNV`2g#bN_(=wu?|BW`d(tc}uOfY0@H-DfG2vfdeJ=4Ih7Lg|0(69Gv=N*Qu)*fD2lGnsN9^iGHT z>N>`A7((mYPKWyW6T6%#lp_vb3|7wz3X~cltRz$bwOwZ*r=PuzZu(F-!7j^}Rz^VQ z+f=Vum}t`1#Z9<-Q~Yn}#QJi(e88EZ)?JESg`APg?N&goRTw!bUBHpg2HICDF?WB8*HE~!Av z)6p>yo_dr;foxJ7=b^t>Uw!TP^@>N29yQvje+VRAnX1K*CcIvRPeRa21Yk(ocd*>d z|ImCj5L`HNnwT>a%2;hb6Fy@rHdV_(I_5^1(Yl)|B9?VPt{yu&NB;A()-b4p>|FK; zF4Qe-dH(#_?M9OI?RVd~do)z!;DOs7 z)orK4lSi*u{`VlI8~WuI?MXI_rO#pgIP4 ze8)rQYUlQ#+tu)510+~0Xo;1MU0{aAE+KXuhrHg6j0EsnTCdA+CMK!i?3h|)Zh>0^ z%9auLgmW2&%^`BZK`15;U5Qo6z6Vi5SHM!$Io9E^O&)Uwbtl^M`!q+RfMVKchE)1< zMbyeNzO@TM(6^6vc_6P#x)s>5Wn~K(9lh?}ie3#>BJtWQXCVLxH3;uwNOpXHy9QIG zMSm=EPk<2?c$ui;V|S+O4)zA%d{{R(L!Z0FRZyq2cH zf>fqN8Qr#hC?ktpi?`SmNo1ITW03=H|J^3u_E{my-7+wJ#+gm1v1)ju*mH?D>8;zFWzYdGQn-=WL)10 z)5ADSjgp(=R9fzc&_W`X6uC#|muLc!w_7*h2NGxnj1Lt9oM2gCfENSc0*n=&f9MkK z%P@}dP=K+(&eWr2q}pcqHt+HAC!eiFhvJo#2st~Eez;rj3Hw670tT@UUbb+sr0r~| zneKJcDb9-OTvCs~_&(>J*7wS*{0$~LNlq3`E}+ayBC7E~CCzdptB?TFh4FuRP22XJ za$F96TPql^JuEu>*Ps2Y9$g;M^9=p81+Ja{yLZTt&6&yk&%prw3B}A|m6bqhYy1z( zT6Xa}>w;hqjl-g+66BV8C6;XNsAB%FEP*yw2xjlwfbm=Z76tWTQoVF+E!d{E4ij7; zt=6AsFP`V`KL1VPgbb4PNYJ%KU^p;Q3?k>)?>uQF&`?LGo zw1u`Dz4R0K8&nsp{1f!=_N=&JIU_ zv>$4dW0T=b`1*Of0S6;;5!}$t3cSehip1d<2V(negk@Q=4(*#CwWAmKAcA~5q^~|q zwP2&{oD)drXc3Afm^3pO29%(-#uAx~QmC!m%~c+yeZwEOX`Vo=geP5;B|%l)Csj_V zJC*}Hb2X_>J2KkmnFeCnb{%@DvM9%DbV0yMlBjINsHFE96V;$db3|n5Mjf4~ba9F1 zJl3tqFLOwLWfoCt7^y`JFVNPy%UH#*y!2X3ZmJMVU=Pnb&8|y%Bi-0TIuR$!8T|>_ zu%u8AV+1I(Za5^RR!m6m@O(DC9lgwcFd=?5AQ13ctcWayc`MUIBax=pGMg!r(Ch`+ zdf$Dw;WkVQqJ3vYwH8+4WDH94siH^C0KJqI=4dTb+2D-zf}J~;2DtkxVvQw0isq;) zYr^gDSr{`^P%O6oCit3cFFf_6PFsbESo|zI&a%0ni|4 z^MC8E1HTCFR~0xgV1~hAxWSTwuut_As>K4PG8~FgbgcGag}fF6+^W(mt+;LNJK$%L zhOWWuM`(1}c|mMqr;&&f^(){0-FyLn_F}c6<==wB!V%_nKwZKE> zOn*%b>^t*c1X!Ymg7CX(mTXIbim{dbN-l`LY$FY5PGF)hs;sZD6UROO+o)WnY?nDc zQEl@kV-P_DX4YZ@C!h^KmDi@G*PcGjpa1l4WpY?gF;%RgBf`ppN&jh#Z)NS>M~>Vg zAyE1qt_#Rj6V>}WCON@{9lEO#@GA8X0-2_l@tjp7VbFNxWWA=*XdvhRqR=58;2HG9 zpw^L+cXjgY`8W0HAO8@Jhrva+w&e`p8a1Q1BG2)uoj0ny!2cAlhol54`>p(a^yo>v z|AU`CEIK@DiMIMb$Ie6cmB#;O1FO5{qdo0av3U~T$?L5D;rK?8gyX9@v`$wBbQ8xr86N#8(VG>rav}`G)G_lKoC5N4Dm{mjdHdgp5 z72`#~fY;JLXfcYI=K_Y)#*X>@t<_%PImRdIUS$N7qQNHHhe3Wk)G z$Qa0?E3{a4n5x3a`OHrlzNNp5&vFVbHB(ldg;H|r>IiFBn9iDt2HSy3h`yNdpP3R zL+k(b&E>Y!0itXBZ48GTmsY&@xJk~?8ieiHlblE@|GV7?rKyr_Irm6nO%r-eBUw0r zYdtIp)!Hq#`Y)NUxxHc6Pb^sZJm*cwIwFOdS^6)?w>BG!ivOdEJIkQp;Q!RFvpxSw zDu<5OQ~t{Y2x|z0bfWPnwI~4?qi(7z`CE4%{q7GB|2_#V7yu^0|7H2F#9pz1nNY5s z4W94(6Xbs^LR^noc5WcS_%j~|morxeh3Kc0A~6;RFrNzBU15*35t(O)w&}7XHmVK2 zk^#Fst{dpAG{1_UR_iVc`r7`?I|z`rEc^QRUXP#tgH5;DxXViqACu!#Kt22p&; zW3OSY1OSM8WSs~Ne#9yB-!ZXWU1J*g) zC|s(u7Tq3Qo*Xxld~|tiI@v-neJbD79sYOr6tGX{*z@l4@ZyQJjPx1^dYJpV{5N>H zdrzzMT4`4;DGZmlu|u}=qubI&Uf3D`pES%!FUk0+H|Y$=6`bTIXdcN0&ap5*O_b{tc32H3(|ejOF5m;Wn}^#x};BNBqa!cBA~W68;*i7GsEjy z0S(AR4h`)|?5+(!wPgpA6^eNZr-Q>f-+aJg4?(i}ULn}Br*(nQtgZW18D$RO%r5YQ z#4}x9oCwScEW)-*I5{)-_f$w-W4zk*^|5IS47x#^OkuhpRwxtQ%1R1=iDANUH72>q z0I8n~%{F`AVK|W?=9mIp{yc&(FWMHcanr8CMbm+4!e9#Nhu0XYF=Lk#NDYXDfC=)I#iaC**a(bG|AG0_!Rv}#&BbC1~ z4DEW3;ektDN`00MVu(9qS>uGNp&GhO$(guF)?}{RnaHx7$&oW5peo=`;p^tin~igj zO#mp(&$pcpb-Sm-vG{=8X%l+h90&bBuU5YQ*cIwxv~#UfkY|gP+C{dP(1y6M=Z zdyYdBXKD*^W?>ap14%;izu)|>w}y9owXY3&YcM17G;fo%4Ptupu4L;~Uxl2o*F|pX2rS;rR7d$xso=ZwaSUUbMOkDox@Bm&O5hM(1-${4>)0TaLw z#kq)m?t-5S^_aCPA~$x#Oph8mPl1Uc<{fgdNH9FP}@-edPzQGh(^e>0iD6| zNhklw&^{hfLTFI)AnmXKNR;a2RMi7ha`A$2oBI6_dI0cm;1qd^aqz(M7{XKeX&|{J z2X*NK2w>JE&1^;OY(XG;VFT=3>v9(_BsR-8+$wt-Ov786o<70stS>PlecaXunvbL# z2f!`qU-6eEdeG9#w8(0gP?o@8(B3{F=wv8CFtbfHXL{xqcL`LGP9Xv%+bEA$wNu`X zRZtH@!y_oind6z;joN{{E*m{;hVGJOPA8Pvr4>|>63WpU{Upy8Qhzhd4vUh+@gfNn z7KdS?2013Ja$0RIHTID*@6}SJ6;ZoL7X87B~sbTWYq)i|ed$@v6s!4tW3pH6{s`edCbKJ*QTF+QLQ=Q5hbFWd#bzp&xD0c$F5} z8NPLtFi_tdI~}r~$;)MWf{v&tC+%eN)V7q4-0stn1#j!ZS7a!6QK=>`7 zOaq%0E88QTxyr()@gmDOGY9}9+A2cnFRP$>$a6LvhaA0UXp0%6#`r%oXw#fn89?KZ z_gAyNgW_f-s(i}N6F#-s%DyM;Q*(<(*=A97^O+Nbg5Ao5*p9*7rLf#W9)ns+t zg8-{o2!YUo1ZyZ(@P4nxGqNi3mLD0hC{m$Kj&}YVl(4bwY?jaaJLXfQ~i==?~s|`?k}eBimn>;*P_G6t#WZELkFEon$@Bw)B{Z@LuP35RS|oVnw7`e z3ChB9$Cu`}k9*PK@#WDWTLb5&RYL?I4R%g}DY0HA?c_Jo82lerkG4@ummFfDp(&sZ z6iE2+d1U71<5W9!P^2J}A-nd8vb8J97vUvd+H*F?Qdaxk<`SMOvn}#QW^oeISFHy=+f_f2 zvx_fW3<@>~x1XW=VM{mD5sZp{$~vN>zdbB>Rf^3xU#*jsv%W0zyX)d9Xk}4(&|#*M z5xVxu6QN2!$wG1rI~FoDETLE_FQb4Pk`-%U{aT63$r9l?u(E^CHroN{3PnVPNtts( zn4=Wp4&5Lrw!isfh$SOsjNEZClJIrHhG={Cc$kE%kmC_mwyn2qb8Q5qDmX!i5#Yf7 zA8%$*BRF%!)X1nJjuzGpJ&|)(zw7X}JeUPOrU%PB#DFVn9b zUFe#1iuz8x@Yg-ok|*!9I7k@DBp|iRW_IwDYdXHFNt0%xq4_G5DHN-S4P_2rIoHtu z+zL#WQwIdxu~o+u&W)Fs%&9dkh~?B`zI5DlkrwGnbBn#@2=TNSdq@zK$t7ws^5=Wdntl#1^*#8%U@ zh1RHvvzh2J@X+SI@t`j(dXKxL|7pv5{XXtTUUU6G=NX;efc)}uZ9Q7Pv zW9=SDwhyUa_Sw?YVr&|#AkmtNSLm{h9y9jpQZty&sdd)b`puRhRIBIA|GL!?V47$W z84?=*_l8DHG?RRw$cVSGwF_jPl0=HHP`15hR1yM^`G*KuRiZsIu6d*ezr0ZkBuvho#Exks)z-1Caday zi+@JTT0<=Pew8A}XB|_I@^QR(TXcB*C}WgPqfj*TQ1wp(4hC2pd%WlFGPcnTTc&xB zZm3*!8lP}70pFYfuAQ1j`%oCi@A0_-E(uP^S9sj?C*F{*P@+X*GC2 zcQo^IAk6hG&yXRw$g=~d29SftRDtvHU#JQyPBugv)30z0>P9U* zsm)8exc6WX%k7pC!CfUI|1aH=d(mPD!N@aeLJG(Z`g`wzK+7R(%p$QgE9qoT2}9W| z|G~6;4m7$WOqu0mX&l^%?P%r++6bol0dw$0U!;1WWD+JK@3?Cg>SO6`Zb7kWsgU0E zSIp+gDUd4%8v+2OGcxZCDEhnGGBw+l6&6j*#8Pf| zU&~3J|0QQ?P{vM5ATxaSLeF*6Fu4$x8HQnIFX&6VSt(w`nxko%%q+kz0_RmG!a`=+XV2W=mI@^Ot?lY(t5=9n89d5d9by2zPZM2 z(c!qK18f)JP$tv-!z)#9TvjREej!8yUYi%Y;6g2`B7wg`(FYf*RzNB8Y347kcb(3s z5fB`!OUM=;wRtD&4ENVR@G^G|7Wuy-to8#URZ{q{{%hLX5TF~kgM^%YD3s`H!vei_%IqcPiQzCpwbDej2l& zUjQw2_ttVA*lLV6Awt56pmDR!c<1f6W#pHT_XHr%+Bc+yM;GHsT83j-)d|u3D_(IPnKQJ4! z*&5<7p2F0F#S?Mem^N1gYs9PZKk@cxlxbzAgRY0V0vX;Bb(o>NUhRYS zPIM46p%9PqK5FNQodU_XK&wxcNVOlkR zT@CNs)($CNDaE(THjb(@&_=)00=W7{Kbpx zETiBNgY;lg>s_g^8mnJ5a&z{EnMOiqBpt~y=pGQ{u1^9HE39lWQiAm_7Iz(W_+zXg zbWVjWwyC<=<;F4zy}+)h0W_uSD;1=X#)M^Ipu}3{!uG!qDs(x}80CQ4;t(jUD9OvZ z#y_{Z-JCTa6t~}%TfcQyELg&4?_%*Nits=Y+9q;HEaUTHR!pJEqN@Hn1RWxA=7nKEnDx0itairlN%!Vp@?;9S_G1w^<~cm&qtVl~N7A2x0+h2C2=$6ZrI~mfv+>hpbi)iw^a_zga(>Y28__uZE8wUjO5( z6>nTH2?Aot;21I?Qt~M;m!5*T^u(?5iPSPvqIcw;@*kODFvhevcDP@!9g;!-daxY@ z^*ZN!1Ug3IDS_O6B2?d~i;>!i;{VS7)^Flpg1n;RN;<}VGC%<)>|&wlXjg?oeD$8O z@xN!Vj9a?SVc=Oh(0dX-EINF0+(;6W->X;gp1vj5TSvkroYX8{ViBoLG2;Go3#xOO z7QA%vh&EHhF35*=(w#-N=&dj5hKgW$muTODUD3IZGQc$yxHtI>R_d@_hxV$9k~GKk zwJQ@GV|)Df-hDUTd*_{+rB;pmH~{+=JFE}F0VqP=wNa-(V+vX3n!v&CGuYa2DoB~mJFC8^v=#d@nP zKghLW+wQo`!UapFSPo}x#*I0*E+mmBA5=+qELhT+xh}1e0%hRdF>YcEH*-h}%;(vEwO*v5(IuOX>Dl@m44+{8A zDbq}!Ywi^m&?h926zvMOup^P3}QgS`D z&IB)V_kfYFMPwzJ)np!&HjYS{EQE>fCxIPu%IwXq>g+cadKnJColsUJNAo~mb1GmT z9@mhjjdJ_^;7*9U`Hw$%0jM{@VmpQ(Xl~Y;lw!&9u8D6eYBw1s;zv6{Ikb)wjL=7A z3(FpnfkMW6^bz~BtDQ|m^%UV-?0M8z*Sy`+;kM|IX3x_U>|xO%9u^&{7ahXnj|^^U z2Of?^ZL0^;(J{dEKBw&{^>{=d>C!u_Mi7-c?pIcchsrt;mqidNIkNLx32e9;Tyi54 z8u}xdp)LNE@}&%S0MJ4sb1VFi6ZfH4GG|fFsJIm#d}x(A@Q*r+B%qvbizEz@vFCF@J1SIF9)8PoKpX5C5G1 zJH&fiNE$??h@^kol}X%!xHGzxXbeu;#g1F!V1Ux?JX+2}m{%UZ8t=dLH@ABOz)1r$ zo0bmylzoJHdgMxjevL4SaDIr;!m0VDYQ}}SZ2lJlE4G$Q#lRw%M$OAO3h{50J@|Yv zQ&}$g*PTv-|5aY!smcP$6-61lF$K7NeeKvarnBQa|0(fH_`gTW*e^BN5pTIG*=yOq z)1xdWO#bLPyEGrlxu}Im9!d@Um3YOJvU+rf>6rW>&1=y6mj5dsz{l#R$mUpZzyT4y z=Z*qzA(Kj|LO$o&aOg$b^SX=u`l8c=Gqefd0&kK9^P$KT9qwsqdC74nba8dfs*3f9 zm?|AqhK|NB#f0gzP3U*j$kVQly|y?-F|#RzV47hCO9{jKeV*yP1{qEvD&$KW*LFz( zEpnvVA;KjyXQ7THXFHM-W(q9~Q4fU%MzCV6Fl=$Qs0=V*i;>TG+jd~3U=X_|rvaF3 zNePfvp_-?1_kMq{Y@p$p6U$E18FyeSe1brc5?01{^x;{M@xV_3jf6P~&5z4mE&(wG z80@o65)JqZ3Am?7og=P_`OKXG-G>d>g99Kg{X_8z8v#c;Z36#Q>3iH}-%xLdax%RRE0bt>V8J61fpr-DWCm!o zvpl#X%}_x@F^|fQZ2e1qY5ZxUXb<@6K(V7Z;9?d-&Oig-uiQY&#fEyysp7m%0d0sT zz3p|GwfJ??eJ~0Kfz!jD0U(b1Up=h3|Faey!V;BBlDFq$r^9R4+vOF^7GzhlZQOm7 z6Urc(nBuVjnTJdCP&!0dPA#2}dwQ&5#rXfsJTZ*8MnwJ#sD~~1fKM+tps2s3qQE_& z=q_2iXPUw@>5yS=GxKE{8s$9-rJR#S4lk}+qeL@4bjj@#WBIjl;1c`x!LNV&aeey5 zm&qGG?)PXc+n6FFk~L9>dp*BG6f~6^S|1-}1pfJP?Vsk!qCECv6qv0Pwm=7O<`+Y7 z@V}pI=C$zr?AGr!g4j3t-*6t9Cv2J9eZrW|sj-S~hb>tGz^i7LhXsdx|J`?wFHqjB z6h^ErtG@*1(@6nXm3R0*7>+Darsz)G6;|wx^flPxiwtFY40J1>Uzs)k3jd?Z3wxB4 zW%eb870BSh|Mwo8SY6Ec4L>e6bT_;?+JE`g=k?`RpGjw*h!wyObg~T{++p4rUnZ%A z@2LNI<;lwb609W&L?hfDPaZ#w_l`vegS9doHvUIExQi=D?xA{dJf!KlctLzog_%h} zE^|Iqje`Wz3y=!kYr|AQNM>NZ(2t4)h-n*}w#%(a=F{}WNk zBVcVfA}x`8eok;s%jRwu5!-#K=&cFSW?QYLpl<4UOzZ7o5?fEV{;zlWAE9i*hou;wh09c@ewaH{iH za9bylCUrKRL>VnRe@jTRoP5bJr&s9WxHGv;t7=;7E8T5IV?@`Xx4y$cG_f+5tJb(% zEP$lkbmwh{gfvrpD9Q~ zLl%~SLO{E5t{BgWF95u4tOkT@RZVcBO>m!w!7i!b0NUXI+M0e^{zLRT*`KFY zX<7y9s{n-m&HgI{0@a;@eY02*tT=uzK9~()QZ5=+&DzVHK zx^^&jwOhfBArB`VTTw^GoAB%XHo5gj=e7tU!gohE4wR9}!+6M}a*(R|g1J?^JSji; z@VD{V=U?_$escNfZNVxMvRZV@pM5^k5-$@Uml))Pt{n|}HqMvi=8CmAajBC)0o=gk zY%E^bA79v5DqkB{J*WC@b9#2a;gc7@OQTBZ>^I^nq@&kefm=`|c1PrK#fRpAdU0EH z_|ZG>@UjMc*N_qJ95V|2nP$-2tLqi`Wud6AlVQ7I4q~V%e1IIrsC(!VSYq=3az!yP zRE+m~hgi%CNihSPk^&NHb|OkD;gT6H#4LBF__vx#`sPg9hvU9DF0c43!cNGCFL*5w z%A7Zs99#U0Crf!m*w@^Rg?pob|G5Jv?edE1pGCEw)O_VwbokpFFt}>Ne(9@G$)B4Z z6^{^gJS6G(aH!i5yXF;TtO%o(U|peAR=`yV&dcq15hSbBN$(Tyld%+$8~;;o0f^;? zw5UB;60}fMrgosMRgRa{|GDvhoRnBymjipud16GIFRRhG(2sp;9+ph;@>xuw;Mwbc zrOL%}Koj#O0?7@7p&d>H=Wg%QV@t*C$KFExck2YSvHH2tUGgH+qwJQA>2 zns($qu*(%hvOK}#kRhfs$+X*_a3R7zu|hRGx<-tmnyO9*SuOb$;e7@!opN}JRL1he%U9ZU1^Q~V=8l`kfAqB;?C1>*P(N7RT~hRrV{ftkSDif>)*KMd@Ume&PDKZk2xDc*B|ja%s*f;n|)@l4z$i) z{qQ?U2-6hJ9o=hSF@Z>zkl(GwUS^ef6P0HGoN%kRe1$ia1^a*^gOIw?7(~`-!Pbo| zw-jr{mitkiM7i`;HEKJ~mM~d2HB7{oc>GX&VYtlP6UZ`fM2@Sj`-2GYL(*x1%I!qC z-8LI+4TbyEm8>DpmGaFxMjz0SbBHEC-mk)hED1h)5+H<+J76d$ z(&d1p#%heBN};)%q+PiJW+kQ27)mU>eSRe1=C^_AfIU zv85VAlLZDz!b926wwR11r{gMd2iAh@LXHBad;a5Nyp*j=r-;K~hX5H%(Db-octw+$ zztCt?Aj3=EKt)#;s#VM`fR zzR0lpun031W|D$Q%GQajK68X$(q4$5ZdBP`I{~K9g&nI`C7s|rmkUqf+cCH<*{CrQ z4Dx?$j|#i{=%LZ2%jJWf7;yxNX?}3=njkh06Ag0kK%~uW)Gbe*#rtc~0Rm$ch)ilV zB!&+w84`W&{13YYyXpj7c1?j-SquST+IrVnLY5AKy6KaSnX3^hLV{(_R(c?y%0aRC zI2CKf4qCR-ShqT>A!TukG0GZ<-VQ0m z-6#jc)Ue0G%j!w?ily74!#m%94=Us+mK08-b_-Z9EM}*P%Ve_4hXO>)NQIbrs)^I; ze_&CZ(?6<=&BBa?pT9O(&p-)d6X}i^mmj?3F*no6U@aE=Us80G>?cf112{@7`i-y! zJlZ~Jlr#VP*FJYhOUJweWT}K-z({48Ytz!;|GdNh`kuxskD)-krrRS6G%fniGy8M= zxZ?}xIK;AleI!3W9+%N?hjNX6?eeJ#!{<~4b(d|cjGbAA%`N^ok#Z?m+Ls|2g)S?` zyJ*?^-Gaep<{XzRheF*3{&NROT?5vc%Ai2;n*gTWC3bib3m!F0RKoByzCjvzM5U)x zm4LvgEG^=RhS0r(oL*yFnG&wPwH~#YtJ8>`Vt3PPp71v{_4?Ykz*?CQhKZ+RN>0Ru z_Dr=p7A%&O`gzcj?k;sZs1(cg)%AQ0HWO>Qkgq02E9SDx`sicJI$y_PN0nplUE5nPT_c3+jBXQ?gzCQg>(9Q8`sK3> z!vg?g$zV~h=DMfD)4a0LI0nhVFKNx@;Pwz`ws6(WL;z+#h@^HaVsUViRJTqaJ(YU7 zZERFVCMQ4=%=##+KaM|)F3*{kxbEjak_S;2GnH^^e4N@kCNnx*89#eIqcF2Vi<6%{M%vI;eqJmcZ1LvwIRs*IQRHX6##oY%kSN= z5RRoxtlFm-fRVYa6*DOx27DMUkck$<9__q-pB6+c2o!2bpa2yQ;B5W1>^p{?GX|Dq4t#9|U~~9;@*)v!?v317>xdW5gmwUv3Y7Ka zMc6pKn4L;l+VIeh8~U&9tw0REXBUSR``WoYjdhR~oO2WegMMuBILf7>w*Kg;qXWo( zc@8sJkuewqDwJXkl%iz_K3TM=v(Ajx#r(ne$+ckAw#}0wnW_wGU&8BSdWTfQZH_KB zG_d5U^2#kHgwafwP7K7)$1fs&@r^lUt^)=HICeTbt$5nUb}dq_Spg?FO+bpL7sArG z%F<(HWrmz%RVn7-cdlx1RhLZ3bi%?0zG9Oyn+HQ4D-s?+{dD-WWTn0`gFdW`QE5#C z2>aqV=x+Wa*D`ZEy9t{S6t?RaB1&zu(=oR$t|(hfCf6dnNnIrFJdl@gERfz_Kw6ym*yIW(e<5a3*BvTDd73yvw5_OM&?h&$*xdY z`_OqGi$ZX9FHn@FvX&6}{ly_Wc(ILpHAN}y%`oWuT1HTNxI{%Ns zFMX2@gzwA^WWkc$rA=1o=hwML+Mn~5BvjL zDzscX2kMr~OS&nJRiPuxBE}0XG%kKaGg0{YK0vIwsgfXH1?=YJ0uqkGXf$AODX9xX zGTznRz+dqkVu21q%fj6U8B-Tek~!Pu!78c?df;Hpp^ifCq6!NH(l**eNYWd0%x!Ul zrCsWq^-0?IZMKeB&*72^W!An2U<_zSj-Gg*43}2nHxs0Ygmgo5Wjcr;BXVOm3r(h& z;)`RSRDzlNTa@v79Ib&Mru4GfT7bw#Em^JrX0lO+BUF#9yz-zXP?+Zk9ah|=tHf$% z=8*?$zaF}+-c@v^a)tmv0C6i9XEep(g`$cn$Uk!5062&Zvw$%;LAAJN|Hy7QnYNAn z0nc!N7)3{f3LWA=oYFsO=OO0Nk_J|EU~4Q~T+kyL+bk(--0&8K9SAlgYD(NB$RI~b z!vwS6w*4Az*#ndKaD%AU=EvGfcqjj@=QZwdmn4!R*<-8PL#|o;1}NH770V+;%$L79ARQ z43L>iRc76kuB}Imhae#%x36pKI9ext*^pZX&+R{b*pE_q9R9?`p_ z@J(O#Fm6MTiw4$wk5-ECU047X%uJTLmk}x(R~#T~%*2n6cv-^RWY9>Us9OL`qCCo5 z=l=RQ{-;0rNxc2mTWu`fPsR1*C_R2e?UBfaHMDk>utwAG3Bp(uH2&|%Q&@&fg}ztg zJmr71pa86{fhcsFq%mH{g8w5%`4N;L2PWF~+(8M4(NRLNBI#b5KCyr^va1KKU76eC z4_|&1<5bh1H2TFYvi*%aDbRfYRPfanwJnF>aEaufO{J_~G|| zME*a5bW9$M|F=iVdTFLy#H88^O|ut=%08DKps=#<6vBMh+2M;2jLln%YmMnaGgRah zyJr1w{O`DBI_G#_aWcS;;pJ)7D^~8YFfqORa zUxd}wj*}JV`aiH*aN9w7t=+y@&?3bbKg;mHclbZTA-_(s1}oh8Z2vAJbW-8=xOhud zT`_KorKGZGOnIc!@<^0EQ^Zx3ZE(Q{!BT(G`5OOr=oQXWxI{a!i}dRE#R3MgTM;7@ zMsY|JwJM636+Nhw*2E}uC4?rkWAeyR0LGYKZi%Bn6gOb|$Ly^7>;zbr67|?I7?#yu zm~}lS$~{pQ{kgR>Ff9r%rV0wr7*8L6;BaO-I^ufsEv|@4UG^XgtelV*ZR7Diyj}IR zEN}4xqjjK8~YQ+ojrg)ZqUX$uQ_8L&*4&xMl z2LCfruE_e}N-)ikGk5W)O8lRipfwS@egLhypZ__%fxh6{^|bp70>FXi?rCNQtL`UVr!JRdJ`-7Pq!VpIYJQ z1YNCgNG)y{qXqokH3$vzW&NbT31qVq3oe{>_stXBrK*re9Aasf2)L; zuEa#3{j;*AjCZoM3irdZ|w_kq;0|8%n;sS`bk6niSsf%Sh4 z%;ncGD`?>*{I3$=%KJ^FKPeQ`ilipCnsz@wHV?d%|KZe5o*4YkuE?e^e8gDfr);oH zn-=P>41bja+BC1X&gC+=9ES{-yr^LD)tz<$A>7yQOZEi++u_Rph`1Bt z9jf#X;uO9c`5)4C)d$unhSsS-q1Q@VVXFmP1p#*dp}qjR?mGhv)dum$>5*3Q&(Dnx zXtV%v<86fFd)Iwz(qA3mXpur{O>zb9V=yF103R2pR{v!LkW0xCeY+|S#!#9G_X3cHM3@zFW|3R|JU9+7YYL=8$&uswj4I841=Suu#rN@AtY`V($XMiWg~wJ zDMRq4lNSan_6b4AeCT)4*WdZdBvjWVXXJELIS$0YTtwbdpGzmzF(OJXxsb<+M1s%~ z&PzDhbRc#q{OU{)HMR3ho(~yqfM~i<%?H6czc?Y8WLG{~ftEE)YHBmsXL_WVKw7vQ zi_^>5Y=1>|mgoPlVDRARv!yx7oP|hhKe=EOeLN=2XA!~-^y3g9K+z|4Hx$v@qBeQQ zWENOKTn)~Idk9{3LRrc!k|X~+pz|t(quvWwE5z<~taLd(8Q&1+1&?gQSh}v9!es{T zM+P>M?6==$e)u9S?A=Cs^|07*TXa}E9S91o3s5rRzO@&YdGFX&!(gLaDIs@(9E7W# zZ#JmfirOImm-3%h;sW{@pfYTJV_6nWemT_;m&Z%<-*{r=%;vu)fMD%Xp@Q;c1EoTd zj|d(>xHUznxD!jqWQ65CJt_neZ!A-DaSI?(-+lL8{PN#EjOWi^3@)aX^CDPn)E*f@ zI~;%21$MKq(@1F+nplQfZ#m~=chJNgM2U9#{5alzSag6ytjgE-RJVVvESn_Gc2j=4 zwfY_dtc{KaBl2L9y}w|lppCARDFm}6*WKc~Fm&f6RvuY{tS~+9sI|Hx8-{Wk0_|yh zevn7EPrHMP6aT|odv^v(_30l!j&GiSeGGaT{X?zdb7661qm67!b*@%%)uZ79ix@fc zYz$R3?ja?PiTeK2x8kku{cw;cprVvAo0@}&(>~-FH7BH^SVjV2qBM8gilhkR|8i28 z{GT$ZC5is-VV{~05v;AQn)AgP-}ANS_2B;{4dzge#@<)Kl~>AP9U=n=G{bEXTbU3m zc2<7WXfx|7 z?Ql>ecP*h0i4!S8GME@M8ke9`zv14N#Yw2363K9gDZRyC^ z$`YlsB~>J3Nfz#6ZBlLp0!r;x%MM8)ms@`(;b0Wh`9oh=#7ecp=9iYLiLptHot5gA ztihZmf=wF(3)nrNF*@g7W%OjaL=@i?JCWXLpq(B=iW|KuGY1TP@gVQP7NB5sWK){W z_nV4tS+CcyD@%ejk}38_|1L{0`O{d61}kMV2VgnAR^@6=m!e}EV@qlvc-k3%caP;s zo{2{KGLbSz5nMGoEdIZ8r+dXrpvqmO)x`)WCJjs^zY@e-r$nC20&5ac0f?Z)RsF<{ zhCNc6oN!!=l=lydxxF)YZTu;5O!w>nl$ORFeHBD7r8jV^2b(0Z<{B(=%EpmR(|$JS z5dU(qbV?;kS|0Rk8DV5X-hVA!LbxS2w}_kwGDO#!x-1)K_U~sd9CquN!D8Sz!=fUJDbe*yeE2-87afk{ zYVT`>W!`=&^S0CBk?06fh&+;FRgOLpcD^S^WfSEE0Ds}e;VDz;-%<*DMU624AOMXE z@~(!F!JD==<}LKij4k^E#UIZI>j!u!iG(TCBRTvnyJS*?F-YxL=|~VxtZul~p%ssY zFXEoTL4*&KlIijwkVE`f93)3h;Kp#bMTgr?hZonruotFOFLjUnX&A)~HW{*ZS$tRaWJoCpPt z-La5A-z<6~|Fga_8+R%~5+Wslf|*3#2TDyhC3B_0pjd}-amTVHW7Pl5f?{|deeC?7 zihMwmQsg>+8Z^VIhBj#mcSgN~W`Fqdqj>)9bIZyci(;$1TY+l2GTzOYVDVYEme2`{ zcVdEM+#ufR?}GZ5dh>ffcvy7!0lc49!;s%-gos)HhjJh+SJD<8%8N``DQ3xv?-UD@ zoMDSFZzf1WJ`+ABN^68?8l*DDxADX8uLJ-14jkk_XKf;;vdW~G3Y*?NmL}bt$me!w zPxe@g)u{A_#X5M0!59TJ=9Utk7nwQ5KI)n40!!Db`zJQ|Sf!kDN`!uZN5Zw|O`*a{ zceuuksS{jq$HYTd?Qjrgr5#NI@nCGHL@RGvLxv1!63IGK^ZwMdy&DfKbN_KQc#uSA zeD;kVZG*0UDv)@;$&7byo8C$eCLXbfxx;AO>UkR<6Z!Sb4DkqC(dzYfUPf zf5mg`H?>VSJbapG28LJ7Z9rR1&lezz+Tfv|Nnxo}Ll};9X{L()G4Df0tsbrZ@l(IJ zs=^|hWFI+@W;s51pLW=xyH8<0NJ4B_6`)8YT6fBpEGOW8!OQaHv zmKw!YXmotG0)T?!piJP_fGxexeAzCxQMlaR|LS4B_~DD3$F~U_lWxCW@lOwn4v#&X zt5i&8MD1AK5D^VyCCFpW9JaXXjK$!8n4wy>WSO65$g$W#IEy|)c432zdG=-Wk{7}T z5Fl**pcOiP76{OQ7|m&ff$SZZ%NkvPl`x<)%_M8$vCK2_Gx^`*I3x zxhKs+$BIGTk1mhm@Bi-S`RdcBk#XL|O2KZAi!#D-?_3`fBH6-fQqbL@4Wneku_C&8 zt%pjUJSsfxn`ndoQ@E1M!z3IV)Wo2(AkL+Qgn}7BvN#FBtH*`Nk@AZ&J5jQ?K*rFc5qvt7h4?bQlt(u#p3a(Zy5jksx<@?J-iH#E~sk_3k4C9OSo5w4*jlTRR&V8aA zd;TLV+pNtvDzN(dVzOmUN|k=c`wpkoSGTO#lTzHst-JUC=fH?)~#3IjXHDg%KjrTM^esS9Hm5Xad@net50 z%t~nikT68Aoj&=Awv>0ug48*3i=4T^Epm<~(jZ+MvDrMZjKQ4EDrBEx4u^e{nR~&? zqNv6Qh-HN91b_^$Y9@e@a<<~YV8Ua#`%Ar$84?pC;)evHoz!A`xWO}POnx|D@-qVM zygoabHpnE*WMgDjSv-ph@^rCyxp^b7NXOALG%+_nC7wwsp)s#cl7O=z4oP;szjlM1 zDK`#iiHd!%`@I0(Vqt<*6;FnDB)=J_#{`a2TgA`x1jHME`)OVvR4Qm4Ph+WiRJ{ z;6q~teD5A(K*7Gm*nEsv!R-Wg7K=pq4lIDEuF6V@7XqC?9*h zZj(6w$2y)6UG6uslVV(77jZLUG^32$7i$;8C9(GyizEhvcQ~YMabtT_%)me@8j4~b z)HJjjZPTSTZVpSKD^OjPX$xMq9LlswY2$ek*kz58kga=0=!TXqm-9bVwR*IsIbznu z>v7>wXd%*TsaX`@F3so#QP=L_&z1oq*3^+mcVDO&?3EVyIfOQ+BqmQDP+%`BnJ8V1 z#BQ^fr9cK>o0z56eMT{HzY1&A3a8{sbXq53&H=f&Rv20tkfp^=$eexR;;NLlKL!Ew zn#WXBOj|da_}oUHa??m?Xik;NZHOmEbWfa8XoPY;s_mu~jyVNSQj- zq{WI2U+~XWY@k6?<8Ewf)%bE9gfYsm1bQetj-*@yO^V{h1Eg&ESmm#_s=q;r^4EA6)C%lZ5$lJwPh9HN1zx z^UC{6I=+BWUKGp`4vfM4Z>T)wKY(eOfB*nwJ>|b+OiUJ6>=g6%=nF2+G2GsqU*6wxxX^ENxxgPzI%79ba?yj ztx}bEm@_aM;#y57wOa7q<7}(#>cP;)O>lJwTTQ}@>qEc%;aBUv+M$Uf49Pbg!9y_{ z&ak@x{pbio+TOT4wfvtpMqMo}Zp+Zn7vTuFPPJPSxsT)Oh?c>`#9Nftb70y2~Q?1|p2orH@^5j0={2%~G3?5$5Fvt$YoWK>P-t}fdTW@+FBFV>?Ges;}>#kRipzV(TSk;Y4|?li(2lg<`18&s58l~JrvW5yT>K+I+7q^or!5f;!( z-w2DqePi`Q0NnwcVpmATZG&2ABJU+GXi>EH>hi^HwUebV8- zJ$q*dZ26xu9P1%ZXT%u+wa}yZzrzMHj_fz97IWKVEdh*b9p>V3oK>hLeUm`rP}$;^ zDLQot`n^y{SDB&vTGrry#)tjV^Z`<)R?}7v;rdh7#TFbY}9}ZK>dIXB3LB-8v)4xf&X$T2IUM z_eqEEee2ut{MqyQ;JBJK%P4Wev1@LQRio;>pi@!XvGL?Gv3N@p3OQAxU7&b!0@4ce(3{FI{4Lsd8#1V zOw(aQ{@=PIlC1q4Ttb~It$>wJb~Q6N0U_5!Jm!Cu0E7P%dD@wtHA)Qn&$!L^hvJkz z=)^4O!#;72+*djHAN-COk-409x{)&5*e`H28s;$dhMCH>J@>KQ^9S68vE%=6{qK~u zRqIhhueHi6dH`p3C#IZV8E3t`^>G@SyHM>$Qvmv^>MHVm-3bd~mRgX}Rss~Ono^Nh z@xIsQtk}Fa6=fx}I?c`@I;Ax_wKLuB&;mviIRn_4oXTpC7`C$VjSu&PfvR^r&s(!TGMQdNatDNw3QinM2Ev z9e`gM8XxkoCMt!K@%`qh>9Jx~N`?Ik;>yo1iI%7(ris!m1>QGPnFl&|%mpS8o*Qx& z4V=j8w6*6djv|+7_mDBjRsvn6-?}fgMz2VwS?uPFclg-+fX%TLFu_h4x0GFbH&hTo zhR;5GZPA_Eih&h^3x8FW8ASz1zARxK^7^UkrsqRVu)~Y@Zc3_^8ZR*S+El~?*rW?C z84*s!yhP{N`kG##hcieYydAx5|Y>;u6D-a{}>`Ley-t3 zy&sp3kj$;)PPu85kxsoUmG1bS7GG96fmYN2e40BBL`FVxMtjR+EVp=HG3MHuJt`gz z99I5EnQ3b7Hm@R2w5xV3IzE>0tsob$qs?>tf4{xr{!EA4q(crAD@OprL3(cw6p1x? zP-X*6K&UAN9TvGd0Dy90PAqhqQ_*=bKRXFoM zSG&0Z&hdKl?oIvl*FUNIN{7*uH(lpBs2(ksgF*LofK8R5pu2GG9U!Q<9*;EPc-xf&M z3F>+YWOc2zH2dAD3ZH9y%(+@$v8!UtVSInpdxFZPO0UcNb?I-MH4#UQJeV!rN!EV; zGl`H3B-48!x0D}hs^K6Dbj=nW@7L?K&I(6?Y^^^{u`?5EU~yuwXA1F0#aCJhQ%$6E z+(?ZDF1$4%!4?s0G>7D9vkzSdBSFp>RU5-(XyGb>G`fJ^Impf|1Bx6qPg#-bA8FHY z^gS3{REW5#j?=VATUW4{{GB~HmiiOBWYh`$L z+hi5$BN|kB4GM|{esz&s)i6qsG$|=r%wmE6CTz++)>ZW+^z#Y#1HUjVtWswIWcC~3 zO@v+=9uw3u_sl^QrnJ}rz#}rw4+m8KhvQs$o}uup@Rc6O<2>ma;5Alc%TC9#JX55G z9#{pD9cPFqMM~`;$+lN$47J^RvuZ?M^xrZ=+TaR0ANW;FQX8$b$Z42aikuc;m49%1 zG0c!YWspMp#F)%=g)PuKZgIKvklVE$5~3=&=+|;;Gf*2YH`Ppraa&IVGZOFcO8(QU z%%8tA1Rn!6zSlRNRNW^X4(>Jd#UzOtFNS-7MHS<@J5}L9;PN-rmH5BHJRCLAbvqlY zk&#}Zp^JwUZ#4isI{yzaQoK3|M6(?c4$(oQOdQPz8D|lAY|70Jra&9?asI~x{)cKw z;?P5$n;K>T5HZ?Lw;@5j`|TBYkYpAsiV7_iPY2XeOwp7>b>ZFGR)mvwTtD9- zD~%tkfBm9$V|3w$ivQKQheTd;AF7jr!j+1pJTMXV(8IVOo1) zNASvQQe^#A8keh_u5a_c(&3nNsEUaOv8{?~9Bk2p0h#!I$1u1cB5h?6-|;+@ zH2$ZjZE&=V(CCm~`RHr$g%@Asvp^bMPAii~U-()^jI*GzGOCPH*MVaUn6|CFokGZp z4I0-B+X^vYaaB`N%vPypfNIQ5k4v+t=MTlr{=aI3!Z1lqBjDB~49M5{?2K65dd!)q ziP`%qALd(3o+xtE$}PG!2FAx6+f+AZ&PyL*vsjz&;i(?tf6Y&^OsYMGaM~p=r{==2 z$aEXt)h!i3XKP|3zG5+(ePx}1w}yE(0%-s*Be&`4_D7)J9%5_2-B{My=EWT1c*KIM z;9pkE=6(!>?90(^;1SLRriu~gPSUP>YhZ~~n?%bj9d$YDk#i=+!^&Wt%W%~YF*e&4 zi$tEr#5@JfG1%@#5Lv5nUXbPDkZ~o zz{<)i3mFDTnlh;|r`>uoOr9dz;>1b@?$tz3{mmnJutFMl%A%=A>@;WY9KOnFYXn<3 z*06ra+M{-VDe;7Fg!!f58D614?1#(TGx~zN+g(fTQTIV+nPxPsd!ZG4iW~ z!r%xV+W??qaOq+?4_Dt`mkVLiGAPCa?GTp}O!c{86()A0ECRN0O_XGcBQ~^$4+IE7 zNzu$)@Og2$<%*7wq`v&z*X0d2*!v6Z`t7?)nk%F(B%JM z+QUxny2en$I9XrZQ#w11oJ^(etW-98eenAA>-xw4{^NRg!;IpSHuW61u#$@JybA1B zV6$ddG+u1^9Xu}jzIOZGD<%3nLcbr>XCs|(3r6ml+@W}PXWA6pdalFef|^lh6!j^^ zRJQ{=5)9LHgb3kRoPF-8h~rEW+6NOgiCmp`?-F*J+>EM3^emg@Y0Q)00!MKJ^ zD?4}o?~Jb+KSit9U_|1leIoZ&F2_I5ZaRG9S;bdx*zz)(mGcIWze)bCu79D}7Th-flZ)!|B1W6AU$f^cJC`{7x z;dosPAng=*kP})R%OQKXVHi#3!>@ewjri!r7Z5kxaq0%3jxr&~E-L6JnhzaH`Ec4< z|IhSSRr=W~DEGn!?WMP6r(oE{3FGSvP7wy^36l z%_!v@Y8e@Iim}}-xrHcd2wW^=zSGWXv2S6S!YCI)$abXvb%?YQjX4w=Y>e@I>~`Vs zJ>@lvP2fxoC<+TnQ}|+9M`M&r#{^iq6(ZCe0L$zN7h|wQ*_Cl-Gdsy%1huxSj{^%x z2(_M4hU!qf&l*!+ zrfIDi>hyw*=@$)FX`09=2$~TjyU6{3!t00wMO%ZA(0Ton8suO+%9t`s97)lRWG)-r zX9TVSFKIht(jWps)&7m^bq*P(B@t6;Ri4tP6WT{13$Ao_oL|mgmR{B93b3ycTeLh_ z2|AW;oJYVHy*~WqP*^4$!%uQ2hvurd>V%F}WT`-b!9)q#!>p_6kvv-^mE`6x3>Qcz z9kWv!8OnjU^U&&x5bVbJl`+x9Y#J)~0lp|otnY52Y=DYpWD@?&-^dxEOCaJTM_Kf_ zsnTc7%hj%7=JX)D@4G02pf`n&W)Wefij~^rD$|!5<@G9e87{j`GldLF@fvZ)r=Q~e zsu8Dx8iBp^#cfy;E<8|LQvmvL>b3Sfox#BsLor3H@IvhV>Z}SkuEEinGh&tuo9p!b+F2oBH`27y2b!emI#z&<(|GPUBf)O{EZ?7m4u0JIP=ZO@Tb2xH2Z z(zbZVxm5#%U{~r{hSLPhffp{EDDC(*iWn~{t;5aRXlI!zVcUTZnV)_3dH&r${2<<4 z->G^DtU|CfLVFvbEF+ahnrYAK!5fY-HsgdqFe=ssf6yV~{whbTW7jGSdAHJxT0M!u zE53nu{mdZ8YP)XOA2oNthDAFUoE8_$f5qcD&KAw$G^5M|)+%$_FE6OOOl|OdUp+Ip)>UQfdBho z${ZPbxT1YA2YVv0HPe|^04x79y{#AwO_ zxDq=rmmE4lh#V`kSd}Ki-b_{lA1Gfqhqdi19s~>W-$0i1f}$_5HK%dZ0v~cB**E4~ zrD`gWMqqb8sF#CaoLK%`o?>x4a)wk}6C=WBq>7^+>_uEH+rw*|BLSxl$S_+ncHA?} z*QAJypPEgi70y0V=xt~&vu_UpYC=~cN4Q_5ZkXsAyp71t5uC%g17wJ|8Z`7r0}c-b zLoIPnj3y$=q%I*J50{~sk0prSWgLpT+{$cT>VvKoST5%Y?Hv_(D9O+dIMo-@GsAz;?9T>;|y+W$#fpyGWf`=I8_w_pP zE+&>2f(dcfJ&s%qEDnMqqPdnY|MpeJzrKZi0w+ai^mAzb&D*5I_n-UZcZOx3ghI8E z7TA~6K=d+hBUv1`c_UocLQDas!#!Kh!;H=&T^hW~>{{*nMgXI=CIT+DstDB+r^3v= z4}nzrmC;Fh?h&HB1#3nzyEbBgh3S93TBq}v#VjkCh-0s>{k!jV{EpA|zh(L$eEOP&)fRzFmdD|WQf;Td#9 z=d!bZp6}gglxicMiQ6==62M(rLtGZSzZ13fmJRM^)8~e4RtR`0`OERv?X6JyBlK*f(k2fCD z6NRPzRq1LskM{FIs+|7;Dxp?EpK7gtGIVsPpl$d*Ej^ z|0_V6Ol6-EaGbj3(jOS27JKja16i^%E&0`RjziMkkg1a%1`nDl0ih4o?Y)A9Thy>f zD~AM8XvL!r5$KFTpk19NC}I@vKq3GHTvx@M<3HZeCC2?%$&S^X*RPmJ*bPw(QyG%v zhwZS1owv^E@v@_%_%BNyAV_d+joX zvW-J^8(@`$ILVo)rO=VWhXbMU8v0H)Gpvk$#zXa3t6U{bu(&u6Az{3Xy2=V(BM@Tn zc;ayY0cIC1a$3j_Ak|SKby|B7qGDVgT*ltD>EjaIlV-dUR}6*)@r~N4@c_k6P?87? zzD?5+h8Y~3);L6!Co6XB{kvC}`297?urk7GIPmp%ZxasRdwvxhFL5|c4pcgx; zX?S`9-_sPx2f2X|sE~c!;rs#HaHTrwU&YdA9HvteG5`D`~k(f<=~sot`GVD$?g09`r>VUcqy9|B&|xo zf_>yvt4AyMf!`K)`fTu7n7Ce$-6_0*i!zJ@vWPSP$G|nn>Om9h_KKgZl@8f4;3eHg zy?mBO$0bU|))n`RK@LlQvLbR;{MPDMV3l!<*L~Z4rNgr)&rc-d-!sD>yo%)xDI1?( zR!N&Bom=r%TCTVuNi}X==NKm+bP1@FyV{m>e3TMwtNn^4mfEff>9fNgmu&36@xOye zPlCy?$A6e`$x(?gm@;CV;qnNel^QOy-@>FWOSfLOj+ArM{||^N9n@QJ)3aCBr6eiC zla+JaPKm9y^P!IWEzIW^TELZ~`^_oHh#bG^ng$9|)_Q<3>_IRL;o4%MW|7aJ?ZWUh z;9kkJvU-3@fRNJJJleOdUD^ru%)Dm7luLpUT`>bd1F!A@-aiF;R!#FpKguZ`ikI7F zfxO{n=CpN#s~d!}P83?Dc!e=RoB~4@G5*FNQ%UXgAA91f#WnN_j-)zPu8$mvZ0{O= z>6Y{q6w-;x*Oe%-?SplfU(^!`u45`!oCwlR-c zgX~aLEz%7>%;t#aToYQC@f645h1EwGNo-Ky)}&{b>-A8~AX)V6A)?4f55R(Zk$bUQ zR_;e%{gQ`KK{3+@!UG+vfiH8v&pbMxcPg|dOikB!WZe)PBG;%Y09zfR>Vku{Wn&=3 z$RLVRC_)@BRWPq3I$;nu78bQB&Qgw>6cw$)v{MG{SKt~lhPeJbuYr-D}QHTD?aA>aD7A+jk#goErC4DkzGgv>!7wI7dlKVLvl^vh4<0{v_g+%>TOiAOpSuka;J~a?%bOpA)_?Jm+Xcb{W7R{%MR8P!LfQsbD3S2>`|qpkbSjsuO~to^e5Z`xd;m_}>IB-N!(O~<$xyw2@dyxgXNzV@YW9+M7n zk}F*IZB<==ygo2$IL<9R5vVk4P?2rm4+~{@9;ctjpODP0-(v01%%7_dh|tn`;vNRC zxw4(QKj8mm%of#>VV+;{nEy@Ujv}Z34e}j6kt}F%#72M(a~#tFlTI9}gEN5RSVf|s zE_0SC(SDi5SB6#$&CS_4XA^>>cxL_&PU_d?a@nY9$#X$73s*9UQ)RF^5i0g^XD9WH zff!XD2TGAjZU$A@nX$(|Cpg~oDl0}eZ&uNaj0v+n&bI8xJ|vN2q>5yD4FzF@z}M=# zHmbs&LcEHAse=`V>ln-KEmn2jq1yfae#iJmc{mG-E}~GJGEGY;Y6z|O$Pq+oZd0six zI1!2V|7-+Afkib5)nDFzs-gisy?jo z*H4QXM+N9J%8^c10}x?CWVsAt#&P!{zAChAl6|S+azMYXIEv29^6;ToP@qc2+OzXo z{>&MkCszWyCuu8Q8dKD!fwZ!p#KZKKVA;0GAcd#R`A9Tod>?netKzRe=Sl|)ey5NH z^lPQVDWSx4%TkrNgHMB*V{a>xP8Sixs5Ej7cfozL*Rh9>`{?u-N5Gqp!@*|xW5Y6K zog+Y=(;qr*FaU`e@0#JZ80?{oQZqAW_S2YZwB7IeQk4-U3v9@Zwevsvm~j@!|8$NF z%S~TeyYv5Q;@7|aZT|2l|KdZ3hI=!fFxGL&#IR}qm@vYs0yMA+>-1;eEEhg| z{w(jmUU8pv*!kLZGYnvumep2^|66sPnA0GPwv>1ak^#Bdfc)t-xy&TvTu0n*wfOVf zq{GWg8wB-0P{YOlD)H=s0g;Y%&2ZgraZbq@_)taq#J;ypbb6T$m>ez}TQnGNN7w5& zui~e_`N_TZOq#Y7FKuctRCfGw1vLuInf<-;1u?=2s{=Z{pVH(W77GTSGFjc{6HGch zeF1a$bI)AwFqUbZ=lAVZjcPMjg0=%FsWTLY07y18(%}XW{F{yDcooMe1j8cLQ9E0U7r(o0|+x)8IR(?71 z0bpW!S-`(!gpGDn)p*-C_vaj}SZK(>mY`_DjY6-_X)iuN!w6yeAjhPFQL$APhiUL2 zum=TwnMKRqBBs+IZZgpg;S;i@22CMcYAz8c^q>;g`Gy0?Cvk(dKjjLH|W7W{d&(3*ZwnLf!xt)%} z*1%#ga7J#ZY3utyzG6zjIGJIr!=i7|dvRegf#MC+a=@Z&~_}T0rI89G~%UAV) zd|{AA8WNrjtt2E@UdvA4T=X17Sbp&@zV0Wc=58n z|LyPA?TVnu1REU$8!Ev)z zB$U7ZHIjHP%ys@hg`3sH*=4_gw;c2>Jgo!(XbHE@{13eXcOTd*X%F-u6x1>7hWsz~ zFRC5!-tqrxBxd~|lmAaA^b5aIk?BA|8c^>jW~56XcvjdM9u#@ZXuu?+6zr^N2qfu% zCC+Sp|K39C zvpKhDAqz|nCMG;cWDvJ3Zt!E~?34M2=Thtg+-%w+0N9$hwsQ)59qa*&lI{FDM}Aje zwtrD*@*cl?_m}xodB!_2NW5e->tP+0D-*yTG8YoJTgF|FP|$>*qs^|t!hl$v61_R8 zkXC@8nbUcB@VVDL@j%;UBT7rElRUxyBZ;6+6T~ zkl)F_1wauAI6}<%=`>`S-zN4tG5KmJ*h0QY`hf9b*kK1^OMmZJtTa6=B|^3mla$(2 z{u@pUfI~pDvqnt>Z~_Vog~lgh!*O{b=`R&N1mPTmhFO9t7Y|#Rb5TiZ;As=0RVRFl zVMW2|w)&0OyxJ33T6uoIy(0dvSC{;J@tGL7&YC@fPoG6o*nx^-zVUP*kmD*ajHU>RL!m23;z>0GsyolS|MGNR&X|^`DNhD?_61dT@ztYw*+`!30mt#-*T4Q<{NN`)JroS9 zbxq>oP~;e@G+vdZu$H6id9*FsoHU4eXUybByZSy}56w(eP72pNMXp5U?8gM%x#TOA zRKO@3xGIf~xdZ$>qI5<6tb<(F+P)(sG4aq>vv22q@bcwa>2Sd_+yzvsm58a*-vx~o zvHi2A#XJtF3;rjfSH~TbfA##?HR1OH1MD&}+J|2gRtXa48#Z>fu8Z<7vrf2Kp1y(WE& zMr2ygHR)ahbaLQF3kY24q(in98=}2NDau?E7W5+oI&yDyZhY+ve_GEjPumYxo7TK0 z>s5hs-{>va8})>f)?gYK6PErx3nCOJnqUB18rTkOATPssyI}jphMJ=lY+!jq}Da9qTzCGjRWWAM0S; zTs2+D`aeytQtjP3h8GD|+XUJj0`~6O`TspH{z}E9-~tXoQXqwv@_~;TJ(+W$))*XC z4~AyO=-=f{5QAVJO^zrVg&7~NSSBk!J1V4r6PTxdGQ7}gnVVMigcs z3mX!^LNZowGPc<;+;-T+fc08iV+n$7E9byZM2@heOIG)0L;@?I3pL=vWDJgYc*~y4 z$2^9x+ZjS+-(NkqN6?HN z(uQHRB^--|qOKktWoXQPN~p5o7#~2?BjY}Kg?0a;X0-j?3Zb$hLIaa&SMo+E?qEa4 zYhpZ~3<^(wv0|Vvqa6|^w;iz*1T|Vd$IPw|;1)9WT^royxRSQDO`hKK=E`I|KoI3x zy6pUv?;}8@fK2J+j&0$o-4Hb>K54vgEyDE4*{LNrl+hFS5hfBuxsKC`Pcch^jxB@! zVA~H~UQ~=Bw=1%nF2k?l_ux3Wl4jllA>5hqWcfc1-SU5HCW7Rx1g%r?Rg%=C#?z2} z>z>LHeg!7N0?|3NJOisqHx1Bxb2XP71B1W%JnM7*v|u`@DT{8OzWcP|`!C=STqLlo z#)jbmaa5}#oP0v1CYdS8n_=0#0gOjDtraQ|1A`O!L7d=&pGX#e+1-F?`b-MY|MFaw z{niijSy7uVe#MA~(bs%s7IxF18ABN5Li%~L^)POa{rpBi9oNR=*9x2Z?tRUpuutA6 z9scF#|Jt&&Yr#Ds>|POJ4?{fSrt*)dzj!J&7GDosEDp@Qc11z&Ip>3*b*|D}V*{69 zH7rgf5QbM35qfGROS3Wv?L)$&BOX9qJ7>fs<9|QCGA00koq$(yU+M6jZ+;89gVAw2 zmdvsjGewge%J}cvcTS{WBV$B%1aCLp1^&g`OZ>y@3k-#nMo~}OzqlQ8taP|^xegV* zEK2keH6Wt7MG(=F5V_J;aRy-v(a-unij<8K*Ab@SB3A=RGP5LPVGb_H*h+`nj@NHr z#jpSUUpdC8Q;AqBw&R+mAATvTh0@&SeGHhyn1#AhBfI-BWi}gf-zKe|=GVUX&D;Bv zl@KoB04$9~#Qy`IR4XFJLd9ldb01tfNed4v!)rnf%sq~1w&1M}!GUlj2|b)fHvYG5 z$2BF?4*T)D4Sf5~|8e5~Q;sapkpGhhZexeF+s=u}1LFTZvlXHyviM)-svd78pO4Y@ zUwy&GshNe?XBHT&)e2OY?*bDXVl|F4Xg??VkX>CV{Yr&p+%kR)hw$E+h7B#lHE=I| zp%OsI!hjPWB~Z$iXeoI%5@VA)#*x%vL?yZhg14D_Y!Q>ZPI2JHTa1{3WcKhu*kpYG z(D$$+WAKC*w+mP%iJTQJ+fyj;?w_w*R6!112EFCa5 zLlv736IZ%>k;6 zrb81!6W-Rph=IfH``{Ir$ID+Jk=}O}>?H2`e(mZS)u~vc077K4E?P8w8o;nTg+cbh z!EOnkJ-2*`AI;6k4nZ*_q+1bBrb#)(sgWdR%W%QswR5V4T-BRUDnkO5wXXqW7rI72 zY#tab)qK9APGx~ve#zFATIUJ$%e^7j?ZWC#ng;U)#EWelMBOGEGH;U(@oEtk(U&$5 z_TMKR^6O8kw9R6ZaghqbV(C37I3wFY7^7N6+f00pY| z=aY>_WjTm8S5FjUX{f&hjF<$`P+44#*l^+nx@AGs-rn%Xz}?P&dxTf(8<>Q)$%c-{ z_3ifgqYpleZ+_!XnZu~9uDVSkyLLo(T;0R+q4^(rqFPMyzt{$K9KZ>RK&YSJCLR9% z)unS+JKG?1;C<5JFK&|#&*SQDYW(m*Jh+4~Od%Y)CHCO|QG9#C2VJ&jPM~vh7x0st zPB1W=9&vO3=l7rgTm0(Ze*x}{2t66KL9pSUcRTgugFp^`rO{o)jsG2mLVUDxK;zV* z=ab8``uZ2Y9Z#P;EpI4Q-ts)-!%AD5omTKm)njCfUFa@CNun14H~Mhs9*kQ4a?hv1JM^XQEh$ zvc|OZj0nX=*{rNckHNc1aJqV7*bTa(cRE)Zo!YlWwbPs5jXQ8?qN~wK*g-gyeB6f= z!nhn08FDdO@a#TjU&$Imxw6SL6DCJf#H*5>+AtaP3(TOUM0g%1R}k+^93pn1V&`Sw zp0oUP?vkY#X~mS>FS*w?re%0?j@7@9pqj4(OzV&s1f z++Yp?8V3LxhN#Z8J$?`@BXcD3K69_0mmDgVLbiu6fx*4mf|*-6C=$C(78i7a0arAQ zGpU?>4A7SgqMri38c5oZv69j*WV;AA&T7XE(qK7Xd9n@SaDBQ$4~m|Gko{qQ5NW|{ zomj3Epy)4qTk-wX&FcUAXK{a@t*0S<)9HVGdCgCrVOz%`bF5MZ_JGl?Px$FQCR+?_ zGQk`FE@M?BMXCNjk$b=i+5mG@Rb!!g4XY1$H{@=g>gIXySLY}nic1r@!`$40BtwLS zuKgX)^VnC#;n0!)a=Z9HSR$3%4|Pj8%gvTJdYBZWjzXq){`bK{#ZQ0!%lMa{{gTmG zQ4jb(n*aMjkm#?eW>M#|%(~seX=LHa8t>GGkQAlQ6<{)HV!Kr#);1f2cK?UdOQ7d6 zc)E>_qY4x1l`(*S+^W4!bNO4)Dy^s%f3;x_JC&Fc(S1CG@W|zA+a2eAMCD9uvc?FxhY$+t;|`iIy2#hKdk3N0U#4lm!u zi~FR5;%xFi#3xCt)4~4{mTcktFTc;Y1pi|fCqxZXI-;3QjbG${_z+N%#51~TE6aZW z*)i!bR#?DxGt7{lMNEN2i3z=)oqK@%MHJ|hQa(f~rj3tBkla@~eEo~xil>*SGG7`7 zN2eAQ+tSjpr~0AkmP^eV5%b()_vdhY^0VZ3}U{E;)a#g3oY3P#3bIz3FpCIT0+0tQ1jFBao2y znZf0ls%Uopo3BnVvP!>IC=hb&3I^HHRfU$M+?&hZ9nQmBfpCi+6>IR&v~ zL~+M~KfhyoVitJ-B~NG?N{AB5P!=C1bo%i39;}zGy_^_Zb0esL=ojN;0+YVG-X6@I zL$}Kl(E+xD=%T06ZYGC2g2~I&R$Qg)1!88XM?;s;063Vv@`FW3;5PmkJQHHL6rLrmn0|Szl8mjn z2I>^8rr9uPKjQ)*jS8OJ(tqZE&h{GqkbuOH8nAUq8Yf)o5f7C{A~A=ivA9<*Y1a?( zn=i;QHt@<=2eIpn;+44KG9x+5pjDVfbOA3(@bt2boE5%JuQsudTsS}A!^~u#$@A=x z_B>)Htna>SxMrk;j2*%yi%*$@iEQ;V`oxL17gjpl-o;lV%ZeZV>x*lA^2Cw|IwOr) zB-MZ<>eUPWa&hsdsG$?m5ZgAFzmJtFK2DWdaVX6>7M-L)Z8MWcR= zQd!X(fzc=?r)&3RJc_XG7q$x4T%3!X@}!yh?;eMLsyilEnBGMPLm!h0xsOQ7^IuomsvP#) zRO#X*8cWZ*;SNzX^(4$wK@-Jql~_(_>L^UP1}(BOrJwnfr(juOT`As_9GrAW-E+ZI z7UE2x82n$ovdHmXT9j=|N~2szYwsRA_uDIe^yU(*|4VkRQ1aiO>G0?GNr$vJ0|f&w zQj;<1A&Uw zWZRjRt2Oh%7_kaebWr{9RYYSIE#9eEn0Tnz@!W5(c$%^x>;!!Ryv$@6F6g7%g-har zo>Odt%K}!mY~{60nZQfeQ2v^bLAXl~-EOT0P52CV5!J?;+=r0CU+{JOnWo z5j-8mW)W*2zS88J;v!&-xEnLn&x3c$R}LDE{em`?FX7zG_WQCf+HV6(QTD?o&uY$e z+EzF;si!4O`CD726O@J$T<4J4q^ObP4L^rZe6Tx?rm*GUQX=U`I)!!7@2F4u&$P&J z=z~yR{vv;KXfQAZJfj?`Q4DOtr3QJxz~YsvIupyDEL!sJOj^2HTj9_%$1An^3KdNe zUY$ftVnRp-=+p2;08LdLus0IK#E%`*=-|4A0Ld(7Wwz}|jN2fDL@&L)L&OGVw zvFi}o%aqLXJ~^bgWd)iuS6KX}uWSegW6DOOus8+lC6S>#KAhI7fWe5!z0iVqr&phf zFK`MAcOae_sNjk!4CKwguz_F94J8nRZ6#Y14}4rY9A;pqjoWzan%96Eda5Sb?4dw4 zDSE0f3MDysmfR;24(U@y&1DaXv&S5z0=!uT1wabM|B@yXL5H6m(=>#%CrH?$SHkk_j>!&~pqI@OY=cP5KW=l?BT zfNC8Ce*4FutT4l}2haba)o1@6a`?}RFLg#Ehrr(C9G@qJU*D7eX$>2d$+LZ!j1x#i zoNfSLE?S%*kzV9#O0EL(3iqc!|3&=E&;E6&)vR>fmrgCp#5z6vPW!YPAnVdU1=!hC zsQ=JW;SPX^J&;ntrbV?44M>?ND|$L=%3almZG98nd z*}Fdc_%`A2qt_SrON<=rZ7=amha|@sgfL7|{iZ4*^r{T%Ig?WBW$`cF1pw*N5wHD^ z=UZ6`!!{-F_FdCqR*vDreWk;{efsN=jR6yy)UbL#(kJWg(785o#Y%*OM@5X4hQ}!# zMU`~oaj;e$?Qr|_^6dEaiu+23vPlMw-(su6En%q7>di+dW~cJ3U1JPnMQ;3`lVw5~)44d_l2)Z~372IK7wJ1y{WT7OFH$L%+Z@EOsq^7s z({)lKcn+{x32VhEPqZ{J+ZKLaBkh1AnJj#m{EQ&#UA2u%JI}>=5CO!Uo*@ zGPdB_#VU7GTGP~3 zK3b()h8L@?4}ut(({DYMM9V~?_Rl30!%*1e?ahw$g=q-?tWy<8{|^zgQG+*cgqCH=vPr$O8p zfR_pj+!|pqq*$xi5gfo1w0p5NWY_`8B?9se#!zj+QPITYQz* ziB?aSm@|x<&it<=wO3PAs~+mYkY}<~%*tmYMi-bc2c2B>#3o1&x{QfYIhN|poiRvE zssojxroN^Af)94JxQz*4`abwy`|`AUbbB50X853?6T11o2_$~@i(kfC>43z-3TnGD zou%8y_J>DeQlOvn(5Y-QVAbcajO}`5l@rG~*BHsOjJH3sKcEtUq8M1@t=G(zW(vYrr&#CTmC8= zq6FI#ucqjzA6z7O-_qpAYo&u`8zVfbQRCKq(&4|oyvEb6vk+t|IV<1{7@~ms#{Uq? zRpd$P-Gp|-BeSJ>PTLHs1bP|$hv!aI;3*ejDPMgO>cTY2QtvpP6z}nf+su%rh$zo$3fWVWl3&_X(5Y8Qzn6wR!w-ZJS3*hA*QH}oF1LP0gTcT$Dq1y z+T_5LHU3QgBLHwuP$8?h5(EB0GDN2${?I%!Z7^PSi)bpDcom`?fx5?CsYHU#NXl#Q zIRLa~|Gqrs+aeIM;~`Syoa5Xs24$&vk-{SA(My>P6OVJcSSvxe8=q!sd&q!Fr`k}h zY6Hzae1$!J;tGA~Pz`IQ;8nARCYB(I_u6EIv^Sm#)PekCcM822xz63~cGIPwj{FEc zk!YKrSx@r>6+k5sbA|W?4cNqLNxb4!U>*aT0`LjCU?7@?eZwYN*?<7et!_=r&I~)X zkFetF{&X=G3Vxj9vJ6XzwhEHQ#Dqd}h*esNQ3GTLbPVw_SYwVOD(tqENMJ$*S3V#& zItS32aT=0$9UIIQk7fM~DqUsPf!R|~qqr~4BhZB5A#`fXUItNaq;4?4EdQW5xRwJfjzUZB=3P%BmaY8 zPPVAQimW`Snb`!|4N!>C)L7WNrImEk$Lc{qTA=%31N5ysAy&WLpXu<=KmA3Ekj%K8 zh%WPmMQ5pbnDUBzXX>V3s_ut4uiafa$6E1#U%NO!0?%oIsQ0tWn6vp`3o)cL& zuC9l*A4}yv{IUYkPTp-Slh%W|fieJC^$#)cIIBVdy|RB%$tNFwEx-2Fk0Ct{-}qn2 zz4sa^_)iOBHKm{4EuBRiWIT0$KYsfpfAsoNr>-)PuE(AmrsVzhiYHkUJo6OAA}PW0 zIAClPk2zu)*kopGZi;kI9jay@X+XXBzaNm;T(qee$sFr^zJL1dr@zkM{oywYb}Gy_ zYZZ+0|5EV%I{!$72Kxwh$#NOD;@I`XHfJf>pe6GsH`Cs?-EXV-%18GHl3r-6Bs~w? zbU%X!E0CKNns)3{m}C8)!wbvTGBg`qhGu&U{GSolFZrRYL@ybthYrON7Id)Z8d&Pg zmqjwiAo!eux!lNJdTtF)06%r#s+Dg=&e(7-plb%|p3zF{J8U`y>~@a4zhr>=o&Q^} zF+<{gx4ez8HXeA88{JfP!T%zYT>4-2B-&95+udjFa4l0EQzWu^wP);1x-nYL&SdSD*}e%#xRoM zXk+TB0`3Hk(Lgc)Ew;>%{O&$z!dnM7xv}`#v9BC>31o48bzH^-LAIutD~sdMdhr%! z;L(7`Gv?#KF11lKmSREYHd&SD2C93ebm_%&Tydbt`po!E#am#oUb^`;sSQIY%Ftu& zHnUw>q@lLTiIbd`)W%L5U7_^+78&qLa}8s*tsgqp6n7cmT8d5ImhZ?haok)ItRWt} zh?oPSN;qk&%*qVPNI!O)?Xv?j4Y%~b>^3IDH$q9geo`S)4=kGb&$%N=o3?!k)4%lM z^k7YyX%TaN6kB1(Mf`46fmIcI^%ZG}oE>s08VQ#sp^o$@QL*Wj?vOr8r~_hdv+uJ|lu001C3 zjb!sTtY6C-55HM=F z_uaTZ1GjKp6FeuAfa;E6VU~-%oO?X2<9_hv0%FCT}j2b8N zR**qfTUE|3($${hkaG8!*y_GX_K@e3uYN7R{_)qSNErWb=XTGn9OFz#r=zJu?fl>B z`>I(5{;jbezqurCub{%Uo8>m?aGRI-^B3=ql@5JmSbq0RmLp5a7u?#oa5g@!7AW;u zg5inW@{FN&TAta8!Os6))|SfcvXn2SWKf5@wSN2Quj04A{}mb))Q31AZJ{;F;Iv$|E>CHa%Yy;9kolK7)Vu;+oKD)fA`|TC$0u+>^`)U(_d>=@+g8icK5GQw}M@A^M@l|7o>g`$boq12rR)M*uioMvN~8vL)H5l8($nSF~v5>)Nx z=b^RtUjst-%!zp5g9s^aOq(_Me-o|owm)yeSP7jCI= zLHTP7Y!J#?=CRPtd^DZwW)s9HaP+xn7THHec>e&ttw`_Jq6SM?I;e_LKzM{ZRu?V89J~l8Us9NX6l-!(~qsZ|CGDKG0kxw1^|^(Z(H02N?@&IBQM89u%Be4BL0 zw~ci%n4)9%cKXxHvC`o-KsZj%t?&m1CA)?Yg~{Y$Rh~LP`u^eSMbO4S2?$+#EiH4m zKC(KP{H=}Eq6a7REX)0$3v<9VtH^yGISsJVj%FEwpiTIeFGS!T&}eOPWZ2|oneUOW zEQJX}D7b`xF1UY8@_+M@H(VWAjBJ?@k`F|6kO^XMkY#^{b$o^6}uBoR~-76KnU!vVKk z6w8&eKq}bKWL<;J zq3)9o7#D19@WY2UmF_DYp7r?6`9D!O$&j7>Ws@^AqQw6J+Dab9?8m^BNYU27#A~FQ zVm=!(2m!orHy=c`F5(C4khBsn!IAs^4<6O{`e0 zr}NbP%kw8M>uX>5W~^I1!t{?vur;)Qz@b$|?xDDpH!K3v>mMLOm^0^gp59XWxg2!# z*{I_)(u@Y!Lg6Ew7V-8~M#Vr-9$spe%7_dwQ&KX7hF;iy3 z(JLlg${M&|xn#Z~cs>>nf+eqpMxel%WpA?Ll;Mm?Pt|Zv;PC#Gu?sEa5=3tATEJ$F zR~YMgqr)eqp&G{${n5O+SprH%*feSTs!aM}nvvj)xv_k&>zAl_kdfYo8BsMoa&4(m zWx2_YlR3ANIWPc6Q8ab5JXLWQN}QOn4-qi?Ce}y|$NOdF@+v}UbHr3~WC|w|L}Zk{ z`c?Ax%Ks`BbHkL*0KNz8s^eBnbwE(jD$bxtv`oJ=!@|F|cxJS2hNdpLi4(}${%j1! z{I6ilA}1q^>%xK{HNsdw-{be^3Dv0z0;{+cc_xDBXf4-;Jr%d*G_$Nld&kUwqC0bf zwm{P*%u;N4x+cOgN@gA@VGu5xXZw$#1jX^!9!x3RT_c89qzsEx3>&G0X&a#^Qni|= za~EEBIlcRf1WQ39-;@3+p&3&h);nYr>~CD7=%QItVV$X)WbG7M5BcAwFS*+8pX~{( zi(kAq8I;Dj%^|{MJg#n+F_R2I+>-o2w80D8z>AjIY8S*;_Ej90vue=DO`>C^!)IA< zJG-o%pl9k>>5%`+i|hU8?b<(`jFxYM|L>nJJvkV$7Z}3o!T1~Rf@ROTW6!u97h5wP@P8UEV@YcdWPtGjZeSeSD$le`48y7DCd9*vX~%*J zkVp=R8C0cgQ!W`W9Gwi%W5dG5!fwI-2*2py`r(iNxqkiI-!Tl<9#T*0eJ<|QCx@(F zLXID=C|8B{E9*XyE(0thPgO=|b&YN0|07w1%MtecDXbO%B=oFXO9Y-ZoSOXKqFl>E z&vDHsEBvAt=Qg2zI>9g8S`!n9p<~kFd|`?j{B)&Ds~06#_Bwmhb4e2{-rhXyx&O~IiQ)F%_fPjcW`r9Bdas$W0;^@%@WK==FWcQMO~H5wiHU&Zv2 zv!W&%=Qzj7wzoLhRqY4o4hGgX;%kl4>GTZUPfWM8nal9nNRWB17_-P3uhsPLuNnXJ z+IA^SI9ki&qev!A(?hMje-Qw2lc zUeY0Hoon&N!AvRks&>nixg?4svXUV}fUD7O73`7hJmOSTHR~j>+41)-{N<7l^MAuC zddPT6m{g2N^3zDlOd+TzWK1ObW8YhwquC$+_^0u!-~6r#r+=NnTN4F^OB`J;)V7Er zDxI|o+b{>zdC8TnWr5eN+qY!?6U?x0$TfD_b3mNpV)B1R+E=Dcq6xPj??h%>%ChSJ zv)iP}3Lyqy8o^OTL$c3LKK|N$r2}bd=YM?V0slk%e+UVuG7e_3{h0snw^!VMHZ!P> z^52p3lPA~we?5O!hOq#;ft`+L>GJZhsRU(-2*2-z;k@%dz<8a6V_-#;XEwLFZnX&Bc7b5yiC6LeDiD|}FP^^0 zuYC9o3g59_n`RTgbire=+s?D7`GhF7wY!%CNRc4_Uz#UZwPOQmcj*c;)D5x8{*eE@ zM5;5@jB_Ff%!kf|8g8#M|NDVamQywQ;&XR6Jd}qWpVzS%L}rNp8LY@5_M2-QwW&Gy zKhU4Tq=P7p+oQ3iHe2PX=76y&I`klk zkn=N!V*b-oxI*IotP@iQhdXV!P~wSPlhvCAOPOx1#iqy%g=uaA{Fwb(d%#_0UgmB= ziayt_S0Eb%VCyN$LrR6ka?iUMJ81jx>k9OScOX`t^nna+~|#*7&_c_(X%Pgrsa*5 zfki#hIPB9SGHW2lO9b9>=$M`@@+F}>3HCONl_F_Yp|F2BR4uy$3rZZV^h{|PgjMLq z$aGv|bV$9N=86p>GA68CuY8;*v}l8r1vgg?*QgMRsl7yJAX>p=y15WmKi0NO3Rp(e zNH!g?lN_;#xzTvs&mr)$tIRPv-^3_l9a|a=Y$6qw{w`}}UQ(ViObqKHtfV}>w)|nd zI~ECKAUpYoA#Ib}r7Ov8e8H#!4C7Q?;x5?&1&bH6=lqC~o?}mv71eq6<3-C>?A5>* zaDe5P#P{5R-Vn>(M%{}n;-)D82`v$XmI~wkpS{WYyH^Yo(k;oiN67al%>U(mr9<*6 zx%gkTZh1$?21`^X`9}EoYAJsLfRV4lRoY`cCxLctOebwvM060C1m&Gp@Bzz6J@0HE zrzsWED}KqqLGD-lg(rE5o64sa)DR>ovB{FE~Zs8kF=#(&Am}QQIvc zI6UJ#Z>QW0<_rPgz>x|(<7XRKj1t?#Ydrq@SC_a?Iyks7cv510uDA^!cd-&#Cg3X^Y$>@E-U zzArPytmP|My~CUVTBKI4TGY58vJ}4!K-ZD|FQ0vwfAZniQBZD^3pt?Jb!^%jqNFN^ z=&_7r9c#-@|0Fji^P*9EmDWC~u-Sq`;zbsf7N5ydwPcI;@&AT}k6uH`MUjmF9W@-+ zMCVB;_c@+bteGprl3!_GRfbaLzAh-MRqelmZM*tuU$lOmplob@9*_n<7-WW7+y>`1 zam8|^OnB4qfq8p{1IY;(VG|cQibSh#;PfuKR<7-YdP1oIx=FnW@jc4fq^(JWUUU^6 z4v0d)oVo@$9TTD#a}-fug_Vk#QXpICjUa=pJGgcf3A{AnhZ+2CmT5rYmhp?*3=Gqb zT>q{K80zeX;fz;QkpPU+Qf(%sW;-!o<_>YJU##E7gstw%%PLC{5!i@q4_Z5V)<-R6uo4#!erWu(0 z-u$;OiaBa*)@-0?xjTlA2`hURO61SqX8heNdzcB4pG15d{qjlVU%tG?^Hd&5wgm3M z&f@=!$^W$vTxMk9kwW8;#xiy%Y}HAD(}W3S`OoZL7Nt*)6O)H1&`}|V_`kr+suj!^ znq)eeGDZgJBm)PxfpWkJBRJruhW)N1as6lUe}-!y9O>i7ZA|KhW?6r=@qe0IZlC|@ zhd+rweE#{6$X73%_`k<6)l0w8*2)3h1rGD?_HZm+HZ5udiqfu~9VK1?&H!+p}>%U}Fb zpo%bC9L7H$oL#0!ocW)FLxQHtDGRjqeIsPlCf#WL!|NyU%Xg{=#s6l+I#xQ=pWP-j z$+IK>6|)=kmq|A7S1jBb+tM_jni@7rPcl#2yhSYXKgzPzwz06~3p-Fv60<~KnfROE z|FS-P_50p-O(Ia>0wW-@#Jq*1DMny&mAZ0>HeLZ%25ztEKgX8uJj@ul+`j8Gxa82WLpd87*wP5Fe!GQ-g^~27s?g0Onh+1G8 z6d|{cl>g+7@^e$}D6>cBUhk|w7C6Bb4o%;lGrhe7;6U_HE<-RDwz$3GGOSiHQEHp% zvA}PlNjIQHV@^d_jVu7_!)i!Bzlem=Hw}#uwIz09AoCyw5FDFPbv;=*d(;Bh=pF(Q zhQct$*lNE7neoS75?bf55QtFG6p<6wSLVR!Gq7EiCFQD$xk8|b8tZ<1+S6;9L`{w) zZT%0Vw+RMphduA_R|g$5KHg&AHztf)grgk;*>ZcXc#DnndY~@e$>BZ{)O;lxikL;$ zJTzki6iFH^z0OEqwIdAj1ub^55@g5JgD|%-T_DCRtQ!j-nU*`a6q=0{2j;w|P5DB- zVyk5^2!_&A&s0dG=Qh3`8n^+oa%Z7ChZrY)RD@XPGymI1>wbI~N#0N!KeK>IL&3@-1V~ zt%aw%Ujt<1O1R@w*v}N4zVE{8(pR_;Ue5oe92fG1WHJKWuoyC^%bNM$XCJ?)5GeeS zTZ1JT4C`w9b}JJ4fy9sYN$1EM^pc~SJ^gcQ$Zh_ZfIRwjQ^uVS@_D5k#>d86DkEnSux)HugFN`<^r5G==%FtPx6=VF47T=mC1KI_LHaA z`tI}VuwloU@qc&;F&{WMhp|@oyJ2H{(KK38t@zW(ulc`%59J%hMt8(9B>2BJ{)aBV z`nR9mCLR8rYW810lj45xm1$j}I4bLJdfu_@Xi4~yj#Bh&MdxU3O#lEtdj7@u%78^s8rn~&I+@_-%11xPfW5i#_OPP$b%sMHIg5E7T7SeFTi1tQE2241Zr zNrnGoFEfKDJ<91^3ECv4l#-e0yvZBFu=X4=P$JK`mK^ zB~oI2PZST)-ZjgP6$~P06m z8fAvqq6avJ-O0%aAy6ucO$?l$w$EfhzIyDMf-+*oPHhMdpW^kNK>+6Eq{oBuPlMX+4)nd6DM21H{$4Z9} zuK6O)`QKpgmvagU;tr`89NW)v0;ZVC5k9HVd<6e$bOT-79gv6E8(P`X{jgLP-tQ|7 zOt%c5l-w-L-i{;hKZff8G7_+nzI5(rZ?9g43^5iQwD=Mi`YbE_=|w5zo#; z!7K7hh(tWHv^e^?O*+J`Iq9$AAB4e%5@Q3G+QVvA!X zbg6p2ypdyAgh$lR5k2l1)-aq z7eMw>gEk1M^6C&IXd<(5(}h6t0N~@ni^v z;&(K6FdvPLAasAM3rQ_5?nY8=K1Yr0c}+gFK(QD^Gnt(zwZ~~}2$p!y#5oZJ9fs3} zWNGiPDf6d8U=oE6Ptq2Wk48&s%VHP(+t_>Q8AGD7c5v*)!hH;L0?SKblFsMMQ5l?~ zD;e3qiztJf>hthP%5H*6GvSz}KPVvw2&GHv$H7><^$24FFr<3Rk^kLX+@DTOQoO%k z@Vp2FVugi|bfMm`nYyTv|G_ve84O^Ns1CwRvxCCO{&8dkN6)|(gl@wQJ4J?-+1w7@ zOcNSdp`t6-&F!#7OBZ9T_OKcZgJUg?M+=ayEHIcKbI{6jlY=Az7$&?agmFhXSgH5b z;E&#B{_yo>&u!&gpZ@Zu!e4$+`GUj|vPqK)&1i&VV3F*cfU1nC*!aJXE}8?-TM-)w z(-0aEGw^wKL4N`=a!U8VrxB9}eV-Q|#Vr>wAek>l!6qAa5ZA(Aenj}7%0Xh;r@yz| zI&qU?F4d7+JSa`DCA{;0pMRNUTdL$RJDc{s(ji{Ieq;F`3nF`b%G1dIJ-60lptR-T zL@bL>;5GEaPPR5}7eeNY*pZ9+jIAyEm6%zx(b5n?4py~m`Cq_{v>aZFEij}z(?nhN zDvZuAJh194ZQt|8tMkX4So8h2zVV;p%U}4C@qbcn( zlPcC8V#Aw(Ee_GMb0eM0Gjgch3Yo0Ii3*ZmW=uFVDv78XdX4)*1M>jYQaQkAULxrx9GO=#2rv@W6Qy2FDJy)|tUBjx%r zmZ_}i2wbjy!KW*3aO<{)oj^``{fxSeGV0U|un7AXD8;IlA_`+#2TO4(T@&NBXsz&Z z9YBG?WN1iZ$13x~MnD4%8aipHumMr?Opqp3%vfHQ6>dpgU{M|xmjCoknY#0pGa+sH zN?AbXOj*PqK&tB-cts_=!Ar?hnRK_7iWUr1v1M&-QsYWLQD8TRh0;7Rf^ZFkA+L}G zBcBBTo6W2R9Ud@(4}PNk(0!yeF21SGf0*3xYuKWjS>zid|NCSFc=alsQWi0+3@?*2 z^3H9Bks0Th@hkBP>Q2Gppl>2Uw)%w?pD#YA%bx*QvEro?;vY1!DCyt{VXW*2725l=X%n*ki@0;>bw z>kjtrV7fLW=eaKVsIUj1Shmr?KB{J5RTq@OOV-}Xc)5G>ysw0M!dxXZl~oVbiC7#G z8*zsMJJom@C)KE=#o}enOo$)$I&Asw-Mjd^fBIp(di9!CqFKhX5{{@ZC3~(rw?T`z zH6xUtt3X}QM|ac?EI?sJ9Md8#%N(&|QvIl!PT6xA(t!^(6kFIVAva&ou>Ce0=-qZPKAvI_xjWn$)UP-rBfwW`CUBRn072W12^J zL?@MPG!y5J(Flo}MX*e?@znk6FMs#bc=PUcpcWRjFE%~rds&bMFe$c@d?uY4><}Qaz_9CoMNWnA0A-r^ zlSZm~1fJ>~`Jbd=jR&TTgPTl;^ck!30PbPW!2be<_h4Q8pCa=S(KA5G@X3lG@_&r{ zUq)#i-R}0T0>VSIjQ;~^ZTwH)>{RYXbaEh zk(V}@@;)d35vl&bC^IoRJB#C`_&;5e)YCTBh-7 z+Q5;iam2}EW*+A_f?TwPuy3Rp8R?wSea|za)OBwCK6<6|zcfJ8<~bpzwV5nnT+U#N z^i*0GhGF!dRgrdRnZjrOfBpJR{lkC%VZM6(#`WnyLo8_&zSch9WnTENiH8^gsQPE* zkzw3e6_H`LY9M#k@^zF0Y(+L)L0sFj9SljVI~LVhG@Hj(c_{Rvr82Pz6tSdO&F=LP6>ILORo7en3O_f4}hJEAhqKq{9et8O@El!CcZlC2}Y`q%akLsfR=kBYB(s*pABG zjG0R`M;FZyv`|79i-B-?>5mvRHTRp&{~`a^WYrqfIjoae=PuZXhRDHr7?)|UeXY!a ztqK-s2woHIUNgE|WQ!FkWl)$p|yg-!(m#($hCWEjGNKZhG zT-^2{UmIkjs2p(6XK2=S zL`7yr4jRz_5H8;O=2NQLChPR1?CAuPw zbZi$;YqYD>3Ib!0LqP~^$~$T!7VU`@Jbux>+Gwz@sfEM_(RFf!pTUF)cSZ{S3$W1! z9GSy1`=~9#xEAmX zd-}KLM%4d|u!Y?v94_abHTJsJ7;_l-ZLjo!Z-m9!bb{wnQ6}jGJIzLo|Kq*B)Pcs@E+s0Ii;D7zsa|8?&MhS7gEyRi3}VLQaDp4L1nT*lcV#!>n5Egd72> z0eBk(jS=LEhAxywoBy#d!%BlDYj+U_A1fpVFjFW2ua8X1EDi2r-<)hp&yM?Hm!!5S zgl*6PM~&=j`;Yc1cSMwZhbe7hfy>7u!bi2aTfmJ{W{c3-(2MAu7F(O{OHagcSc66I zL|)5|L%TLp*J!gOf~fkgm>5l2Xhl!dxvtqs=G(lRl?%*s53;%vmH?wAKZfG<^s15n zonA9>Yg7=-fBK=#l!jfjcTJNTM$<$cnuf!Ta2=S|_tA~T(<(AMEUfUr^KM3d%~3kc z2`iYGy#Y~*#aFc-=0woGvqDO(B@B_Cz!{2Mmx76DCSwWs<2T1M9ijuh1|69AAKh=S zxUY0btTb5R3%e)qr!gppV3zD@36trD57Qgl=c=*prG(cEu9=3h8Ne)3VJpXA+NDC3 zmJSYQiahwFK~{sN6idn;8aQ787i-F76WN9`A@%p@5#&tTSfP6z`H%iOcl@;;($7)4C)b6>xC6aVnve-!tX4qgK+MUw+n{0N>^MWrq|p#thP{=c;NEo=F_-$od< z22o)X2-oA8n%>v(X&^x1wlmO)$99mD!Gf}GN4+C!KC-UoW0Akuxud#(ik`+GadY2_ zeX)Z2G&BRIJbHT-Mw#GKMCHnH1Lv7DMzaHDb3bY=}KmRdnU z8Saw~UwHl}$l0ZkO&X~_o6vzC9@hU&E7ftfqOn808f2LM%n64$J7w)r=+-EkC1;t+ z0pc?Yuhd3cNvwm}Eut=yS)rRlXl^MrN~8id{xSY4xV$8>ChW{0P07}~XW z3_b?%#m>6QeZ>_4c2s%cprtq#OzUkhtSKBC;*mGkrS;-okrwH9uLUe11QM!+KXDP z3A{rO7|xKzgSVW3J64ARwYj(qOJCUgXM6wV0;}{oCO&2)_m91j>%y zc4dS%N0RyR);Wss1Puj*Je-VV5bHq2^locNSFIyMM6_1k7xZ)YQ)ey9Z?IGT4_u^+ zPen?H>v7PP6ETTML=y^JZLY9i&alqp1?Fd__00p}V5K1?wT`(|zKTR)#}|zW+y%>U zGBrdaNVuN=8{h*BFmV{ar95|Rk_4(!%2Y|Wd#aO>M1-oC`A_KQHvpIr} z;J5R?h5`0T3-Q-j(fI$609WSvpGW*p?pfM2O>T+J14Dqh|1>0=;Num$INIry;*Pa+ z7x@!z$MEE|2AEgbd}Di8QrssS?kgSclMj7Z@4u^7ZHP+nQ3Fd9o`Hb7Z1pTWOO-2~ z+mfX4OK{XN+W8+GC|)i&@VKCAAy7=8SWnzT9g>XKslwfwRo(ZG}4Plc2LHF zLH>uqNWTFWR(yU-hrfQcRyq_wK`@Hh{G;FdN{2sv@(wiIloia!i3?_L#(@jqk*Z`a z+P7K_P9Q{cV~;n=3Ir7k;33(Gx1k^3d%_>P5PRV{eJ>Gy@o)bU@2>BbV-e8JzfpVs zA6eb`&+OBCjpoB>BVvU}c8DeN$i3gkZ{w@D-&&DhJXSjF{2z{1JgKLcBdwM`vU2+`$a@FH1h37Jrl%q~g3&5`Vh&;@!ddXaHp-eb0HCbs4+j=5JeBdkCY938GgPWuJ|l>>T)zxPxOmxF~k^Wa-y-V?Kpn5m?d##SrTtDdh&yx7tKtC?uZW=29a<;qTh!7^;`QZ5)!8 zCy@9G!a@;LMIV4DxAeDL0?O>*oYzfW5j*FUEXS(WrDHUGe^_>J8`691cUGY6ME%H6 z=_^v~q5IY`912v(F=#}9)O~eStO9f??QuuEN5;k={4*l~0M*ieldj#9dB zo6VAZ0AXG#w3+rs0Q4uHp zZ+2q+ZUS~wbiU09VJ)6!trD#a! ze~o2W`W;#r9%(x?A2?cZ<9W~stDhsJgANT3*$--N1{!Brm@wt^uU<6 zPb}s@ja4?BFu`%Vz$E^aVLiFqC=*T8A^w+`iDyy3;ifZ68Ob|(Z@x5I@^ZGZ$c+|m zk7{3eiKj_GNwE7mD!l%m9q;%7T)N2k3RWXR$k79`?x*V;6t6oNbb}RhhD6gWi7N=$ zjQfwn$(OqGGY)D6RqU+2QspvX$KGvFgN^Ay3S;2}7P1P@RjPZxRDfLi^c4Iw& z?Caw}^npPU^s6mFu%phsFF;ry90|Ldq^*mcc3M==rny!|IBi>Ep@p}R{%2*53rkq zYn9DMX!*J@A8m!_4W9&t0ph{}c6l6gG4iO9|HmNtXofaV))S{!YT!D;t>cTH%j*33gVcwy^zHwDe3kKwcQ&@m z@JYJ@l78c9#Q*%V5KQ18EfUaj$o?EUG}-HdARmE^S?Xgn&7+htnoFG zP@t9y+++`XSusq32pr^pD~P*e88&gTWSv?S?w`#GVTZz8JMo+qXS51iay0jd|HEsA zWVm!+#6tk-yuBsji}I&F=~1{fg&KH{wyrGwl( z)-?7mj4Ss<^Au~neqd$zb*PmC@Q%tuKrF|yT65lqssNrqVZVOyNr)UZ8v$;MExpF` zU6)NtvaxhIR#z~Ov(-V~d$NEnj!B2_-zFWNJ$+`WW{3ntiwG+z5l0L(7^FqV#X=bM zA^!*PScb^Y?~@LnKV6d!O_K}`8ezTu?8UqI^`#dd*9XtO2$i>EbTAcjE`@7W9qs>_`_m{?hQffI ztrr9+m2Nm5wyP@7ZiYaQRgI##IUL6##t?GyKe1k%SbBa=(RpF#D-3tj)xalCQp5wh z&Z@>VXT8y}Sf}AfmAEp;gi@M$D8zansFi6T8p-2w(QUd=JZJcK?cyyJ8uW$TphiB; zVW5&M<(i$1gtL4MKds)G4p7Gcs0irgJyUtAIDiUQs zOnL9N^&cJY9#_TgVcZUpOcfTeOgT8&+?C1PiJW`-;WO+YRP}A4W;1kEtp&jtA&iZ2 zYEn0LW<`wUWlZ~yr0zOEMjj-It!;qIk_-b&VS80>%JQ7vj>A(lUb{K(t?O|HjbK}= z%HcLCk26^xyt3U()9neZxJ)w)cI6zU1)zrF(fQpGqD+Gv@cbxnEl>xL4xeCaCO0s? z9HT}mq4sWjvM~Y_G-(&rw08@}%d%#d365%#;3t@4w@2=-C5?f>O#p9A9*#M}ixvyo z?t>_kv==8*W^zV^dAdTwnU33ZAEXV&Ohd$7ZF$W_L6uhcj^jFs%k!5ZVXNPkSX_zK zgj4ciVpfJ()1ln`RxrTizSwetMxR+a0AXJmPCKBWtdebV92o?RIQAshPAdpu~KgBF=Dng54I7h=`QGn1G3 ze-XBHmhw`|(*3%o8DNVL!HWWl=LtJIMw_6i5^9pNO4lpoKG`s@R?-PKFt1S*J9Srv zy|<(TcbD~voAAZD3?I-3mKQDpscduWmKoRzGKl+1hv)Z|4tc-5f?n@e|N2|C zZINtc#RucWHJn= zjINaiSkhXIhmJj_ReIT74xXqn*NF*t_3nzsr963lS^&A&W~dm*n^yl9l zLOM%9E2SE9idovZyUmKrA)TAax{1CoUZGXo>D-JI1c%Nk%b%k4H`AUFv^Jg(MX`^d z!xdji#7T)x<(#KC4}rTYjI4W`$>&iMVH87-qP<(+(IfVIdzG?HoF_-tTEpF=Id6fMmju4AM=6bPzNV5wYS*?g49 zv=ZsCx5kh_cKHir3y3!Y4l9UfdC6+7i*{jH*!P5vtLsZr8LfKY)#?WOB?|+o2P!r& z5y}?9(*rO7?>QkE22KC!3D=Utzezd-^SPqRxdA)Pj8@pD)x^DDET5?|s-MF`Mes0{ zOgX)aM-;3v2v$XFRj+}za70B#G`a7(A}%IomIrAJUP;8-u^mNLci&e?>1Hgk3szz| z2-al}8)a5kZ_{BbcO83;(I{yz`wTSCd$(|!3JLj0y%a06ChpUf)`8wKSO-s^4gFyp zC8gyb?a1y~j+dVk56sl{&l)VDFwJsA?8sa8s;w!-!OBa!5}SIgURl7`G}ss@7{W=` zRtzz>uDH}VrIBbY6lYZwpS4{r1d?GSxt{uC4bAKa zSgf`MfQk)^OpE(;Cd}jnMkXg1*8BBpL^qU&0;@1#!>h9+{hPaxd(j{UJOC+>7lIyO zK?AFL$TFgec@s$4Z2vNyiuVJDbd(t)WH#hZbYS8Gp{S6{NZ(=~p&}7lRD|lYl`}_h zv9}3%q6xqbG57ZVf8Qq^-dbdrf|wzGdwt_Jmif=mujc}wJUUWXC4shp4SKuOC$wSy z-;carsei5_yA&q?fJ{piwU5BLh;xyMxiF!WBq=ChqpO!10y^JzQ!p0zAD&x>_^qUT zuTUw{qH;yb$p7JnKyZkkraU{63kyO_194dosaO~QgksD!9`T46?`42z%;muFi zCZAHIR*s8Fc>#7E^F+7&SLTM{dLUN24T^nG^LjqS;;u?&60chc_Y3uT$*;`2`AWyv zkj&J>I7lG|+3F;EJ2s6{Qh8P2|2<9d&`gUSE?7f5lLME*R}9@I9qPN^`p&W9A;N+w z9iW~60WA9rOL0K%n~7nimUwP~<$@d+V>j`6 z&Mz8&WO(_|qWKUAkriX+D-BxLGg4qYEJKjarr4i+@JW1dn{=qN_I-iCPK?I=U^a7@ zr(*VQ{tI%w>wqgxn5(c@!6H!tsCX!QRehSq@8kjGRBik(DAf4nf$E;bScP&la7h;E zu{gF@JW#~)WX_2*m=NbkAvgtQ03H@k9oMT|L6L$YqJkcu@aK z#!xriZjH~I-Pp~A+N335ge^}*vwm)Ff?zOM6M$H(ZYla8RcrTw1+Z~mF~O`7$E%l8 zl}ZmP(b?Bj1*u!y9RbGYU;s2*6?16>Xmy?<&nrqHg2)arMSnvfR`lslFdW*}Z+ zU{GJL0*nyQ`l-ZTFi~rlk|)Fb7%{9Ejm`Zn)75HB@ulqR4|O5py0m<&<>?bZEVc!#m<+lPPmd;t+%9joW5Lju3s#%TQJc}R3LVB2dkoVt|HCki z`P1hVW8Bl!5r(F!?sN5ft+2w%kI98IZa4_vsZrPA9*@HX9VonfDP;LzOl=QRuhC<- zNO0{9SiZ|!cQQ8aRWhsIX#To1pc39-xU}TM3`dKbWE{Z&AxTg+B=2UkY%gLZh~ql~ zG?@n51y3e52+zBrwS8=8Tf`A_R9!=dWt?)(QNo&=od2usao_Z}uQGnC2ggT@B8(ly zx1Lpg@0lgB@qZYS3QRR$5B?i55V*pv_^Jl)`BCdvS8Ky9A`R65 zY%OW5Y~}sDZq$=;O8nm)jbLztrUhU{)o@k}+!bh7sNU*)qW)?ZfYB3I&UZ3ji{K-h z)5}Ukt~`L9B69H0XP=O7}bPV#z-vi)V1582m&CTkS0c9C9HL6+g>t6CXo| zT35txf6tyC&vZE6)v~Ld!@2PBmK+g#O`sEOAccVr_7@WgCwzVjiTkftytSl<7@^oc zK;r-X;$3{$=JHzaEZU{FSzjTnW=|{pOC{n~eJtZqt}_0&1Q!3NnI@;}bUM3Fy{GDj zTN12Eho3}0(}B-iG96;YJ8ui(mGmnomX-hJj_7i|y2~`rM0@XulU_k_G6xj8pZt~E zq{GYSA1SNo6TkXR__IiYT;mxb)jvH7iF%T?u!>+X4*N7iga7&Kh|YqF7vU@p%iM+u zIk~f_$QdkiaEe)zgZAh-6dVQ=w%ed0G;1CVo=cBmpvd;3(;&aeYK2d5ECnbD&8x>nA6=>`eB>KLP?t7AziVa8+>Bi>E`H zUC4|Fn&dca@BYzelNJ#$$O7`-Z+LS*o(!jfN=GKtGxRZ^&-w2wHvW4`&Z@XM(;pkF3Hq=8g47~f)#s>L|{@YItMKUd7 zl6TNzU~XMlIlkF`9w#3~s3_vL3erMY|M@t!scehf?d9kzNAU&r+X0|`cg}nsKH$bB zJY&%oQUwr5@4xlGz@P38HnO$?zcQ^-OCV+9tJZGDjzu$3<8l7%uQK&VhB$wuI^*%Z zpLlzmMJ(R@sR6(C9Wi#ngz}>tnz@#4FHh~Ynfy6VcyIov=@I6eJY$}nyygwnNnNy5d zqK`VmAFRVJW)iMAH(Va)MX=al{#QHnRuspxCol8)lNYzoPvhy6XZN2&j3<}pk~5Bb z)Z_W{XZ5xJ^b%`F0+R~crM^vIte#zCX3M6CN=&4Mtcfv-9@N} z-o%f7`r~;0=B-;BLAC65nUhI~<-4G(F1kJtg#!%3>jc0|o+&+p<^GE|e}0=#cxrGF z5u3v!@6z6%|M2NG{s{m72QQl;XTGwxrAf{bDxw2t1cK)uHf7(+DR5ttdsaV(flWQi zwSGOl<Hq>XP7JfB(<<_WG&} zeuq8W-!aYQ*!X}10o+Kac*y_i%uX8yVWDgFx33zX-z_f3yQH?hrarwbb1Ow4u=*fg zbZOs|&<&Q2W$gk!Dgq?fOcv-Ep*VJ(TQ|1URh{&2@3H>B*FKY-Ae8a{N&E5?dc^;K z^Yj1T66iMJpebmWD&c@d6JRYkB4+Xor}g%HAkdH^p_mb7o32rR5b*{po6pnwC}&Uv zfuCfBMubVwMwKKg7KWFtZ(;JoLRJN>fsAKZDFD<|a0I^(l7^^zpATN9AA9xOg|6Ky zNs~UU5b!vNo<%v@nj~NYvsvo+97icW{dl!urv-OD)^k`X;}M{FvX2+Hl_xEeF($dD zFCibpz|&yJmEFXf`b-wBfh>7CYuKMSJFx$&a|3F;ya`-*} zog@%zC_;uEmbf4!p`;_RNf}{&9Ylc&>=Zyb2{hxx5IZ43pRG_xJEaD0r0L+Jq1lah zx78mt(^O#P5huTy93@b*1GgDsDR)StQ>Qpb^?1D} z+~66srWpC$y)p{?UepoM`ew5FjzKj=7K2TH{7EPfg)$C1w{KtPKmFtfb-&#uMmTQq<#oN)Lt>e=9KL@BKG&eT zueDz?A3KL%$p0VSCLR9bKIw4j9l;4nh0$%>+xx8;w@HUT)FTuW&w>9pM3)RcLYJ)r z`=oPpo1GNrfy86|kUt*9J3jLi$8I6u^QSNJlP`VyZr@&|5)z%EEx!&aHoL6xgvwH8 zfNH_skgOB0sLNwcJY-6jcejbBUw!&7@%G*8fXxLb_1^lwYPh(3?`b0UQ3^}7IC~)3 z35PGekL9$FzLjLN=;}zxlkb+0;F<0+cPS*|b$fCY62;pfSeoW(j>@f2RwS<$p=#WIJ8p$IPlVvju zyA>~sh){+uLs^)Z$kTMC-r8Nx-Z}N`iaCIar3T*n&e$~(Xw<=pePdfkYtLXWL23%W zv9<|TmFJ>qoklL7Xci5R9oJ@nY9sPr;cH-EY^_K$Vqy{|kOLkugRm9)VK!0+Yl?{h$b+=VgEgXXodT33^prHA}p zQd6?`q^ia6P&>}`wDFz~JYabh_@HC?j^YD$U^^ASYe z>NYUhus$sPzxOefm)vNJU2nI0rJCPM6f} z6bRxcmuLB<7azwrzxZF`Yaf0)zVQ4{;`!yJz)$MJo+T7ywOg-0yTSlgq}WX&-LTF?fymbn=j2=A0*cdQAOZUhHv@mmWy z?|6!ykchJXus!Tnj4HRt;QtuuFB{+OeLP6=Ti?CG{VM-u;_XAOtE`x8h?o;-3)ilU z!*c#Vr|L4Y@e&UC!!_?enOSeIp=IbOz z26+=Ta8zhrIjmY3O`+$re%!SMbi%mI>u8DINQ%jn z8tUYOT$2Aeu4vlCGMjbSB{)J)(J=u7Nee4n;z@n{;Wy*iljrQVA4J-Eq4rf3`W+m1tDbhjn-1>2LZoacxDK(zk&!ZM)1N>Ed@w1w7r?;_|g*&X=!B! z-)ip~lFx=@=&E{eVZh}(s`wB%OAp?Ylxnz))q=Nfc7c@5mTduqf|$m&dVufvGc9DbZD|9)Z2giDhI~J{1BottSQxdp1I@77Lme zX8J-%;3CReHok5*MiUSlwll2zf zdU$Ad(bj=t(Q$5AZ~%17t@gfjVIq-q$JC|8?5pZy09F%zWuk)T zc@e|%KSmDKjCuFvfJVhlR}{eu-Q7=M3844qmUVYk=MZ9Y8cRu65fkQy%1D=yi#@_Y z8=c3&p=9?CY>H4JQ5yop6w5>@WJmh>>G%Dcv88`gL-ym&PJ-Dee;bg=wj4Z*=O1nnZ7g&DIa%(V@N z2xS7UtGHQ`3a!q;eO4EBz%%ycuI4FbQ5sv1pUu-KGLScm*Og@hytnVWms7|tf1#6cLH$p9iE62opfuj|9#{#GGF-*{^2R(eHjV$=Qa!b`)l5x>5zjOVJ>U%*^@jb9i9hP zQaUD{Pu^0mj|ZaWG*0U+bqeVR+Q|5nrW=htsv=g)ulldg+9 zl;~4TNUasB;Qtt)*OkHd`>Vi$9qAa#&``*iQGfXEAQr9*uv9IpBVq001>8z-2snr?fZ(wLX z`L-=!mMXzW`$FN$eyo0uFEO}Fq4b9TFT5hKil zG*i;8kYzTTUh9;yte2L0YwkOQ^z?r$m=y-ajg%@oe>%O5R+L15vXvL~ce!AqFXoQf zMo3FFl5k>)5c=o^mYE10r}V=8!bTRUOpG+OXNxT+MTf3I=da|%L$S=Klsa75ZYUL$ zP{<6dM)2{FKQFej#uADQg4pWPsPiZDG-%#lRhP?%4)VSKD$OHo?!sF3MlleC7sL-! zm=%2o_f^C!D|hr-E?SmKZfxHpJB=V9u9Iz=q6*UmvS83K!!`u_UpWv7O(JF#`O$E3 zgG35470JSZNBJ+48vnPU-`)=WtIx7t^;AJ%z6`LOszbi}ERIPB&l7VjWJJNk{U(fX zCN2MOACCt_53rT!#eP~Q1@XX&E;12gu+GSTeRmGxX<-PHqnM@FONz$(GDP}!E`^tc z**tln>p3_~nQ%xb6=TFo$u{(sRJtAc;>pYW_``44#~*yVo&Zck6pWqoSN=t6<&Hpm?Nnp;=94Ow>2gZo zZsz=p53c!QjK4j%ikJ~Di^}4F&w?HajY5In$FC=>(AqFp7-2dTH!&(rfB}CdhJkX# ztp9KS-Xy||$;9P<8}rj5$O`M=<2;3eyTNDqW=O7%Z#a+{F5 z>$s2K)Fn6{@v|aF7}5k@n0qa=ckVf`0F<^ve3{R$42e|h?GKG+ z8OQFV9^Xcsd$ld-((Ii$DCc4&$(pQqqdC?M?*)nUxB3*__etB)ht)U%5_Bri^G;=+-P>hpK886WEEPH?Q7u+i`4MKdBg+Dqm4WjM z3J7z$L|ST?LcPSRtSDz0(S2ubURxDQSLzjKUAqP#%`9|kI9bruB}_AUYC4NNTf@G^ z)hfC7Mv{fSOrY)swV!1$M}ZbY)bKs8GzGgR>on%z%Hla(zLaBCL>k>@FBc0z)t;%Q zcMHxA+$M${13$bqT;cNMvAzS-CUFDOVGV7di`5u@_YdAf>z)?&Yo=)j=n6UM(5^HzuTGm;L z+oJA2Yj>M;xc{tON?1^3qLZVW?>?>i{&W2dK|her;HEu5eiP9^&%Pg=`5&1Y8G;pe zpMw99eqgZ(!=i3ulL0QduEb#e7i7Qz1%O?}W4CR9P&EfDGgvET{;bAT6*dQ3XK2K# z>D6~o&_M2KRTRLof^?Pu8^G_~$X|Z(_4?X}-?=}ZA%hF{4t55iMA`*_GAe7lk@*b) zmdlE_=iDb9KKf)R+0n?4Vl*si=UoNTg%To+B>N!)q3toh*84Wv%`_LS94P8Nj|TSKl)bO zCmr&XJ4<0vnMCS(FEN(0q%Nf7G7K9ki-aJ)7aAiaQR2oGI zmFke&}9{Jg~DV64(0Gs2keLOVJJD16AkcB zUl7izo~yhHb$WG2KHlGI#%mM|Vh=#z%76?il%nY^L{mLgjADID4nQt$wV?d+0|~Zq zX}jYE)+;_=A!Y|1z-@sEd3V(9Iw-ChZY0iC2m=pQo6T z5^)q|e)fn@M;{y1w2$DxOm|R%XpOLB|3Brih=N^Jp`vw>WdP3VnS_u`b3B!vRot7PMz^{A&v7^m2dxV&B zJ4gDn&o;A#M4g0{sg@r~w=On>X{d3YM z?<*a?@oYs`A*VVp(Q^OHB?H>b&ipTncUX3v2WKU%M2xNp!{l9By(Xqa%2P6YlK$>mf_qTDPLLIQNwdpM3Pa z_~_Z6Wcby7)P46uuV@wnU=C;^amCZo%`_mlLyG&P)$gzI*}tuyg#ZRu&71Rs{O`AN zfU1r$3bWr+$p>FmcI(GADtM)K%XqH`_}%ljkn`pbTdB}q_cKm>5)NRwSA_Gp?xHha zq}~<47LXE%qh;_cDB%BL>`%C6NscQq&@8{V6{@fn3L8Q6=&0E}5|{b^Kcm^*I-@3M zB!Y)(0VEcpwzsA!Gu-ZC9{DI`)%P+p7I$0kHTUp{^n3Aj7vTNy?|kx|`uP_>vuYj6 zb6_waX8SNMVV1%9nkhtnhL3A9utoIBism=>NryL_bSOcOgJj05%l$#NAM%Ce$Z)Ii zKg?Q;NC1r?L^7I8NhG&<)5(Jz+x34={?}*-h9OP{Q*zK=mkLH~_t)32zs%o%^&6_G zcZa34l_ve*#}tHh1%<0VB4sz1)n;}7tTj*RmRWxC`l=IM16$+12GHp68V4p+*MZ^G$+H0i{|B`7#{9$Q_^UF933}h1^!$v3AaTG(olG9mLtoAS7 zh#7#E0{(zBI{UgPso*3=({r{$V%N>6WmdAiD7h*RkZycx5!(yKxbM31p@{@nmc(?pjRjc5Zyp970iUpcA-Er@!XN$7 zN?ujDqZ^KJ4AQG;)@ss6;4FwCkrdOBk`@Yuv;nGgqrUM@KVm4|2b1PE81j zhT-65a}BBVs`(zOR%l*wJ4dzP+ zQj**XDiuCB9F?NkxN{7NnWh&Ku8+;38--8m;s_3YU_Xe0++?F4i3%3c=gK7ZOh`oy zqymOfcEMuxZ*w2#Tv$7{zpXd+P;;eS7}-l^Ea*d_A>GRdi?sco(w(s8<}n7|l~zV4 z^vv@y7RMHs<>4AIam<>>MFE(Ei2=6?Nba9s-zwVwv~I6RM-Hf^$q$N|0>_=a{vwv2( zt)Av^JzCzYg2f$Y{tq1+>dumj8?)h$@nw@ny)}Zf_V@4KefjzQSq*DB^e89FJ8O}1 zZHJe)xGIZXl|4c1=CcYKbHDxa8n3_n&>_9<39sUHl{QLR3|5AhV4MuHk~|Q8Ei?zZ z_Z!ZSV>(sTYKA?VVGQER?4XqfsKc6pbZ~k8EB&itvc$5|ng7ubPUfadH#=`-Wrba` z>5AQiAv(_GCl46h{(o=x2jBaC+$J4lLK(n$vz+HN|Iu*NZa|(+V{ACI6c{@Akl;S) z@OQ5-iUfQr{I||~c}zO!L6QWnigW$%!gMpyBdn!#>PqiDcP}|tn5ETv=w&$ezU7J) zowq^ywNk}Y&%dn0CYK9*bKQ54lCnSDwtW5etN8s_zm333p8eS$>9;zpuHmKhV*s8- z6iFTfX1(7sh5j>a%yDSfZQB8{;_2z~Jbv_@pU1Pyvj8`jIJTeB!=Ict<@M_c7%Wd) zE91+=LIIIVdKL+71U9AGDr@A9rA2K)YBXIHTL5eJ0MX3z5vH`EpGO!`HmaG^;XEbH zhWiV+9_pTb8;iO>qDZ68{+c@xp4;)p|4bthL$WBV*v)mkF2j73eQiKc6=hBaS#H&D z0|u5ugeQ&iQ>}x{)qAZumGu5EiDFUNmx`On7(=&_7HOenKmG5pIW^$nD zLp3XumR@V`bv--4>!ZU8749@(GySB1DZh!y4A_`I{a{9J}V69}~v5wN$tBkcI<6_@1N>pE? zA#-$D@+}J_&Cvy1j0nTO$NoWish(ING;*su#v_Yb8V2Rc1jMC`6|R(~m>DDoPxlIe zTElS{)E#%VoKH%m=cI9-SW=|b5WA{53CF%c!fEHD!^QJ0Q=7AlEFjy8=TJ?av?}(Y z9oU{Esp2Dsn?lVMaVsg`1_G^4YDxDZ>j=5Gf0nCt>?;ET2qaUR+yb$-ybCT`f_^*z%tPt=#DSP zq{A~ize-o=tMi0~LltUomQez^^yWzz4f0SxNj`p!MZuO#4-PvZPTR(8CZL0_t)g~W z60=z=&#vxA5r0md9Qcv~5Xv&ex5vU?%NS z@DZsv?K`c&`$GoM$o$r4P>?q0lEe-gq1HM^D9*drFpOcDrh#EGq~YX@AqjYehLSN1 zNKt6DK~yRSF*%(8j+U>6*ItbGAaxNj{G|kkP|FC^ce7`q_T;S#mL&1$)j><9#c#TI zS<14QeM+@RXMAswBmWWX0{jvF$MF=X^98m}vo^`Y&Q`o}UGg13f|xSR$%a@= zdH$z-9-cd1O|0iYSbLFYCzeXmKO7hcpTl2+|2uko z#;b8R^1jmH{*#$+V)8%p7PxXd<^R1_I$-uN@5|ghxVyff0?;K*%SaZPT=rk8E8BNz zDP;LoEHxsn63rkV#a7OF_7`0P=wER;@;^es?RC+fP!4vfG~%u*UeZVN5!12@y9qBP zTMKdmg<$l-_p6YffAZ(~^4X^m!Nm?Zt5-$lChi)fYCG$bwv7m#ewZpBNLt4K(fxe; z)rY)KIsoevCMNu`|B$|g@F;>ib?{$vkT9!OGa6{+kQOT!X|odukU~M{rKtUKUoqC z{_hodMrEi_mYXL3w+>;svx$O6s|?ylseJ$E*S86WW6}Xym$irZyM4YtNb)}E@ajSi zndPx;mkuTxZ!8zMn5Fa39SKz5Sp%%2^$8HS`iu~9w1B-`R50@Y!b~ZRE{;a;D;@sy z?e8+tU!Qd?k9BFWe6{kNE|FG9`9Lal6BWbMiTQzY`i+mgj+G9d{Gy)S-Wx;{vC=qY zC<~_-b047r+L=M3Gpi38C4K!iT`dG|3-Un8wU>vdPJGX&@0Zidf zG&~KOrb2rL_cY1B;hFuVAO`p%)uYX+U&iQKCa`C=1~O*W8VrpG-~~wvDL)J8d38{i z>I?Qr0Yk?%ujuLC?XJ9hyg+%RF%gJRp5YZ`8FuKwkOhSe0EU>JXa)ty*tMOmWw;Sf zd1iVf?|t^6xn{7|=_&HdfpFHW<#(|#9RAtD1_)Wl5@^WIhmfFfHtgw3U}|=g8Aoxc zc?3PyI+UDPs=$(V5yc!fq)!nc1X6+wLl`~>3rGmRge=`#C~*CH6M_UouRR1E`WQHM zb$iLJi*ztpHVqgJa)$|uL5W8(ZM)ZGi;iU}va|b^=gL=Ii><+wsu!Dv%AA3@wr6gD z8@wvZ{9xcKOv)O8?*kDkZM?@y8x{pwNyUV!ilC?a<1}3wx!zwFKuDZ%$xYODfOG=k zh*QLOr)iZ;O4X9HTIx(8uAG*_54N1Z=t7Og;RE9)Tq{lkY4HC6T@0qB*A^$Wl3RIpgdbwj_yy2QEKyQK1lOJuzq`*safRdB>g(9X zhXq`g`mmJE$p;)JB_T|) zSEF*3bUHFHRX;};%18FE99_4+XFbq42LIEyZMVbeNxH67{ zHZIx^a}O8gB}Z$Xzqxf#8GDDdJrCga|Bt@^qxkU;e{3yb35U05ziZl(SDB8zjoAU@ z7@4tQb@Y<^MpXpSuiri8uiu^?zOI?JPJx%VG5Y`X@L#fBN4Z8aGuyBLu;z}!UlTp|8ct|G+m^J)X2K0JIFF5tmJ2a?I z0=rBM#j7UODcx!n4;ea02GQ|8e1{Yr9|jO$bhShwn zpw^yDM8^Oj9o#byy}d?63VD+0f>Ov@lA{Hi>}z5!TMAE-^9uv4BXTGuBCEbz#ODR;VLpouzR&q=w zKs2ySrc~=rx5Xc`P>7*)hQSqjW_$v>SGx$|h_nGh)Yb>~dl%|_09xlj_|=RCSA>!0 z$@zucsS{KJynXW|w5?rqCS7tMu!v%bnPJ~k6Tlr_&X!$yM~n$V>OQc|)wE`m;pzo# z%im=tTh_5bA`Ymf*~Q`pSAYks2jjSVD^x1hAnjrAGmRQAl9#41xUi03f-EHfuNIq4 z7PxG#_K?kw%9b&b>;53g|N3p#`w{vs`8xRd?d@+qsrc*?@S}(5u#)0SY#W~cS98x; z=Y_}%_##+ynLgP%Mqr6)U=h7MZeWjgyA1U>8HVw10OT!~T0Og!W~((IPdDT^Y)z?r zplo!o66&u0v*W7cpY=oC`Ud_ywN_)F>KlcQ{vYB z%rAcUTDz|F1bT(0cALTfYu$*rkUi-ROmVZak zuFwDa&27@*Ht{fDOO>^%rtIk8Y7nS*C^&8C6Ak0c>`ly*8Z|z!?WsorR)2v+bGw zqCqHlL8I86){5)wC1!YhMv%xc5U5RIYQZ@!3li*eIn>kgycc;eqDZD0AesApEa7)< z-wH_al1mh)0O*lS>yTrB+ejA890DenqQ}mb7~S%^s@`?^YIY1RM4l=ap?l0h1An@) z9v2F{5-qAKDi4zk zZI6)fJG!&-X(4OwA~r=Z{L}Uo#{|Xml`UZtTD^A_lD*t8%)V)ON0a1)Op`0r>GU;& zK_@c>wh5^&YH>9VM=~=Wj4RVM$rBz(4g&(?rLkXGhzX>s+R{IokaI+0=XH^-xx12K z*QyLu)+!tplf)>2VEYYwXa37}{mvjb;ASLU=~gpX7bBLEiRK_!%HVQg5W_}e8f&dx z;cB*s2nBwbI40aEJLZhHYV^pU5-Zh!|FRHktb*qhPcxi{**zO(c$gq%BQzmF#+D>) zHto!htFo3zBd} zjRCEFnBns_G45RzA+dKu@)4Dh^cSJCq>DJ1BA!OMxuf-$XUHC)lN;qi?LTdJuTrH>to zVyd_bWbjtEIufS_T@9F9A{u6%^1r`aZlmEJee%nj-JcVadXPF^*{c{b!?CjVtRw#? zuN;O^LzX8=#e_aZaS8(S_#vEc?kgR>UMn4B$jSjh&i^@|@sPt;U@#B zdDZsp174rYh}@jJhCH%O1S<Lc8%zK3-Ba{R2diXatnRqK zKD|`_)yww>#<*X)9upfzJm7zeEmt>41B3}2R&+A#xn*z={XFnIG&#WlJ9wo>6x(v> ze$Kys^Sk=fx4&mg&Dl01=y93FvMxGzX*#+&W6S^A@ubR2loN)yFYf!EUtYuyKlyp& z;9#T=Lz&Pe=s*>)ki5hIwDzHd!v*%fs35S`v43SCDrs!=HH9n3k8Cg zORc!!fqAJ2=x9XXAp8=`-($mkDwb&_U2brP{@d#C&MG?E8shpuNbWMP%$vrL#WwkW}{pHFL`uu&1$fvJq;14M+L?MTFFp5K}ie;M~Yl3 zKCO#-;K$g<{;3gIwt2GmrHooRU>)RPvRIf?WXj);oO=lrof4dM!{B=WBD!(zz=>;6 zxJex95_syq!T2XP;Efo?2esQYn`&EZa%h+axN1L!0JJt9a;Ro){1M^2S`EiR z#}2jy#2Hu-fdP*lo0jg3WhPeov)-K#tgJzPJE=uE~LVKw&jHr`_4;23@1e$`bq5kGQ9 zfnCFnr&spj0{{*=FF3uNvhdyczx6BuqQ&Cor`x2%@spYFVL>xY+WWJcN&otj%1>Fv$kE)sf%LB<3 zku&=PGJ(6c?04#LY)U1mg+ew0gcmHgzaPB#X*|V!Wdnb1Vnkb@|3iN*wpf9H)a%s` zEpG z%wnRB_RgKd_YAu_SL{VLFxUFNBGYsT7b2Q z5}`J5%8|pHu0Z9%1=aOQeDTB2bKPEn(9Co{2m+vaU)2TBJO3M+lE550YD8oOp{pky zZy*2h{nP!q4*95fl?V~vxlKC!<;(ZC!LIQp@w}+-;D5)uu<-=cOhmHc8ij!y_GTq*;tlEZAbVpJ(pHJ1Ok(z z2PaNl@Bj=rR&}6gb;)+psKCW?@xO)HA@~)X2YF%m3|1Iwj50k`0|{Wb0J}g$zkaU& z4fBijf99~KXIokO`qx*SWNw;YBFu5d!yxQnPOa?#$55Y@o&n8yZHFn6iSNnuwQBH}v^TcEm3*o9h?D1CnQ(sI;$C=EDrZXe&`1EUYMH z4$IcHg(!&@@x+34unvySZ4IyJb0CvPNin-Li10W_#)5$+8%p)&)atnu1b_NCtho-M z4wlhC2S;j@7=C|x2mUtRGHa_^4h*CmqxOMSTQzM^J=KEw4_}0(|9InTIUi6e;C2Fcl*JJbRoEY zkDw0i+`?8l=QSE${AYS| zC5*?VM)Yg{m1wsH#8KdDhtlN%USGh#&t#tI{na0?_4XSly2@b!Xwef2O8YWO#zcny zIF3GnU8FN675sLJUO;=;slR8RKEqDBwCcR|Bj9diaEy=%+8>C8#{)!PyZ_ zQPSjA0x~V}ER?aa?JaI>{R(5AWw$Pk>o(~SU;OCD5yTmv2(tPeHBZOCxHMv>Ooa1) z?rf>SW+QM5(z$$_bg1J&k}c7Ui69_+dOPF)_56eJ|7P?GwylYU=~a+f*P)ep(q&8_ zu3(WyUjHYd%T4@qjL%?AYgYIzSsN;<=||tsW1us6_8D6aQyuK$%wSTLh{8R}sh!7L6Wr zKKxOUuo!OTUxT(fA>pPgyX75+9O^(9T=WcwmM-RtM|uqRcK`*QlsT>j`XCn)1ANN+ zW%->fda&+{vF;{B0MJ^&z=IYkeVC%I7M(ZYWy#C2UJNX2IV#F48vIKHpi=^Utn)Mc zL`yj4csYQT-BVUrS{mpcqQpwd>9;w0mHTE96_y1Ye3$9UEPzXg%55l?VgXEM6N4W|$5ue$p?Ig~ zs_oN*&h2cxZNP{=ktHo>MmWWP%-@m+VI|Y91GZ2Y$w3rNyU8{8aBs4`Z@F%a9_QHM zNok}b$aCA&W*tKV4$3XZtH&;3%}$JFfmOt@icP3>9I+bJCxr`xzM+>vA8X>qBS^wJ zIlx;YX+S0V{n(%pE<9mYFb@oxW2D%ko?aSZ1y2h)EBu*G6mG1@uGsnWZh`sqk52|FM;tZaQ6|G#|tPJH(KM>Dx- z5m8X13a^wSoHOQ?{qn(hm&G259c4ipYRK%!>f|j!#c<_tYkd8$*L?fUhi!kaSg=7- z_zH5?M#z{PfZ^6Qe%M$}*RxhLq=glafX&M;yg{P|Il3?3GV=vR$&0({2x|- zfP#IjvxHkGkv#|h=f}XyvOloOscqopNOMiBi3J;n$KEdHMq>}Wt#=L%LsUR4hR7-P z*jAgNM`r;l54SCaws)^{fS+7vWt=cfKAabB6c)_ws6htq(T z0U((649}Oa;1mSoidB1V)?=k=W5~3HO)at#G8if_X_L|hLAD5@82D_M#F6;+Vh{wH zGFw8$y#o10eYaCmmd0akh3-;j079h7Rb;nl$T>o*}sW+ zG}xf&anAP+QxvKIIEi7_FygI{L5gjd;@%O9JszerJG_RCV3DqKI9T-L=`5va;f-K$ z&+Jb>E(E;r5d2z!miGtMjO2yPAu^6&l`H6}4SUMvwL&wgQWUSYD6rEF?wTyeS-%Oz z#`(gGCPxNt+dBu7S|`PT=hb-S|FA~8G8O)NTPqJ!B322*%dRTB$lWMT0`S{Nf;dE? zA`f7~wuCc{>%cPh6nNsd8Kw>Ih&d5CMCoR29AYC?$2k2lU19`-xUlR8 zuYP*phFcSvV>7i|I=j>vF8+$(=70QBMI}?2<%T6__61{>4c!ugx2zPXe!$%Tt+kTk zn}4l%_r^kyS){A-WxwnT0Z`3gbwg)kY%u{*{hK7Hb@d-1NxF@3v9$+kLiVi(+J3O6 zAU~|s%$Q+5pd=C@4O?S;pqd2zz|`S03lUacU=ro1U`H;qQ^b9@bHBCX_P60#jLb*J zH~8O^2q4>X|F^fdNrw;k9n4U`;lKX+lc#I^` zUL#7)s5nT4K$k8k*%;|L&Y@g)yK0i5O7J{x#W;w_j2JN>O=#LGT8%e!xWDua2UH{x%6yg|+gUNW z5y{X68q9;r_>_1ZH^w5^)6Q)TM`!R%ATgJ(GFeSEP*KT+BS=j!&{FO}A={@}tU@^Y z!w$zZ0YE2xU|A}>Po3nhTnHOk4fp0q6h73C?;XXi8wyAmfbk^|9NJcyr#D?;C<<3G zvWZaAV)u8si@NI8itwD^uti700;MSATlTyI^sn&5J|~&0Np&sI1@dMDw6#_J00bO? z`dT>Uu@!Mr*V{4!<`@YC?28ecj^$y4DUI-R_OsBG0fFKd_NIs14Y+-!&Nff#Iwmsq z(6;=SOvoR_R}Ej)_8uMlNjvmznUj%Ggo5m4{K&l!0JOdF@X;KD2lHq{#5zmkY8HR% zUU&F-go-ZZv7odkDZ7ny(g+K8bZ%ok2`3Cg9}(1xTbOp~U6r*`vKp2mBc3UB85F|&Wme;9%J5A(`+(?u2G zwP%_FEeNJ0yrWHA6T|kQkm+6+-Ez=L8fIOYEEmzUYTa6p0`$b?I=Q3esM-j1X#%fAh2Ifn?f15? z|M($3ypQsw-@(-wM}X&M%@TWHg@f+!Fh%2({^1XS2=kII=;vIBl*9hrxwi?^fdfO| zyVkgvnfrn*1?!GBc22LyQ>$@_Aw3}!F=t~O0-*BB{*-;u5`Qjn+2#J>zRKbIpM9^7 z=zkZ!9Qp6alAA9CXBFlw$=2{w4c2AZhrsO zPk59*5XZJ0%o0*3Q;Ff}J3ioZrn1XRpVAmefR& z9jgn3qlMX8ZZ%I0Y=+bOy*W@mp2C;CV(WwKl7=`NgRl0Nh5clTW?$`BD!N2iC%ez4 z5PLO5{97%wOMx?G3Q@Q`kC1B!ZvrF3RMyd$gp7)?dxxE}u_Sb}WcYIC@qWCn*X>^I zb&xa{@kUO4VkC%tsiffob$W&ft%KqANa~x67+>Dy$lMT&lh9HGcMogFmfs#tE+Q1lBs7hFx zwyNZD{!{iErIWE$DBU{0krapP5L?NWK_rjvtYXx$N#Ild^FBm$m}R35xw!kUtyH$j z2z9H}EN?3AcyKM#DMWlw$`aGbO8t(jtu5UMM>j2O$-r(bFpEPkD`2ZAaz|-)0oDz% zHK1?#0nlD>8NnOUo&PzrRN@@im|8$$({$ug@F8%}$y!R}lhu)c0OZj+En}nI7T*G# zrj7Qk|Fyqlea3hVnbG!BKCkaQ`{A$?NxXZn<6(#A-g}^u$psv1f&jHZNDAgP?XZ9i zY0^ht#!dfWB;=Xn*}kHA!OJ~D|Ma^L@!o!KHE_RqK3W`Ao`K|ubtS*jJDzt%E!|aH zpzWS~sb1yKwR{J~ztV21`W#`5yH*!JwgU}8wXD4l z!w{j5;}z~+sbja!&^AlTpa10Nw@HWZmY@_op;_wgqi3#4h!g#cgG^r*;(Zje8;0um z_xiv09q%_>nUfC2Pt@u5`r_$B{OZMr;~0_3c-MKNzjX^GOR$jRS_lvT_Nq~R%o%1T z{v-a!#AQ-%)&IbiKExURE%c?6ivSJpXQJ(jkW&sQ-IHN0KGRewp)7Z$(&{#{U5@3+XKW4|s2kn+#cM zqklMj@PEbwM?ZYAUzFe4(b<#a|Arj^PS~kNku+gzlWv5*uZ5i3!6E3JZ7yny8T*d6Wr{0fczg0xicC z1(53AYA_>f*I_DF-nXJ6oEea5{ldc{4JZ+~mvmZcAnrQIZBIMKG0EZh5{BAznr`2f4XzmqR@P2Msj-&|o$&ZMurKDm9D^z(L3gXVW zKCoof2nmmqHslLMWsCwIS;hpGoy_NfA^`CP%crXNX;7R8GJrLzbzN#yoCT!-p+Zq& zwe003sikiz&v?}h0qn4}2C^+A3dc5`2DS`dW`-3;XG>UxM*AZ5g&oC9SY~>2jPg1?vK`MoC(`=eu&KeCcVe{dDPTg| z5CClHWO*0NA(~bB5lx7}m1j%e&e#m|V+~9|Zm{dpFHm66C|lsXK+&4uAy|*!tFI2J z5^f`wX-Sr`#OVGkUELyXqA&)F$GNqX@JgXZP%x}l?TOgJm`kzNshRD6rmDouh!Y@0 zFn2=>s!Sa_%)oPi`U;Q{u?h!0^P^O}LNiah=s-cr8c3r-u9V9Wb>dF@E&&XeFPCMN z|MPvuKfJqG`nw>4ll!wA{<#;`D$$6`Jeb)-+%E1dyD3p0fJy`4ZHOT&ZNhvNfh)O?cQDT(aVwf5+smoLtxWvwvukjJPOP?nt_h!v zLU{%1&(8HG?|%i!;MEO;Lwra| zOwVcQCh62zNYR*l0YzW~VM$1K91~(!z*uh;xI>FA=@73oq5{ih^A5J)`CWuX8ia;1qqb@Q3xcfDu!foyC$u1hSE>OPs~E;QIVd&KoJYA$PE%U# z!7Iio$-HW!Z2?-N8acwhLA-4#=L%teRCt9Cdvj1QI46vi0@>yXn-OCer&>_>Fc@nE zg*+N&n!;JGC-c6~T-@u!y4|=^)%1w5q;lndApg^2I=pRmkkT*H+wb@Z_Xir#@^%N^ zB}>#r`w+o74Lz`!4RhP|T0-N9H37K-=F*O6V550FKWC;!j7*U}#hC4JF^^P#l2w zu^}H=3N(J38=%vnSDKXFNHI5RCL8`{tTOyZ{#%xKOc@fO_{}iWxpxZzA$yeZx3%bg z=)TJm#`u4fv!PoOkrS5EEn@RY#R$D$zl->XH=5SO)P1GHU%$H6eWk0o5Xt|&sEXvQMBi#4IEc_(wPner zLO)Pb+L;_XLy&e`AK77E)@(@>_i&ycZCe~THVT9Gs zIPIt{=nDIuuF|gg=xd?K%Fer{s7WofjdOpMWpZ#vXXL-Ay>C&0YXRxiwNlQN8s785 zzgEL^nS&HhrZ&psRz4@mz&P0__1>WgUnTED(j%4x=`p&pU4<Yq9Luzrln`hv+eCfm`48f|FMmWWdxCbEVSot->EwJC@ofoHYQBuW$p6S# zy1*tDiVuoZ3z^3MqX=wYm@BLRsc`2o43q8}NY8nNdZ0#$|I#n8Z3oq$Rq&pPbgDVJ z?hThY!bC}zL9tCeH~#OONGq|A*ToD{GM+ml9&F(Xi$PAiAy3zx*@dHCKV!jDX9%~V~pxrzT?VC$5Z2kVN2grxym6`n@j}E zKqt+v?s-1kRQw0CYj!BAilY695EqVL6b9pK+g{LyEqWPU&B}-SOE8ouq9nP8TDfo0 zh%yvOK-jQ6AQ3wGgM&wV^szu-4T_?~eJ9uv2L@u(ts`rQbP~2f2(cC{<(3GRT4g@y zS|&BTaDpua)KUz`0n@C=Pz;2#Nwtun_n58@+o~|*9EAWN8oO4Z5Am2sAw5T|rDQwX zp&1R4v~pt^9O7f$D;jMqQBGHgY?4P205Fa*tWftxn$-dp?EDE<<^Mxpms^Z4FEL4>t;e5n)6#=q^L8L+2@l;%mX8+OACqHq5Kd3TVR zN=WrIUlcMA`QHaKiJ}~vqm!LRZC@xi?u3xID$M_{L`!gNxlMc_HP#Y?zso&l_Lhx$wst+oglQg5M zfVF_vC*Xg#U&x8%e>t-4(K*ivaz?T$PHepd)>}Vqjjvg#k`E4fKZ5jCAd=MGABbb*BX=gOsRM@-_{kyWO z`M=b_dS;*1#e;rQCTl%i4!*D3G&=hmg+OU{Klb2}{n~^_gVRqx|7pH_@sa`~AgG>j zU-mZ-0K#xGz$lHJFusa05KdXAeR^N~@?YLO#n;#L08{rC2)9Xx`qhhTPN#&bo|g6E zSQmm3*6;Le?hasIT|c#%>4A~|p>F5u=U{pfKfwQ81I2pAR3zkCyqFA~-+lGpZ?<_e zG-&@@-(mdENxYR-5r#^w{<_O7iS213ZVl@}xG)Wk;An%ktkwJqV(v<=OBpBAtMCSr?F*~{(%j$HJ zq5Xo0PIE?#W5-A@=wYB^|EAEH{Fq)y4kzFLy(IDrHmFl~=4S*f^2czN+8y#0Vhb`* ztkzcy7c`F2r#r{7$f1bc{sRqS;P$Z3#OAQ>l>dk)v?T5~*(*5lkUG39aaUicTniM= z>%J@H>|2w1@m<`F7QBAcbnPJzq^4Is#C=zS@85?P5ln z`G0?Q!;8x&so2}Dw7XC5^PNzWF#`xbms!>IB)ZaDbFIAx3 z9{dWwdi#glRnb5F{zI*m4i#Z{f+puxG&rx|T5sjAUxi(k#_a%AzR%CKF_ic zT*?jbp@o?LlgQP7^gO$zdAQAzrFa&HUWL+_bM%Ho78f;V9BPby7mRA4q(k-03tY8c z@-1JjQ!kgN`qj_>JZ_T?x`b_&A|NpxR#?0chqSsN;=~t|qM<+m%c6|`Z<7vnU+M6* zg~Uk5G1uSUB;wbkR$3a2gwm_p#7H?xx)KBcSxmTOg}>gaHj@`iy;;<6vi1O`F+yUS^^DAn zNjrVjj_If-RRCxZipp~LduC{%kLQ3T7#`%qoL=+KnM$jPNe&clouN;(n+UQ*OB8@j zl-(Bmm>pi3tlY{vrLv7qZMuRnSPq0L4xKLTU3`j}yD~Il8*rUlp8qXXw!h#Q&@{iF zOr=|twj}bK31_Utz+5}b^4}|+3PTsB&KhK>3dl{u2l<~E5R%{0$MNXB+jj24ry#W*Uo&Q@Zzg_3*iRkb_VzM}P!QTg8Y;(~N-_c2U4NB~z2cBmH?mEZCm zHC!Qe<%ldx`5D7J5t1~JHl6F)9u5f4Er&w}c;4)^{qd_J##E!Ti4vRj$`-{L6i%!-v;)0jH+F zG2ypN+skL-aR16LbiG8Y3f`U+8y+zyV2rR7T)o$o<+|MT*^3_>D;=masJb&eF#d&v6!&Nng$Kw*X`cX>r%L;N1t}UdI^}&Zkq5;aHU|-@2U1Mkf06?c@8DG=u!*Mb1 z%|0I?^(#hhLTg5AV1Tq>gn3nzSCAcPC6?{?4XxdXfoO(Cn_-nq_N<6R0$Vb zeEF`q#d6PetziakVme{Hv;`XH8Rg3g1C$8Dt@9c4F|12=#c;jPRo$QI@auP%)Cn`r z0sWue#Q6Wby5sqPZH~us+z9t5>RAl7i8LVQ>Jr`RMYPbh!UyX7PB5v;J{9UE3y$RpeG7 zpzpFt>~&o4XeCmE|6pC92k~M&WUxv(EK=Hv#{|cq{((g&;bPuSF?L~gw_7QPnDw6I zXzJCzC|}`#{KrZTNc-sZ>^|x6vp=twFJ7`9v}{nmmbkzIc&ym-S9$RVjbqn&TeWo) z`29_a|MKQ3-}p+045gt;sQhI=(;-LAz04w3QJlw|(NkHm$(}sRCUnXFfxX9e@P7tZ z8n!GfH7tRGvSC86hgo_si5VOCf4wElebV9m^}Weh_Q32NX&5htXzd27!+h#lP(pBx zW^83c$D9oSTvbgvw2RU!z+mHTE)Sgayb74R+|qQD0HC<9gjTR)>W-R%(EZJBX_$RY z_RsOI4rA)$qy55BW#BFS^{>^bv6Q?2^qp-E7-CaqRO zIiGVhunx^B2KzJ}LGBzC>p)vunp=%fAi}B*=hE#$t6Z|%OFuT!oY&3i3!3w|&ye@a zKQpV!b;lR_j_Hfc!_9mdp2e}@Pxn)t^>I|62cqytZXhT3I5Y^zmAeDwIe5CL2tag? zt}UaNY|c{AzU_>y3jOEWdTjQ|3-HzNs2MFUrUBM*9m_U2;+opy1m#|YX%TMM1)i~0 zJBYcMwUL8R@=8nly)6&dHJ@e9dsw$udOY@NOhM2<#tB^*XEk&=d{fg{<(Fs~=b5K` z)fU33Qm2#|+YLX~i~*y4m)*ANw_TxvY-TOJP#EKeOJaTYMc0dwq30nBO;FIahS5TK zN;5G&Bm8r1rkjR9#jT)BwvA|lC>vHsY&ns!-5xjWvQq52ilu*et4W7bq8PD%dWrg< zUtZHq!PvW8l0lFoQGIgd_>gG;Ie--@+YGwZWi=RWV4Wa(ud~8=iV+Y+S2WyXfZ==$ z)z#y$WM@AC;?>hfHHtLng0rt+UHw{P#04!`S32R*L?19+50Fi)>ws*(9%rC2f7nH!v$h5hrSDLAdBR}ZXt9qNvYcW78n>QXAoye9;7_M94X}-Y=pGd7$>FkF*q1T zY51ZRa9e2123)besT~duju-o>{q~8O}8gp<1@M0Yrgj6!L<#;y-A?D>jtDMXy(a$BZD-n*7 z*AvJUL6EMifyo0>GiQU0)u`>DA#0Tfms}J~I<@G5G94K_2sysydieQ zutg!A#bJIV@~0mPNo5+_$4Ir^Si>HnXc-CI4UJBg{&Qf|mIjW=Ol2$YSZDM<1fNPw zRnLjaevSnWT^s-5UB*AXzt|<}k^a0+`Ta}Pe|X8eKGFvunVv{FN4Ww3)+j}r*ER}m z^swAcVoS~SdHG*v3c-rCR^VE z<)-3f!zE~t*O3!iR?jMJMXqKzkjhqWguhaULuEb_VEjbmdT;w;1||kQ_22zRfWG?U zeWk-y{kRWww*>Q_N!eF$N4|5PzclaB6;KCoIjQoW)dbzObn#|a)BuW<^Jz6;cXcgc zRN1W)w2fhZQjYfIAU=y9(~D;Env>C+m z_0V3>e?pGosLyT_4xhgGLHk%%U2gF? zp(OuHgh83T+KL64gK0T8Nui$K!nf?K%WX2)>a42r)rE*oFY#g@a;-kB{#QdV7E+{hekQ5lC!k&cCOP7aUP z;N_Hxs7?M%m-UFb9uW7WtXLfcT|-xn(ScrW={-YH-RGnI;q=VsIRHP3wv-<%2Pl90 znzD0@qZsSmhk}VuRo=&QGl3mX3wpt25;n zaSh=j3?G!nW>2^qJ}5f#zuF>gl~Oea{CNKVZ*Mbx`(bi1fE%%RKlrD&vCLn*EXMIE z6(=Y370Xi5jbp^8yefnGgC1SI%A9KxFVPK*$bIwx8z3smP%(IZ4dHoq${Dhw#gtie z1<$LePnSuCP?BE|e<`?n?chkiOm2u)vv{d=1ki01N7h&~sq_m?G4`$ut~4m^H>o3q zUDZTgN*Nj$l6`oe_4Oa?AZj1^ECZoG&&_4?jK+JIdKs)|HhfUDt|hE_mG#HA{Na|- zwS(bqGP&tJ@OW=`uBgH-NiZ|jyZ*n@CYbam z{M|l&sQ1T%B-iZ~nvhewSu51i2zwnQ-HE=I>oOQX+?866?Q5mkotE~jPcrmpFFvnN zo_)83hRSXZ52Fzz2{*%x5T9=7ra0I~Y?b_2E=Z9Na8Y%Xhew=sEN-qIFa&?>+bz(# z$e^_`fb0vIjRxzOvIKpzgGk*X=Vb6*1 z2o%0aZyD``qBZ;>aOz>lq&{9W+LBjos8g1|t4e5FB|`(BaBlLn-YKl>0e8%z;X!}l z$>#|wiT1d-Px z%0OAsnwof-`459_Y)PzWfDvv5snQJt4C_fmFA!z9p^nnhHZ%RZ307U>)RKq@=W;_^ zU#+Ocisjsp5A4>1;IawLbF+=nwzY9QnU9KZltcuqsm9Wets~&n9err3XN(I8gdQa- zvSDT`qENYAyKW2jQ)re3_s;*l!|lNLQsKVx|F-4-`#S5Gbih1ihF33)IR7f=NZ82WYKaQX->Go%5ajnPOdeQ0N^>cOpo1Ai5O}7D zg1Hg0wmpQqf7q};d9S^5@52z_ti#+fgx04ykUbSklK^^BEc*98dNaBiSY}T;ooJ zwbJ2dzl;~po`;i=zbn7-Fue8Zq{L@oN=9y2*0&z8XBt&lzTS_O4sV|2c6-H0D7@b% z9e(n3_1+rc97PDj;(rSRad?Ev-73Bh{(sEjDaE#9iqJwFVOF$S2Fe_8>-6K}hk6(P z^3`q9;X^;uA(14V|4!U3H3g!QHt)TWbdH19@%L^1ut?;0X2zp{y0`L!S3k*DYxPz{ z_@fibYQ*irc!>*^yQ_9TySbpl1%f=}|0tvXvHEpqQB$E!L(rtX+^6!>vh<_2z&YDM zW(E(60)T*(3T7We;c52Vs@O-k9HfH?Bj>d5>GC+ZUuc8$x{{FHjDM2-4 z-~&`H8hV6aWMPk~F&j%n6Y?lIFeMhH*~?uUs!b|18Z7O{d#2&Ar7;Ff>E=Ia8;pXF zk?E2E^C1$}W3fS9I6;@>gZ`>49r_ea=xi~y!P~TtJX%wJXUQk8rY^zS=kcVtf8c4{d!74{z7Nx?YBAE$!($tBv{Es!b zbWa6ro##sBXw_;juLX_|BnV^IGF`nP3oalRzo#dF4XzfrC9C%D~u!hswe4+SN z#$#YEUz7mrocR4O9KjsxFU4jUBoTY{Fs0=oHElwOVPLMGU5DiHfd4aQl9hZqTxm{k z9CU*n`TxJZxx{bZt+=%3RiGK_cAs?k_b;uVP2bgbM%T{*rI=(n7;ed4MoFVkZTxFf zWE(Q)XqL7xk94KV2=LKFZU|63@o2m(oXZ7IP9DXJ%O{TX!)CU88AgUS!GUftyBI!Y zgNaV|wWNAQZ6=Sk1!{zwy-d~Ty$e0X=8bok?y z^-w+ndYm7Q6GN=ko(aFQAHkGXXY}Xl&r#$}@hI#XZiC8!w9y#Zq7BHNT$ACqH(;_y zbKs#n3#Q%)JKsCIE^X`=C-PBBtS*pAOUK1`jEmULho7F^CL4bFvp=ur&z{9*{&iIL zBF&ij9}xYh|50}oxMc!k>Uu#U?^rT;jeEbnBIfNC`%9o&|NiBN`u@{3MqYQTCkr+I zCvBHuWA)f{OG~Nd|3~z1p>AOs<793l&J>$qYk>hQ0j2r>zTw05ef;k0f68N}!=kVZ ze?}-5$#m?N-S=?py8>VX^_*}d_W0X!faODILSsC)Fz)T&R~LW(lb^&V&%V1UH%w7x z2HVSQj3Lk9e@)O7_JJwL|Lwn;{2!tv82jNXZH(K8*98Lr(qu<{=wfCK<7MQDECM4* zT5uVEc1NAP!TBCOG)=FEIwV(_$O`A|-_!S<|LqwLiDD{9bi-rL+tGSA*)b+KPy8%uTqIXS@*^xV~f|4O)@tK>)H=?Zji4b ztoO%Rf)1J{g))t?9D1|%G+@UUs+naE#C-#03&a^@cqMgN>1LI&Brk~VG5@bI zOzm(Nh~&Z`x&}l`35$yR>wkTF$v=Kj|3xQF|Ni1O>F_Ii!hCf*$@rxe&<-X#HE84m zcgnmNC<2mq2OwzsWYlD~^vD!~pX5WafjuC5i`FD~vFff6tU1YvpJPop^wu6E$W6yU zIg`P)e)R=7!g)=qQGkNLBO;s^Dkh49x(+*5*<{DHeCatB?{ph00NYm##cZ$%n}ZUb ztibfpX=M)>Ox)6O|J91G|8SjD*(u#)WoCI&w%GhosIFtUimOEkR?F7u6E#Gbt>h{1 zhq|_sm7^@o8nq)@kiV!v*&xs-i6HR`y=$)q$on%Chym4snSE|O{8>!HW?N8(4kX** zpn=}^+bVwbvp>I0K0I^pGZ%8?zuW)pl#0{RTz0&8dKpXPsq!3@wr;O@7Vodtp8{W> zZ~y+s7a!uYr?6S5gyGST(RA1#aq>TP1{4uP9>2gYvB90?1ac&`KUqEJ1O5+#$NNRx z1j5}my}!P@KhvS!*N5H~7H?!Q#!FIMa0R$|fbe1jdDQKiPh>xW(@xj;GH+!5l$a zfL%H@m7MIfP-Mg|KPS~##I+gIdJ4i69{htTL9{kMxJ6y&J*u(?@>M>q9~=l$WQYbk zW_tGb89Birlq+~9s0+g+ONP5LU#91V9c17xxwZy(!TN2_j5&)z!i5k(q!QYPRUpFfVz}oM5RMi5VMdTH+8pBvl`{YyhBzg>&SX%U%snUYgYqpuETQCRRu@Q}Pjd zj|7Jj(AnY$);`@8HS#~DO3AU#4gIy$XL`t+Ph3KF0JT6$zaL^Y25q`MR6!yTbvk|9 z!de_*ZERX_R}r|1jgR~{xtaeB8cC~l2Ph^d2@-c ztt4&Tka|4!SI;B<-3z90!a&s6xBz*i_!$T=d{oWg3Y{x_U+DB4?%@cv0boLhi? zBgid@nt^C<16KyZ)6;Va4i^*#^q4{MtL)cA%36_48AURBW?1n5De%0t0;>SRY)rY7 z4K^x=Rr{P)vO;aFHW!As)%!UD>k7S5L4Wx0VXbty_VG)H>gOJ;$pOp2iNh^xYF;ka zcoYLK+|4Hb4-VG7orc9U!C<M?ns>l0z;ZJd7Wv+V`FJj&z?Q6U;XS?abM|Bjv-B&^k~SDwUn`VoBSUh zuz@sBVp$6_;tE^e+}`fDSG*q>8nH*~P1^d)7w_s*tOEyOweD_3h*nnmI7%xA`JKgO z=pdIz#Mpmj{NFTNF8;u-0(OVh9;p8>YiR+X?DlqF;qbe!{%Jkap~(vQk2wTR?Dgku zv{<~=$VM(EUJw@o*V>xP-34ruvEO;SCJVp!;wSMeUv>?HkYivlEa&(n8U}eRYeBEe_RRHsvw^U@az(~{OZ5IZCtK%EWTIJ?=;7v!c^K3f!?&Bjdmzv+t>s0GDMlkCcf#w ziVW#mHK3=J#H>UAmP!khVl4Wpw&HYZ#3=HCM@^Uxh*1u%HTjUxWwBHhS2_rK)ovlP zEEL1T{k*nf6i@I?STZaUbYQr`J0f>NRP6(|@=HX_ngedxaI)xbn9I<>y=;&|_F&!L zR&8~CMws&R9FwXB6gp*MC>B&%S2$#~PXwwH zIFVcmfWUx1;R~5_Nfn&dnfUA=*aR67GvG$>IS}tK%A9G#l*5WLDb;lMO%-J2?2(#Bzd_!A?2BKmPgt^qF#bK{|9(S{8`BH)Cp$0&HlI7H+B4aMZFiC_rWph z?Ps?M)W3Z7KE9Ks*c<%cnLc}J+a+(owah2+*GKq2V)B2uIj2tPb^;DFRKizsbrPFR zS36f?{e7jwAHM$YYo%H?mXutVDpiLWRxPX;wy0yUstt2o#QtJJIa z!O6!j9R2W187^Z*A51Mh6oc_lUytK<4}PU$ znmfFH*5GT5nn^(t+Z*UQh~GQ-6{vk7yoT)OmsQKBtFS6y^zX_5phA`05a9{l#H}0f zn1^eiW-#uCiCH7aTD8S{AB-kbABe4jzjV+|PSc>U0w4s~ZCKrgT*bsIkA*P`nqG5o z5a?%GNGR|iY8h~~c!YF&LzQ}b&eq-lG-aZ7n+HiT?MiG>>!EkL%@RYH0@sv$U>?~L zZ6u((FLSKpWY!G1k%dfhWxn=PmV`kHfKVjfQn#a%c0!FPG^k0H4%?- z)v<;lXJB%JrA(s&pnH8K8kLcEI2eREZV6>^%3RA7E^tezL-1T~0Khn>B~78OW@6+R zuqV2B^xeIu!lJCnqrut)PE<4wcIlB3!x_j26pI+Ebx3>CrLkTLFC)1ea2{W?zeb(X z=Q)WN=9)D5oGGp8kxz@O96OE=*XAXanh4nBtXP2U_*#Y*4OIv}x2vp4)Y+0m+rae1 zE4I|(XE_8R@m8D9hKSMu=VS;Zssvy&5QTSX&0)>?vBo}h%#^|aH>Ja^2(J3uZ=>!j z9lBo{VE=jDe|Njc|Ep)$QvTS(x9%!kYr~wxVT9EVHCA}5vm_6|ujWE2u%RB&G}7{) zp`BcDC<70WxVM62fK8k)VD?KsnF)Kf!P=6U!vqOVPy!o8V^h<7;ae~PdqXZO&s_v60f_fC&wX-rX)|fBU5@X5|il^q-Nk@~`DSVkyhgw^p0b3n8G@2*~>lgEi~Uq9#LLPb~>3vp3}I2_J?ZAO}AIx=fEA znE%8zn;c3B)J;`$kl)FeV1}w1bPYF`$5LrDv?d*X_DjGO&luKlJSYs(t7ki|T0T=X z_%y5zbN+Ye_T;~RyiGdfe|h~>>(^98f1!m6$Hr&39{=jq`+Auz5(H4^Gk#2kRO%Sv zlm3Ij&Q|cfz5it9*Z-7tHEWe}0y&vO>>m+)tT524!a=-2mc6_QIee#RjWY9~S@PnNiokOyZmr|(!Y0Tj^ zamFa@3VB)9Lf4WT|Fadw+D16rs~nIf|AQ4Gcxxp=G{paDg~H&U5Fv+9lNV?s9`irS zuwpzp{~wTh-0LazV}8s7O2wGH1Rj#HI+IOS z>1awE;$5!>4GfpwU2W_2o8b3jQ$L;Q8qXrXyqI%|)1{US#hb`goSI3Mcu-~-C1MtS z>W=%Qd#t!j<0aF80h=B#zzz?SQ7eZxFGWrQ5u4GkrThK+)$JBs{X*~Nup9F+>;>Gh z&5VpjvJ`*kDgUP*fvuf+y^wbn+O0??%}oyIhTq@*`P*-^-X2SWr+=7RZM1*)BJx+y zJ}jKsjH~)=3EFjs@*lgGZsqMK3vPgSo5{+S48oU}g|ww}fFnTJH}zQ$2V`YcU_;#P zYTq;Xpy_E|0e5rd2^w-o?3UmMA>UN4wVNTXW%wGaYO@J^p zlu(`j&7tGfl@{~}fX9kgEuiAD2F6!c?x0z>*4oyGA}cFHcVdx`8u6MMdSG}v_PAYY zt*~(Z$8n@-^bu=SNYaj%dimm$`qeLfmG|dJxY~dLRaDYH8_zE`K_^>H^F^jT4<|V* zqT*Dren0M;TdV)|?Xwt$?4a<5pWRNlO*+J@O908_GDis(4$4}~^s~faEHyV7|Bw9z z^RQDobn<_dq4bg1*LqO?uYa&W==OU1{!RSLSGP%rxMF|NC|(sMl)vUktkqJM9eMnF zy^kTou*pzmO`Ji&!mLkrJPoeP`%vc+KYaD`cz$`ox~9PYnY^v8Emzcan3=$ha8(Hx zprusIbzG&rOeo)U;{Vz6en6z07!>5cDc$+ zp4j*wCG*0e^vTjLd%`$Z_zlDKEfqlyTgsRc0TjsXsUb&2L`pvH(ja7wkqBb zDNrm^qcj$Q@Wq0*HN!yO>7Uz09o=?K*dGBCNKNyxX*D6~Tv$hL$E1JoVT6Wvoa8nG zZ6u#iy_zU|C(0~*Q%IB;+Jd&Pej@_x2^$?~L8cch(Fuk(RiqD^-m;X_eVp*<6Kf2+ zI;PqOZX=7U@->`Y1-oI}nF7RO?W~4*%{& zW$e0+@GImGptG)AW*6xo0*&yO7R#k5FS+S~`Ig#iMj(A>S9iqaM0}}A3*Alvyk9L` z+6Na%>FS#K^o#|v8LrO93~gBvkjyY^N7bmHeFX&@D`d=J2r>y1n0Ygg*j#SwA|h% zI*wzns2NaR0Abf(zI^`jzS1EtPZxkeA3cAS28BimSEP(n5YtI-U=!d_?p14uBks3s z{r#J#F7Ca4#**5o2QKa!CmX?E?$ec&>**CG(4!m zy@0)P2Cg-^df_UeD!cdqI4*(Y+w0r--B4)pDDCjs*HW5P#r5BzW?%Pb(?VAR=?ga3}28!mV&gS1d-PZhqNtL{qIRb6%CvE z<&G$eg$Nm#HCH)(&}`)<>PeH>;>gMxfJ9OaFU&Cc;vzH;mom;-icps|1^{vpK4U)67)lU^4 z2_p9wWM$3hwoml$1wn-|tFHLuP!a>EnEgVxg;=9nYVNWlQ=^=;BD7%BlBk!is7$ML z9Z#`gsO!i?$k?jj+G8?vq=ru(5qKh$UP2S})OM0IgyRtJWDlA#$!ArOy5C-hN3XhF z3*323I(S7U>`LkAD3XNCFg5{tv(}+P3W($WMU635;sF2}v9}Ztq#|wIeKS^!iN<@d z`VS{%GmKCdEhNk^sAB%v26)5W0%7x+z z6%l(Ae+%7ktkooGu-WHtdBCOBgDFDGgt6vw#Mpqd;202--OJw9e#=xYQnO{T^6bM% zG2240m>?t_Z*~UB>HF;!Z){gDvy8uul-F#!zp26V9 zME=Em?omJ-$QU7ZOjYO>B)hv+R$YF!5|!O5Fmw?P9I!B2w_F5#uhiI6vjdtY8hPAS z@aO2P_Sqc=aSE^M{4Z`ecE5Xl&DURD(Qso57QXDO955L79sRtDDSoE4wGJzc5>)~K z;|KrSDv+=`o8AqA1p=$lQSvl_1%ynxHxOI#!+Nk@tqTMZzH;9&9o`L`b~ z`S)+15`q8&V!Se5-V*1SbnwEi%c15m=6mTa7Jm=kFj|qLRi2S+!CNE$#RWN4Q_yex z-e=PFg&~00uQ&Jm;Qv_Y1pWu?wLcSVz_SxHj$UZq@Ey>h zYL2Ql{vTny;~o?VOx1}-II<~)>T;*mYPGkY(JO?8@RUXS6aan+6av+nlVl9V>AlQA z>>jOLXqc{+7g(>}RMIX|@Jfru+{B4ahVB^Mmh-Mf!ALSIHc=QA#qALQM7M$P$VBEj z(lJ>kM&~V8aVQzw&Nwb2H&~mm0p#8g9wd?;SBdQ~6C5T?tgw*j;{{Er5^oCwLh;(y zR|y(mX6jaK8&vf0_@T1Ouo8vfq#W(&>UV?+*E#D|ke9I8WR#m(=c}Wn>grOs2!?_? zVzF|QgBLION|SNK5Jf>yu8`3u7$z#_o=k?gYskh%@nM~6lt=6^D7BaJi}u&9oR?DT zYJzSKteS--#)QT7kt>iGt;3()6r_%H$m{pov_yT7qRdf8Y~ZH}oNQlTeUu81AeD-Y z6Bq;{KY$_4n2B&yIQYc`pOb<(rJ|r*)CPf_d<+NBC3F^}sdy7CIA>dR7_LZUa$!jkK*^~z zu=S~mk%*Kpcx@elll?g?*~*R8INnmLV{{GpD7BlT*G5&CM8=9oX~^B>dX6-hx*6cE zD}#!S`{Y86{AU2{iEG3|8x%Vp9IjBZRdsTRTid0wQ1rW4Ip%$x}X12k>^e|>B1 z{vgTMRfNfk31txHKI!nYu0v6*3Zt6;+Xyw1qx1e=9c5XbTGSPFP?BiSMl4JHzxq_{ zQs0`kmuHOsF(fp!;c=JS6}|{3Lp)2slL7^Jj(&>RxgVbqSWuPji;uiY6RK+fuE~kc zGgw$P3{YfUKS%>Na4WP0UHZ~(yX?ZfV;iZRvm z91oss*|-I6?H(@o2}tDez`*Z(@=5;e^Pe)GJZExOw_?;6%o&cq)`?e*^E)zj|E4EUVl(m^mWenWGM z&pC>{RdPwJvK;ZYn`T#=&R+e@n5WBa(&6RL1JAOtZifigsRSwH*icQ|JIVG`TVW;m zcHg<^nep(2ggb3tDi({1-s+ZEpO_(iJ6YA(|A7B(@Km$U82ld~sHklW-*YAb{;z4T znp6zOdD>qjJ>}H1m~=X$9Mx9N(Hb%y3DinnF+srglluz=0EKTb2z$w+sVoR2;LJXZ zA;`&@NlTeM`<@tvcHF@#=)Nn!d)0h|3Yz8yJA zvhYMBiFlS8IiIrOBiV6J&dY_f%@{IRbSZZuaDyY!u+K|kC^80;JdeEC56JV{V&*)yR-cHhyvBB`D1biMkRerGb~d57>Z+gQ0fC^r#1!4H;~ zC@K6%227}*9{3szXtF5*06IQlO67Jsjf*X3&XfU=EqHNtBo(WKn6HGMxt%gbsX&zq zW8^tXP`Fi&xJwW_M`IW>o2(~%Ub7>z+a|k{NmpS3GYc?_<`iC`gDwF&vei$NS6GN8 zB$Py@;i?SV)~+%rV6m5z&iJLBu8p>kw(m8=mBgv-A^ezebziI z%5(GrGzX~_XkrCjS}tprWS!|g+^fTtd;5jxwZy+_gaD*lN2K|H$?m3s19Gie8)4>$ z_XFVYpvcV7#7pTGI&`<&6s?ZbQz#XIo2Z{D9y179SN@F|nB)mXZ^yj-w&KmV*UX{K zNN36r!*2ZvD?d&p#M*nD$6wf3$E?Xx?%#R>haiT@NjcL6MNF^`Tz24P>4bl+Jdwf6 z^vKXX7gqltuS?GLHNCO}c!5o@N&_4jX{R(Fqrw8`t$Q{12FkT3EYl3miz zIw%wiv&13)vz(xQqNfEMh>?mI{EzqX+%sz)WhV(Thtrc=?PVZ*YxJ9UU)CRA|5g(c zeRf~wj!@&ZCOcKT1aQE+Q|k`%;X*u`*yADgyc7)l?>`HCtaQld_W%x?1PV?Dm9P`L zH>G31p!?127NvNR4564xz+s!ESPM`8%=Bk}7gVnQ2LG4wzvqX> ziFvk~zYV*Ua@jHqq5^Hg<>^(NR%!aM3-s)PLL!q`SS^D_>;bt&4AiJ?Jj1g+@!D%Wdo=u4-q9gS zLLZBeEgjvXBWTv~2w04Du;*H3dUCUp-efU+sZDp=FlW z1N90MUT(f%L0%ztt>6--WX?39M%p&ZCk+N&*W^U$dbr;@psW}YtTJp3eKr&e2d)VZ zHn7$v{kwTBb{J{T%(UP(3n`Lw?!B2wuqAUUXHZoevJr*YtXdD^hmW zu~l10uto^RY?^OJd!GOBdw+Q(gM24g0e6Pw$SWeW?q@<(x8zi{D*yr*h=d%;)si> zrt^b_gmgKvGB|jy{PwuL;&MFG!JGD=K;HewW744k+^jlylOL(7_JE zbFir1b>0fVJ70nv!0lyMB1cW*1i;v1{;&4t03UGDu1Z|dY+K33jb;3Wh~w8#{MG`P z5BDl$z4_)EufG}NR!$Q5Is1zbL0ra+jO`YSaJWe0|HyM|Wp*gdCyY2dLb8a>;uWqq zSj|^D$16lqxFkAG9HS1A!-d*$*J)1rr~CfCORE^#DK-w91D};_!O*)+I^@rP{4*92 z8}P+I0HoV=Y;c=FJj%V?lwl>N?T%IX+xM6F$9I?Vj>p-ZKKGRle|2B!kXOTv>@+ek z+xQrqR(vc;b{09Ba=#VHsq6n_Z+%5f+3oC5B^oZUf8AF){3-tM?Qgm( z{Pc<@Q(D!PNDoH2gHpLEnE!>9H##BF9KHv}MT_;?Og*1+dp}k>y!!cVP~p0FE16dmg|hZ3s)Eq}LDHgHG3>5YFCW~P^a4zH>4w{mj#{O%bet-UN z>k|tA(hrNO>6yUvT>@ybJ50;)(HFa_P-VIHr1YGA<^mSo7jIaRqCyf)dX~Dl{+feB z3`eE^>bg8A!{1YXs1*brBLP$I%&WwG5#tz|#yT}bQaBZ&)x#nPxWPe-d?zdv@>-kY z<#bo^Z@n}sBOryrU3)HMfJE8`4R+;HO9;DlQY@#`5G=S~aaR?M1T3>&G`?!^k^H*$ zHQ2LI9z|rSii94mb9xuUI#Z|lEQr!c!w(vC5u0ZT)kQ0g4$P%kW#%LnO}i*8*(TLu zN|wZ0;KfBMv53g_g{`2u5NeMsEAe(n0{^P4UCLPT2`dg_YKw$o~ zj74|V2#x0dReZQ!JFp9buEfd$rygLskmh_9 zu>-B#ig8~OUwi(u{se&XHj3o)CVY`RF6@g#ADAx(L8xrZo&+m9 zV9B!NDmvoLZNlO8H`m^WK-8p!yoyOtOp4TaUI%+vxnJlfSgd1Kf`h02XFS4TG(|{C zQhwV4t2oP6DjK{HU_JZi#16q3q-)AA|EV8JgxWIQKA!WseI!o&KLQ)2dwHCF@3ZgK zPk!{phU#{fjD$MVAbmd}9WHSDL~OwxUY1yz9J>DF`=>l69Y|OB*HpQEe|3MR!>bR+ z10{*x8_(wn0Mvxir{?xYcIXzAMP~k{#ezq3=l>e~Z%70StVj`LI{O@U`1ajb`Q__B zK>18pln)iPTjJLnp67tYRAAZl34$!&kqE`$~tJ=^s}9 zn|wXyQ_X_1MSfI8VEk{Yu&ExGZet8Pj%W38U>m`@Tw%6giIAw9Fpfh=CCRmRwUOqE zVMfM|V8;KYUvP@S|6$|z@QG*;dF(0a_5Vd;Sz5Pqq(Id<4RU~FX`qMiJSvnc_Blz2 zx6lV5Ciy z2k{XiiehKsWgfP2cai+IJXAPxe1JSsGFwBrHJ<#-DH%m?L-(#c4+MH_7Gc?2r9P55 zoRJ^H+D^A{5J6Xne_bvZxk_P`b}BYepNqY^)k_XYrWJW!f~PHp(yQehaEN!HuSa74z6w63V|(BRF$haOj$ zz~Y1{+7o&~RP`^OpvKrg(4%lv)3pr?obFx^vpZ@k(>2PgZW1?WmvfG6#C<23i z@c(-8R^(H<*-v3?t2hwS7eZOapzj?!`;5EY35MpVS0AC$hwg-h;3zuj&X9K2+j-%R>Ek$6C;1{y&uNsKlmIXl(gOeP&mCor{M*67A9Cnb}b&9 z7p<@d+j`OgmfAyb<$oN%UQz$k%MbAs5BT5URajvdRdPthDRNyn)~z{?NZ6s2@HNH> z9L01eR`=M%AWgg8%Uz`|?-LGx`u2A<&gzv)nGY6)ADv#9al*OEYadW$F^TMsQ!|ms zqa`yK<(Nq<-LiClrcM0d)z5E}4$lZr%?D94WQ4GHvA&P3npJ%GEY890U-{ErC;kB zc3>tQf5Ev-{Rq<)gKU)%CvZ~tZM-l!6!<>2YenGQG9IVE(>&<9PMYWdrM9tBa<> zkqYpl3zIdB^*D^pLS_%vvphzTy{YvLjb1eR_ePs&Ea^P4EeIuShJ8d+Di=)CJ#dDO z=;33kl}A!`Skh?{qGa0vm=@Wwt98CwacEPNhj-FyV7+4usv`)eyh_j575QqnZ z3L}Rq4LCLa8&gd)Cs02P-7z5KcKwnF z=3-+0GSqN0eL{fF9ATLNw-&UjPRBG^qxOPeX+Ym5E6Em*Ub35az*^B#YRBlp&B3hd z96o1xQCj^bGp;DH06CP_tyF^P#IRg+V2we8VWXCIc=O-Rf3%p+|1~=!-VyS)=D=%b z{BH@$Jj~(Tacbs^ZfuK~am5 zyYKJ2ukG}J0z;ItvZ&3HV>vMjeI7%J+Mc|-wH(}*mK(W51f?EXe{bYi(#^pzb;!9= z;TWI-jRr>4Tzy<8ANQb@?cyE)n(Qucj|U90sB;Z1;}QD2w~ zA7$+;}JC{q+7`!W0ES?3J6=_5S#z(7c=gM-X|Tt z|LSM4elj@C8<}1+4a?>%Uyd%92j-xUSHE5nrCFgaPq zpmHjdpWOoU8U2|l&-_m<2jhgstAy8xU9Wt=|K$Q(NZAU9u;uoMZ1Zf(WSm?lYs&Ue zv^=^-0JYaE9$@_1pPNzAk>J$7j*KRpQbsO|LZ>bxD`9*4`75`9#VO>O?&z%A>XbA& z=vbe4K%iDfgh0jDlqQ49LO!69`XI9^o7d63w0|Hff`Z78@E65|pwUaiP6tRjBWlTK zQCahzncvv02<9r&l;nEF6e8FsLr6Uzl;Qw8!31SYfLc{ zK0_#&S9l}^V1*Q1sm+i;HCV3j5L9HWfm)vmb_G!4L?5fDWSWD@K6K6GbINmBjK_+L0*z8Zs~w!@q7wL)0sIH`8sPk-;kdqRo1UflFm$ z>A8?H+_r9|Fq%r=jxJ~S!du&}_KKLHCXX@U(;C44ZunR zZsvdcx?lq-iP%q&Q7Lp8jL@3yEi-kSIBD;Z{~SSd_lC_eg31lGR}z-f#^Ly++%7j4 zFt76^4Q_JwZFud$fL%GjyOSA;Zb!%chX?-iw;3PW)@A(fmFsOluqGWY(N{kE*RdH~ zij=ha6a-#@LyA9x$B65Qa4#t>Gh*1M-!k;!Fj44XY;WcrtXSP7bP)O4X)t%`70)JriH1kVl@ zJC&0TKmNgw=W14QOPCpA9MSK^y8J9GVhVi0Vw^mYHf68`zfU;aS35*m$gBnN;{V&% z`=rBPy*wrzAnd@~jwgDy0G_6dW7Rg&`zZeh2|}cD!leisK?$h=zNO*|oX@&_@PFIt zPp^M}{7DWCZmV&E_O}5Q<2M|~E*h(K97?yfy?O#m8H!v+!}vv&UZr$~ObrNc4l zkR6%UY{W*2MJ+wTa=?`UAnC4boS?MA?NYHIrZ7uKM$=nF4rLsuHtdR4?HMZ0gpZr>Xm49lQ1 z<;@Hq4Gf$!Nwa&La2heQQW4e6o6^n*B1IbWuOkkkWK6ZZlUxuFP0}1am{Hlx_}o7+qO9bZ zP_Fx~F{##l9YjDG;Hb04=)mI8)kaQbY)T2{HUP+AprUTT=t*IMbPhAYIx&$`ggXT_ zKchH_ng0UXU^`T1Rq?3(83M79_FfL6i8acqAbt$Y3!L+) zpN`@VnR-Uvv{(h)WD&Y}Ve^$iMfYlkVJGF=V2CbOZ&%)KpZ@msG3l_XE>%IJ z@_9NY9j^Il+MML*VCZxF!cd4L0|f+vg;>%4O*`9lXJjY8(2|i`_hj}kdmr(y%AP`3 zy{|V9;S@e_WXZm@qRA{JL{T+Zy2>rld(tEtJ+*s#tkDB}H15Ib09JEf30G*ppsdxS z2^HLhStw$Rk!LuK1?N%~^_~m&XF9xp8>bh48k4tttig^RLb>as$rjm1lOl}95!ZKF zu88ceG>&7_!^dQ=sIj0X(ryRIeF6lxUkHk$>n8|mD_CqEwNwEd$6)Dto>w$1JEzyl z-B<5g$&+CzBWu`DGBD}z`3Ny1lbN%F|Euw#CtFqX(0-sLal*`F4oMh0*ZTF_%YCIo zQq)eR{>tDzCLLbAKQIR3`M^h$FHEDfFx_9|7}I(1Kjs3&|Fb**{t$DrajUv^UV#J? z4MJ(YZJP$m%8rlx^35OO{zvp!IHOfSj$UXJMxkxO#@LLHlNDC?bMh~Q3nL!WlK*+W zjQfKmQ;#d$8D8TFqZN0EY8@xGW`aPBGp?!!{-HeYvu%LzkyqYtb(n=gPc_C8Bkh<-?JR+)0UYvNm0B^U5TO_EyVI|(Vw`py&c>MHE|DsC*7b`!>;q0+VWV%lgQ-~gWm5kw>npb1bw zGYeS+q$``rD@`nbR0t7N{MC9oWvW@ka)ZQOiA&}f<6qMx@_IftH#!BMVQ8W^#} z@Rr3jz5@@fG7KA~m6r(}A4LSMF`H5KFwY*i-uK&qM=$#=`H?BOND+JI2*SkRx^OJ2 z^D^g}u`g@jeXZ)Oi7S7%uen^GnU%q6b>2v&Ram!*)+ifyKu_-pSY`!f;cJ$RpP zs69ksl_oyLC=0m2KR_T>vu*b7)*7T@NU?gLf*rRs@wj8!*6C;EXdvU|2s7welJ$+a z+I~gOL5kLU8Z*xMpX7g=I31F&x06lSE8a+W6Xn6J*OmHT-7e(*r*AXf*Aj*SjJ6v; zpWPb$pI=_%rH7YSSrr5v=6|v7L4{q04a6J5OhJv*T31GPNupE!Q_nf?HasvcA?5q) z>*3S1+wOCWrwWpV)53KhY>gEJ5$-FAPFn$%GdL(XE&(&a<~(FQz$%p)e3T$lLt%vdCRC4 z6m@fWsvvmD4_>ZQ=RxZ!#QXM&9~%!Vw@Qcl#9~PoxrEkt07`IAI%66NS)6qV^XqrF zNr$&j5k8>Em~!U-p7y@69B^jjK_W&fj2sde#B;+Y^494+ z8CSaKUg3|`S)1>Z4)>J~m&+3k+m2a682{Jq14s4>)Rw|laB*QZ*7~O#EAb&s7Wv4d z!u5(rc^}*lc{XlX@@D7sM*$X|+4|jOQ9V7%i1PO|tjRF4@91&NaDajL<#_{gaG3pAtzQk8w7h(J?u_MO(3>t{wo=WirtcEEcPB@kuaD! z!xAJO*)gz+sB*MVLVma(ma$|tG$3N-$OgK0lCB0BW2>_0lZijxpX<6~vwiWLUYk3v za|_9I71nXy((z?w|B5e0DI+FF{u2*N9@;aY2dGg~9pl>Ft?L1|70SP`Bxmkd#DicR zy--i%|FULmaNWyA;}rXQH3ySyypQcmJZwu>Vr$bz%R3kF`B#lOU*8)1|GiDEHi(Jc z0KZqa>gTUt-6kEN%ak*zI%W>q5yxx&2Kv&$lQOnZX`D3h5K3d?fK43!Qo3AV0y{YhLB~~e(qD=1VQ5h)T zYJJD;7Sc0E{yHq2F(Az^2=f%i@W3F2O#aUYxOZehO}mtLN^umv)isfRF=X*Se0IhW zG?K%1dvesKx+jXq%Wcx(`#*}$zxU%P)FBbM55_OECS<40Nl_2@pKycptx2IiP(;gj z{r~aZCI0(+J=4LJiQq--_~O|${^I4;4?yZ1vjfn%(?6}_{X;yilcXucx8qUnHEmfH z*@E1kvgoW~m;^%sugak#k%6ga<9zkz_s7ITrz?5WoU$;a@Dr{hc82aX%Hc}HGHwwP zj`fP6)tcd_uVPAG6?m2};(O1(Xyl}!R#q7Q$KZdj|3g<8Ozw^wKCfX_{|b1cTstQ8 zzFPqRDH+012f|R>;7XOYa)(1y*pwFbdCwnv)utn*bpG#Fd}U`q^&bAn%vW`X35P-f zy}XFzA#G$MPYX?e$O&35PDD7)M0g=}G_{IWu~={OQ`%vgMJg&TO_^KMkhv~^ZT@hBq{~Wa}Mjw${d-`}# zPq76eLBdEu#U69x50upxge;tKYO7 z^<0v!WGxw>8yGPdOg0!)<7!m|YN3Jpg8ekECK8~x;++#=X|Y^(g67WgC#x6;Em8MlTM-Oa z3rzMX`8rN(EoF~TZ9=#y!h*64u?OI7YuP~=r(9N)pHvc-ZP;)~?Xf3A+1!pBH~nyS zxwTNINXZzm%|bu6RDg~?*%19pD^-3QMNI931h9Ud>#|7zERiI{2@+U_i*$~6+OXt| z^B_BE!1Wc1qCw=A%a-Q&M#fV1kApQ)n{vizyQKkxP^cx>y2TBBFq&Z$_`Svk$(SRf z+U$vUkVT7NSwX)gj8S2evBw5WFCJd7Xb+CWNUR+DvrMss?ilFR62SsS5LHT+PRK*R z3-e1*3QFwPZ{KJBw>OP55w^g2TIZ9S2)9Xx`sA`a=41#j4`iR-olO2ORcu)9orW*4_8;J%3I~eeedh9 z@3&VNQrnL(RNu~!J-LxuV9}w2!4Ph3U>Ke)KJ2uPQv~=OO!8&%Vf_M)7EK+b_u;D# z?8L&o-s`;sD3OL5J5YOedf&hJF}l?Jre@sQ-^I285w5SzIl={POkh z>+3gv%n01(;~KX(sr=8}9NoGjUpiunw+3;wl&x||r_UA>B?iEVF2B^vr%&U1FTMcG z5z(FhB~^ySIjCO!M2O!xSzC~*XFf8Wd&8P;nmI#4g+HvKYygn#Mv!V22Eoo0_r5vd z6{w#Xhzq`vh;rYEFAlfEZ%Yz(VJO65hUp6zUtn4cykK|R-V))L9x_j@SfPi5+b@;F z$Yo=@F07)IU2#`53)B^>@6(kYC0SA^f-6iW6A`-FUP|6{LVf%VrW)A(I_eqDhm$?$pL%h$v zPd2QT4lVAL9!y3#ksW0kuUIvLuJT3T6c`kb3c~fkjw&0CYJw$Hj3E)cp2`rsMSQ4t z^}gPBdmJzZ9v*2$Z1DR7p;%P&)(C>W!oJ&(ziNGtk*jPKLF_pFvD~+T5hoiAx!h(} zvNgKsmn;%flgBSWbaci(g0`%@*p`mqTKii{>J%HJcl z@3l^=0r`kQtT;&nx$+0j9&z~j4}KKi`|P{zYo>^^JAot=oD(8oQ4x0siwda3V&^c& zYD;-{387C6hW~r>!MI5I77)OrdLol3IN`|>B#=S(@ z{NM3hrXPs>aJ?6esbT=9Kv=&kR9H7ftyc42-~3B_`|eMaf$JOY!&)U6)tW;()+M2L7~qBrWd03 z{6a%kWACQG`+@`8pfERF2-L=t|1BkJEB?u1oI`!wH=RMmISeMRzM8dVc1mhq*EOt_0;78KUOcyCJiXAixSqc%YnCaYvFS3D< zN7+6X)RuyDJYJ1qw3$K6x|iT?OX~JKY{$7C2NhhIPkeIpfd@j$9N5L8)62sMgP&CE zeZJB?U@Qy{s^}hKs+*ZYSW0AOx>YO~fLo8jm(`NZ#yC&}Zxfk$a+u`8B0$F$n<%9m zty^vue41$Okq|W!8jCK40M&+wR0=5@v2v*#*9BfFS$05aIJR4~?2=^55E;0%7m8dI z*=t411wY}2d^%G^$5siSIt34GHk1^Ap1=qI$**a_#^>o2Y2S+E&VM8+St;WqY!)(? ztk%33@R3Ac0qsR>ctI_Fk~B6ui7|3e1*ZThLx2t*Xjcr7FxePaX(r=`wGt7$DgI}z z1XRilH}qjuYtI(YGeUmz?lw5MPdd~V38@LZdoQnU2mj3{w@HUfB+;>808&gU-&YI) z4{S<<&+l=YGH(IZ$-SzoiIJR8wewf+HmYd5YZ(9L{g-9FjLqvavT32ds-J!)z_71w zlD`^jaHc`>I&&?V27XnIrTZHI>~jwN%!4+0^a$0mZiV6COB-abS_qS90qi@ME|5_p zlZL6D*bW;9Mtu9H+oZ$wnm*X+tFRmYkGY^u!)S;5*sX8*C?ab#hsyF9vD-#@NA5yI zDF9c{9Q~CI;JG@ZkVCd&0j6DVSRoRuM~^Q)8DQRsISG+IIcP)u&QrZw z>LRahlMeaa`$~rh_1D18(O>NbjNxM%(2l}CP4ONAXZ}~`@o&8ZpfyA=Hsiz{CQ(Cx zz;U?rM}Q;f^4y(?R5D!)gubNjuytj3CpaNkNF6k4({=#2_?MU)Z7rz@jM z#&5M2jYIhwIyV@t(;+>J46vu45H2dCO@xezo6vB#{S#I0Ki9ir)Mi8^*(79)Q?^vq z4v6Ij)Bp^!v)@I9aM@_u$nz%6wXQ1X21RF%`Y_ZCNqr<)-#v_ZCB;*?3kt$>LVgIS33r>(omE3W97VufyELR-d&Qe9i`z%lv|SX#_U{W=@F;$r}SOodSf z4vf>OetL(MEDn`!%Xy&`#@nMz1$ftcErSc>Eg1 zB@UjCX`#hILnojD@ISjc)q8N67hFLCE39H`yv8p`MAp#F`2RlX@ay+a3gw*qpPl2! zq(eVQ(g-GDDhE~MJY;eHZz5I=QwTMhctp0l^X>EJQt?neeR4f)z9BRj(B*{(-k1zH5JV^Tz`$X0bAJgi zaSwLtSQ^&s*-&+i>iNqL9%jw|t@?UyLeWYQ6eyLUF(h>C6Kb}64Y4^ED0cg|_n-gf z;Ac$GwR~&kK*EN-Q~izyP8#A2r2`OIrIl4ng9`$O-aA#3;&JG#&APj}u+XO@?RavC;wgY=FvF zi?gHAYce0v5|z>-wfixBfl5~CXU3#{u|`%g?CUwKf>BCO~n%-#hNMk zTqCDt2j(6HtAv#9V^9Kfr=hLB&z zM+{OGd;nTAXVMO#0?fi=OX)=LlH|oX0n?#ygsak?SN3k{mF95^F6=hq_gO07j;}{RCPd!@)@_MEbE_p^-k`d?16EYHomIh3R_clTGAXO03p5zl?*%1We<;D}S=TET+pR$a&^}4Fg8UIGvQOX>sd}So@EaS=EDc zEB8WKu>ld2u8w<^6V()3wyP+s(K=;w)4`qpE3BA}FUxR}>p_h<4Y2V)a^lV}g>!FT|Kt0({mVgvBmUahx5B{?nXCDk6jf;J}B|tD(O2fKPguJ_c9#?-t7iH24YV7M@Iq249;+0o@ zwRxydQ)V24g9z8V4b(U1opQVlz_YL9G}2-P0Lgb@q*EJ z1lCI0(17)*gVJq+Bfj{}ZIWL*NrEi@5YMX{P(=>TMv(c4WJk#wh{{@?ZTUm%QaabHyI_NW53ASF~|p`3AlmUIxJ%-eh_uw();4_qYnukt~(5)MYb9Lr(B=c&YtmDA^M*ga3ocYlYC@ z3Tra;EG4U$@^SsYfd}&rW8Xe^7|{5?Z>gx$5|-k?AI=iFl?UA>4FkgkbVX*#J5s4^ z-z*9p!93BJM%Mi#Cn$65QCAsJ;fRE9tSbPBA8Eu942(M4U>*=IyW&j+AtXnw*!yb? z7#BJaom*Up)`dvgGjE3`qn@9c8gdel>@D%E)e3>@H443jLFp&>_{ zi?EYp(tea7fX;HTW1{o1B2?7-2r-G03i{|Y>X|+!o`Kup=NpoR1rp9fKWRJ#Bc8E3 zGi_4K6Z006I&2X2BcvM}CnU?f0@BlDJ0c`?i2?sPWprZcKN==>Qnj z-3a5^Od_HBXM;`W#y0EF4C;eXQ-Vi^_}{$fEzn54$pFZo-y7BCUhkBq0A2de>{)iE(5?r85j9 zs;P7jJ?j1wynpxh#hP@O!j?hH@$$Ww&vpN|j-yePA#EaNq*8G3e;>-eu1exwRR{!H zQgj^!TmeD&q;#_P*hh@&f3>m1zq@O>g@A^0fm3M($! zU&jAQ`Ou>B{?gA=!dRe9t>m#>T>03*LjF&4MaxNE0`1r>msK-vJ8Xte!}GtR$VxE` zGcs*86>TJIUfBCM212jmwQGj-@l=upi@@D-CFPU0)Z?sFhb%_@g%k-DD235LvVxfn zd$Yr?IxMy3vP`yCpC`H}VJ+6%oiC_n(uQ0Uh`N#7!Ztf3;sIFaoK%q}85?IeF7tw{ zjHBy6&^1Xa96aIFrGZTpHejRS~nGr6B2njr|Nj3a(t*;=SQo=l9{` z)5`w}<>j!owCH+-bQGZha41kHm&IVRpRoLg0H$7Ni^(Vc-_TRo4f%=%C6fUtU@2+>gCaI{f4NOH9#bhTVnu=yvpdrNgVFi8}Mk@Ok6^}qZi`5tR6*?^Y-&3l(jBtrmiaU>!=}XHDcE*3h<1gC^6Admbqhon_W0!n z_-4p-qTu^k_52+5#c_Lu4sL6L85c|ySD99FupcYXPC9N&$Ok<304ja%wnr4YU1q7! zgRtUxoOf1hg;frvkXm806;;>7$ffJ3HLzN?qOvWugKhZgh1e`OQPZla;P05W3ShK} zES5Ys&bh?*zw^C#^XiS6^3gl-KWe(#WE&-=5q;BDs><$YwfY}%_;l0Y@7}(Q&#wl< zIr$&N`TbYdzP+ONhvtZ)9;suW5{5`%JCcKhOkEpw5Jzh_>VG|hMzNrOR`0>?8JzmQ zK#J$f5h~RK&}QQ$5$ipv5VXdI^ib zjC9}p&g*ZPF97nJ0Gy(T8OLRRJGl%zcJ5@{uud#hvM}cLx~))C1#em_}+=Yc{N4|O?lnQ6ECJ6&qafvU zknJoj_Mq~M@FFJSgtNhuJ5a;j2oYl-{cgszR|fZxsfOlhwLUdL;0T9<-4+LrAwQe! z&56Yh6AUZ-qWdw}+S348bGtvxyHL>mr@|y54=9& zf11%{D8gDOiwK+z?Lhv_(OsPaN3mIS63x+h2A!Q<$_t@5mTN%JAAMN2S11m1Q)$Wa zwcGf*S30!R9atCWA#=5Linzd1FoqpWp@IVLiPOyUp)VIwvrNF zgYXANW{<@z93gQGCh?066;?EZO)78;1i{JZhgZLSUpW4IUEAGz8-n0j(@Tsh-iv?- z%*l8d%$O8Q8R@jX@MobVa_aEt^?rNBXV<(w-}ho-1?BHrXb^k;%d#Ym8n-2MFeO6> zgSd6?0i}|WTL~Uww?C+>?av2ZTV-h` z>73*DX-jLo8^~Bz|7V2_kFK}iy-zwkUEkfAu}DcUG0D2e8ad_yCMbt;LSqFkxIg+X zMJO({8~@i#mX5p^`KCU4`8x^$D^OZL6ejR{j(S*=Gn!!NMSZX*kwu!7f~s>diGc$; z=9q?MWBN$OL%)RCSn(QZ{O<=s1`d)eY|8n+pB^9QEw}w>lkM=R;ICA4R7HNt>{1(M z<=x=`{R{iUeE4Yg-Tyh>>~bEC$1VDWo1J^@CJ0(Rf6M zbs7Pv%Wz$(95{kd#`>Y0%JfSW4Anh=$ZwaNC^96+b*J^6&&Vpd!wuzm6J;oy=XLF( zBnEQGsDPT$fu#v0F+?wf#GsrA<&kr+#g`eTIk%*fa!mV>&uzjn+44{Kl@9L)_hbwT zTie%e71CdSRQ0mgj~$|42N@KtgLv<#VD`Icf-_Q2GI@ZTsoNsjR>Eo^N~#sN;%(1o zAAUXwIDDL~+ZTigX8E_MWrE5xG@9*Ys?o z_!(C5ac-#!WiN(UF0Zk}m}M%g2XWd; zf6G+T%)RrAz<$gxF3l_zk4Ee^j(a<47uwc52xB8dOV2wDtA^*5_-Peh;bI96RZTYR zc5D}oMbVe}SVl=2-f6LR1^fC3^nCH+5}$tO`}yXzt#k^9ekXCNSP)SOD zrFK@*1O;jS>AA2KTpg#x=w3CGDhL|>i>ABYX6M$V!-q$*O+2u?DJE3LDaSIDr^`L? zLf0YL6M{9+BezbwlE^nNzP>`B;uHW0U|?S$3n0BPy?|RPVF2{xbN8b2e?2NbBEo*! z`_aa@_0K^Yt_v{I-;x6PUZzidNhcu2RNLw&&nWICvc=YA6OLd~)@s>*%6l*T{9o`% z;U(IGm-Aot-&*=(18 zHw#@a-kIR7CS?*9phJR_WaCMuN*)gm+>4JM4zDF~VclW2yQhP2ZHPqAq9rNgfZrp5J;~V@@ zk=ZkJ}an=!}y?#7GU^P0R4DsS|AR3qox1~yf?Ym06s=e zV)i~k1z^yFzaP=p2SoE+0UM4rGEzpSuY zOfEvnG2)_P7WK-*U`LFe>ie5-uaU<#UuLR69WxhlI$hSbMtj}2>M0D$<=wOKnE zJ~_*ioPT2Qe`A<&A{*Jb;L+9)WEHA6b`d>n4hy$Aa!21p(5XV zN4+z{3Vb}z9^WR?Yvkwl`lpi4v7ukx2Q@lFvlY|V{IxOXw zAy&|T+RwWl69crOV*UO4wYQGJRDr_f9VKBXfZ0(qUXGC+U(}_J+cR!gwsW{+x+O_t zp+TRP52Yrp4liYd?qRv>ez{!Y4}R|t;?>Jn8@qWjr??92=^fV`?j7~Nc$=+y{onY^ z`oFu0clSw$w=eS@=agy$CCj|5)kp#gFT`o_%hROdm!@i_*VzLubWAwl}iVgMn%5HmrwkA6fIs4qA z4IHOY;x-T{acd7Y*_0|Oh*{^bM+pY=0#Mjrh5Tipl3_(-`S5_rX-Ms`3K^07u=a34 z8E`!~Ifjrqach(+jP`nHAYbF@|AKb7o9n{iN&x#^v7BI+o)y+#WlF@-mO z-Y=^jcWGF?L2qb%h6OWp*~%fYi!TN z%pZRUcY4J+MB|&cvE~n7J+J(~Ys?ROP3VL^n)}U3<5|m&+rb%ac z8vmCJWb)~~@}RmN)TCAI7OG(G==m7;$%gNJ=X>$;#jA-KEkFT_JB3gSM$oQ|tFl0^ z8d!U(|C=uobcJT_w^jT-Zm;0cW%L1b%J@&OukpzX&R2w=lJxOBv*sb8`riP=ptAY2 zW?qo@`AjU;$YnUt_y$-5HZxDqDAg=jIy7St&)28?x6l7qJl7LMXAVd3Le28A)&CuC zt!G*OBW5(|n4I@9aN?G;hRL4PSf|yS7hfZ?W}KX$rBAsHi3%12&O)tywG?b!^@z4g zuesGRLm96l;d8lO(O_C=g1!18eGxI*Ayhj&gK2wT`FEGrnoV|36f??c$IB{s%b z;3Iw)9dC&_tJ!VEEC@||*A~Bt8Y7`f8gsOT5W^T@m?ku83j@+MNNv%JSYU*(f{epr zOIl9A3{&^`g(ihr%Cf^AM5b(Zh+PSxV<2`njukcifG-M5am>7~2>T9G+n#4gCjK|?T&@fz&X0BXg?p;Wp6$3xr@S>;#wqsQ@4=^0au z^I9ix4zE&%%ME-xrWhMX6tLWg!0k!ARTMu3N~PFyo0WdyFpsx;c-}S4*epR(nfq7Q zYu4M_q(fYxLd2RY#K4FvGSq}$%_l4f4%c}V3hiAcdjN!SRh9ohN!pdvqg2iqzoMb} z0*eQJ8~%pXd#0g_rNN^)ieyl*HY>t)G$^P7t8H7AS1(@IG3oH~ zC0rR{nLj5rAXrk!K0Z~$z;+CkW&Pp+0PXcM}2jm9KSnerXZ&F_@| z>G~ml{`rq@ulL{fxb`zeR{5T(l}$0a+E$AP;tObdTx7jrDIkWiX^LxARH9uF&e75} zU*>C1MTTQRhjJMzjJ{W^Hc5z5rq4D04~zq2-xhY&boPVIS@YlHf3G6%5;0$8y47QC z`EHwIY|858hfACcm=`Go-q5$Y0<-hm=(!THRDAmU(5WRQ}_p6oxTDuh1C+? zLjytV!d0$VX zWn7P|PhdXj({NuI_vI?9L%Ue!iiPACw5>gE%EQT=l_huB@1D>L7O887$Fe9?_e?HVGgIPPSDk?2Yl;Z0tgr!~Y#lL6pk@}tkqsfIGE!DF#E6Iiu8&Mb{!j9MvDCw< zgv!$0Y8EE3g$2a{i&lAPPdy-N0pvK$&eY&2IN<}G>S`;)kOkf3KinoA{`CnGFJTOn zD8qMdW0_;p;eN!$xW|gp9PY8H=A!Dy5qS3GUKb26jVx)a7n~iT#$jSP`Lhqdh>YDhPrH+QuyB{oEBpll&um`Ew5_D|)H7-TkxT z%A8Y{Q_h#;w)QUgYlaYwzxo8Un^W4H<(FbDWtS?~=le4qZb$ORK~So!6$Hnw>pHgV z`p@;s1A_zXQM^MR?rUF;&ompZ*0#;*w-P}Fr zaEWqB#$T^hd!FCLzbdf9+~fkS*lpBXNbvf_tN8vW-_KVsUr{zrrh)&{s6GsEG63W_ zKEkT62;y^!|CbQ3%hY4tUa?j>P@Uu4qhsV$`<3Z35g_dUg1wCE~fz3v>Og1^z~D zD(EWW6r=}e+^c{KuNd?xD5=h=&&ijR1g7vQWB^|R;F!i>Kr60E6;-1ZF>pUqP!kH6 ziGd6p%4DbnsEE0=2YA>o#cagC6`F$H*H2H@ix{A!eiiaAPGUN-?E!hQ} z@#s>i<{6PzWCY`+6Co2*;VmemMVPGsf&^x@Oz(w8<%|V}Wst&Ruk(q;Pda{$@v-QE zGErc}c;4r8++MtG0=a+)P5Mvz;hy*o?v~0@A`Q@3?NAWvST(H}HZRr?hNew3FD%l; z0uUF!6M=bjvf5MwX+i32I1j|FMl04d5GvD;ZKaKoHGYAd!Bp_NFlL_9GKdJq-be|b zfEi5yv*$LMMuXffIU@v8BmcXRSw4l9*$BV3Ufc5F$l&rZsSev+Re-rmbtK}hS$0-C z?19r6D^&Tzn*(TB3u$LI{FUOU?X?U1?`*m0>bTT$h38E+4Jh0hTFE@O(F4Fc4MrXb zW+FF`Mf${PVV;ztju7!YI$F1%E-q=o(<(#xpIedwfK!QFCUp+`rO!tu@dybzlDhV* zKOIX@LW8DadiOML*8&Ac^Uo+xY*k?b~z<<*e%Fj%nU7ovP!##Q)Yz*c@cu%DZ2_`^ioJ=ax^)(c3n)xo+F~ zqSyqloIZtkYfyj8p>=MIA}qt-!(M$mfVI=1m_6ZfSMidZ{6I_@zU4apc)9lcWZ?NH z&0J;t|7Ev2xYglzE?#mqb_6|Czv-QCKY!++i3Z2~3V((Z69H)h)HDg8R}KE}+Yh{s zSd?ZMTaofqD#i(pefGNDLCD!6)`Cebo+#I`=X680l-<@*8&1w~k7U3-`srQN1tUZp zUsh4%NSUs0Y=sDL!TA5>ORjV{4rBcfVyc*Q+B8&O!vCcam7xk=^OXM{_V;hz-p18` z-zy!+Sy5+>zis!G4&QiD6Ej*!&!!b-;{Ozk7?#p4G@<1TKMy$wc>*%j0A7K+_hHb* z|JQ{nHKlh0-Oc*^{62pE+xs&eo|FSg6EgoBwlhaAZaLgA5}jMsAZc#auRBEYT@yO> zxa6xKlD1G2^-}IjLxA8=5q`lr%g_(_zfe<;roMDT{AK1idcSSL#obEA;>n$aI4q3M zt7cI;bmTuzh1!nI9K)g9l)IRK356c?C_O9oo4%ryW2D^v2H%&Pb{Zmbt8u2w`=czK zYB;q;Y{It1(J&KnmNR3nIV5b)&tc7gtdBZn&ue$Y?ZglC&K0D+LgaExbz z0Q0N|bp?2pdX9)muFRcS56`O}$SU^W?qTk6n?*`;7SznZp|ot6USudGFz71kP+LNV z{JEg&;*;T&t)VBk#H`suuviwJ6(SP-Sus(p#%hx9iA(XF_1?UsC7QOC0nIQLbXEZ` zHDsE05cnJM1OB%RpjR)*Z4>3vcCa|lF%Y*)K&?YTbOCLR9eFmrSPFKnvx zc?@L|n>qo)=!ITAkdx2CD#H|HF3i!p4Doea2ih_##kvI~_r6=7{*YYk2Ho&X2KoH< z;gS<>+TK(j04^J~lbjUr8uSkX@_xbg?PvF;3>RB6$rT#ZslAu3(8VguRg?K-&|OS} zlCYwav6EPN;FY=kB8A;z68fpj;!k_7qb|gZQC{7zbWqX8(vkmdjDlTHuSe^g^S4v+ z^M#cLaj+clNe{KumAk|DZXYm-9hLy0no|50k7`w?dQ}3mIN@j$mtNR zSi&h6)kxUYz*W3~f#9~FEPN$#5L<|%g)q$fvmEl@jt5CT1>J6^tye;Z>lo3i8b(J6 zyPJ_~pYxyj9~&kkGy$UWl6TW2#t;5|AH7aA(2&==vytx{H)&s4yE`w}shJA$|H3qp zWw4U^clf`9a9ed_-9XJMb`!A&VBgY4`d?PEIJ~$ScZDk4j_nE{G*O>rr`a>dE2f>o z8;9u(Ea8I8jhaXTa?`0q7M}$hZ{c zV&GW49$6s-Q4dyOMol$jz09d|Wf=bz`N+}2E@ldSdzFV~a&fp@Y2|_;aP>XwWu5YH z1n|Wpo?^7ISOK>-L?dxd%X&wvZ)1Hv>=M;vRnK4*kdwL1ZwAjs2<&Qd%f zdzWvNV(F5Y=BUQQ3>108-erOVKFb+C(xPDnUkTsDO)N2S3Z_2EQjxBFA;~R~Gk(L1^K(c5C$gRnSI+jqbK?es} zQ8jFa2?<)x;)h*Ag_hloatO987_$IGY$18MGmPOwp%t9)9{kgGH0Wb&*#lu$)B?Yn z;mwweyAY8i;vpmXXmDm`c?{!Uag@MSLfQF*f50FqM(oD&=M$wlwe@d(@3$$D|Cyzx z0@h^^2^jynqSKY+lBV`zp?BR6=_LpM^)~77+iPNuBVh-_uH&0eUse6l>r$K(3#m|f zz87}2FEhd~PoP+9J-qOnS=nM~#T9EZ^-Se%+ZWHjjo-ZgnO9|`UfPFt%MEYtyDstv z{+k7-bAmk2%pLILXs|3WJmOc`D>Rry5=1SruigY~!P^#BJ|JF~U9V+s>;bxCKc%7)BwX9Ci8L%awLq5>;xd3AT4xu67f5obwoUbY?k z*%b(jiY~8Ki2GII^?9AATS451g?;ySuUGISzs%s}V&DwIX}-d?%u%1nl79Ct=)Z_? z?(DoUyuRq78|N%y$p8A~%lzJVz8^1dlMcZ22E%YL>Uy?84)GwScV0m9cj-4Lc?6fL z2NsDP@9&ci|J&P3J+*c@z_u`18!v9JfAy88{3@RsGB=j*Bdz#d7{%mvp3ZNDDQk@L z)O?pELH@rUndB4BsZ#$nhx<=wt{BZCE-k4xIKs*xum9~i zF#W6&@c)>oE63)JH3P1v=l6zH`GEiXRGN(h?tjBdopb#^=zqg?k6=2>Pu_b7)&HqP zw`3sylPC0|K<2?P&8Cm_v;58@a4!DI5p6jzFlZ1H4q48Qbp}K;3Uamb6!8PFqeer# znpFK|xQQVki`57pD>R8D)c^xFvin3r#o#mc*HOYTP^5|t%S1m7M{2g5&KxF!u3ULa zY+^cFi6titfpJ_|*oX*nO(d}BmmbRM)@1}MfHb!mH2x8&M~;}cn2JpY?&5pezmKWw zbp&y1(IA}x&|hGm5uTgr6Io@#LYAf2TET(CI0+Jg0yhkphjhD83?qY3$v8tQAxsa9 zGRzmqOp2nj5Ylm?k>n9+CU%sTaYtm^TZBML;s$_nbo;Wz&IiS^aKKMRpmvc?QBs4a z)afO=5FE;eBjL9791#w*IZMpb&k3K2P#fM(SN~k)Qq<%1aTfqoVN_HI5 zm9~b>+YxYEH%Tz0) zQpUK%-W>TpI_Cp-!a8I;I(VB9OW$6?L7olTG+Qp4m?;|L%eH}NsqhyzjD=3W96;N#JB^^7dA)*~gi_tbOiz2iKH z$;^r&Z-w0wXC{gW&k;-lGiOn_AG!puA(zKXu#ku(NC!hC!V|IKnuRC6xCLLmMFP?tZUL=;a7u!YY>3DorBG-VLHe#0q1xf z_g}5Z&p!OpU4~5Vyv%iLfOkpHY9Kj5G?i7?&|vuf_i9=+747qj|>>>Bhx zgrY=FY`Zz&mM+^B-i&bm57Gfkl(`~l$W}dZ$OU0B!adJOv-^?Z&E{=@mu)l1J?5BU z8c;9RwFlJLuHnGI|e z+b~0KiF6rhnVBelkdvR^w75Uh;i)7LJFZUWTWc?FfB*8$Q+@R!2<_6JYQr!wjhUlP zm(g;Rc&A7xCaE;MD$zsuh+b2Ui(|65`Ty`vk?%nVOs4ei?^77pr}*U;|6+R=7}e=o z#QF~Ju!3{JLmDPlUpxek__-dm(SpG)7X7IhC^`V=gtS6SNf#GFl%-`L7$W5d?`=wS zRvF9@R-o=4WDoYe#wEEpv$iJLbZq?p?`J-6y?=j|2h!!kdF-ass%nG9DkdIv+PPJT0e;B-n{%{QGB(9#6qSno zQG7AstggXfVZpr-T@3eNMl~OhPUBw_*rRH-0jzL=w?bJ>cxfBaBuWL2un_*ZPdbNv zWV#v%wd$#HK)>Bjw$$Ju(Tt#QKL(HRcW82yjp)n~;EFxrF5w3eHmqld#tAZ2uUQZ4 zz%DjwmJg9u*ll|I`8%$QJg)6D7Lsx0Y?8zAIj^CXJeC#$F~@FAWIn7Mav327C+^J2 zU=Yup4pQdWthZDcs{mYTDoxX#?RK(xxP{6{}cH|yY zq?^6bI)6?UWR-SM)hG#N%^8ExLv~8D&NiGQ^jC~Ql#HNg&I?!0q$lVe8W^M(gFpZ= zr!r*z! zn)NKxzjBKZa`38SVnV=?U@KfNDTeAtqG`3jOHO$=MqzJes8wBkf_j{~cid`7|| z7_E{3_J@gO4A67EfQ$R>6)*D-Klxt1xV$hOC|O2TY$Zq`V`;CNVS*}Yi)dwVNJgH} z+kFAdebV7MlBc2diekRLx?QFJt2a;aQ8M?^$5d(MKKnHUNFF+h(k|cFA}2&2l^d|N z(9~*9_E+8qk-u5e_=yZVa|D-&SH<))z+&SuJvI4B_8B| z#)s?Ma2>E+k{6~SPNv3{r{n3?78GBjEDp41$*~SSWqa*SThxyEALUKtJ^;X60^-Zt zvdIJT|16Y)#EEmS0O=X;**ZiRh}EdG`70F?Ibzlp$DgaNN_8Q7Of~?D#DkO}w^3dn zl^ejALOH)6S6Zfno9yg0faW-@oQ}tg&XWBqt4%lv>l1m9@KDmFg2Y7gHM))PNtjN& zJ&-V&!m+>fk<-{coT$LfaD$CiK~S!j7GHT!O##Wwh=&f>H8FuwcNTvfc3FaB701{Y z=qAERh@f!_ELLFM0T3fy2=Wu|ajLMfSZ;#}j6G7LyRa@=kYgqm&0c3Xbu@=|(gfLq zao1swAD=CRMPTS2$Om!C0u0DO0uzTQd3w8E<*BNxmodENXW9h!Z4GVA$<;y$mU73# zX3(i^ta&kyMrfR)pR^HD#st1$a~2cJ8L%5reoD`pplpJHtwM`3(TmW~``CX*Sov)9 zTX72AAl!O^*tuGH0{syW@|Ce- z#x%SPfc4IC8X>Da$iZ1Rhz;yurGg;~-iN)Za9i7;L6~)K{%WK92oLFUETLc#=S=nf z+e>MU9Vhy|z|{m$5z2pSPa?Z>dK!>)Co*A^Z>%C zdm6%^a_yIZx%j_rUCVEozkK(v`T5gty1ne%3?$`dvEF~2ZK+EqnS0HrKU=jf)tBk=5OXg-2)O50F`@yk8dYGBWNIR@Nl=jxLM#Y z-+YMI>71xS#T0e{T6sKV9~lu=)=-C%E~_ngjO9GbEPkCzYC{Y^#|*i zG6SCb!D<0nt8I{xC;kt-kHNzhL&5y)K7{H1j4s)|l*gFgUlVuey<;dahUM65Y3DP$ z#~VHia2>B_bO93^^?(oKXp(zH)gD-9)H>{VN+)ii`oqM@N;_ffGwbjAjoj~xR8 zMD5sUCds*P9X)t6R?#5|aS+Gk3f>1J(Om4AlGzIMqn!YTKzYB*#Y({BF+(tSqS>*7 z+%#Ldp09qdlw-+e!BPY~3I!i}39Z)}Vaua@>>q~BqdI4BN{7fTQp{ zrVlKKa9+{K^4zjjZbS`hE(tE_(k7L#JTSdrx{A}?L*4;Q9ts1tftZ^^y~d#kVUeW) z-BDZIg=?qp0`b17J3gHP40g2>Qi+q$yO8W#{-4q=Ayt~pHBuINqbStX;s}vJpBoa#juB4401V+&Q;X=&_?RSU-xs>=(##@Xnb?WHTQUTRE+y=45 z7g3SfLt*L8u4%2R;%|w&%aKPH=j<9eQ8s@UF!FMVEx* zeSZ3?@{iwO$vomUCWaZR`(R}Nvd zLh?{%L5>AT!P-~FJx-uaa3*?r{&2f`dz*ApZD)eAfTVvzPVjQH=I`J!TN0VP1nRJF9Xo#lgqE8!qK-(jn?t>EIgDM~a(m0WA&) z&4rIVW1N#VBe7cPIiBME^)2jT-D(cFp9{wxL%ih*Glpi$#i&OFduWRO@TE&MPp66T zKWk2W965ka3kdM<@c%N4u9MpEr7Nk#ioNxJv2n>*J1 z6mk;#5omxH8*-j*j3HIje!Z-*>9PdlB%l;;MK$}Z_&*%BifHjOLO=Z0WInZ z=07Xr$dUhHwlqetD|o2-!hcS}sbiaJv{^-@UELCUt$+b}HIP%2*_^x8lORaY&9_P8#04%bpZZGev z8lL0lZ-0E7OnIAWR}N=XEvks%<6qWq+3R3Dq?FHVfGuNR?;mCD-@mwwx+b!|9PLf< zexsB`$R01aHj;hC)|UMz=q)16dIqrK8xekWs&aELBh@{lr~AdAij9c=y6qke4qXBGkUg-_(J|G$3yt=Df}v04cq*~B?&GgNWg@k^h;;MeLvl_xUE0QmCSe>s4I z5e+Ms0z8JIIpd=oU|HbbuRur?p&tJ}=8M*iY*rGj0j(f4jOOa89oc`B5JIw$+>vJK zv}y+yq}lQu>_K2qL~z-=7!}En!PiC{Vd*q+2)(D`xeU`1g_nrK60K${)xe$+d)mxM zOUl#IA~d2K>2DQ$mZK;c%cc~HARGRkg@_8i5Du7xpfa!N&>`m^2gf^*bfK8zi$0r( z63C%8XX)$+b6{;yVjeMpNr!Hkme+Jj8>quDD|TXT?OuHEG?ma0{t%vWbYLL|kZ-LF z0J^$LV`!OkQzPgQ+s}^ErB177lUHkXx`(p{K*yO(@C+eXzrU7)+vcte^EREsLR>5R zap8EVK=_&n!@S;dXXP9{Rv;C!V|kn1nCdf~7eJldI*6_kP|UYH2nVmfmW@@(2Tfda zHWf;30)$iXfLNZQRSqkD1!Y~J_hbX)tlD}#>9>FG)Q~78)5uh-*^0h>XABl=7hf;c0pefKI|_MZp>CJUq0@Ep^>}%9cx-%!qj4v)u1C| zQtSr?Dv;E1iKK^Noc{v@&@>T8V+CyEh=*zI{#D0Zv9~52vfh^6Z+~@<3q%&-POk(o;-OxhWeAZpVnEBn z?WDemnNqn_Sf*)oqJ|6^VpKW|Bxrpjd6tqt2dAueO4+7idG zw{;`Uv~NZ|n)Z^+G8rzs1nU_U4F;|HD7TxkCxr;Zbt9QeoA|Ufiuc-CH66 zPl2J&7Pe6}3zwqv{m>=1NOeTg(m#RI=}X|lvuiKU&|1Jrsf*m^urLfcBq@psu7amn zcnzfjBl)`y*DI5ceV9R73w*bV2bA1{?Lr=QHd|L_{7K;ksIt54FC54d+LV8xO>sxx zOwfgHNQPE3SY*+YgE>c2;%Q_GP!+{>DHGx3`Hvu4r+(z99MZo(~ z&QJmOpRsc|#uGXemO`&Bopd5iQ;aVF$ndAzwfy8#xfvV~DNK>N#Ztgj&dlAbBnahY z5ZwdgHmfQ48fMza7`fB-#d~Ruv4ke-Oj(cP^(>ZFu^NYnO?Y)QQM7BhI|9c^F=Oz0 z>)NKZ=TS3;q^`-?R~j+l3rtPKp!Zivet@gi@f*s0IAE=8xWp)qtEN~nuqtAT zFv1lye(VdO%AA(+bA3D$gJy9^_D4i&b}x zVOuKJ{2vq^`o|PysTyvrMT-$IM|f>wIc7MP6zGU)k!s^9?C7GIf42!I_R~CyJLDb9 zn#b5gDop|_9o|(A{_mjlTQBp^-dyXG7j(lAi1B3kPy6x%`VZ#(UWi7V^B+fQ3P+h_ zX?(oD)RGD>+!$?D9!HrS4~(Zb*$o<2ZszJ(fV^{@cw^kf^XDcnWPnK zSwWpS0v(K74x$I8d>}%~-W@LZQI>64e+NTZ<1<~RT}tDlF4OH<3$}^@|DN98CLZ3^ zaNOKr`iH zZ&I0dZ6d&+dO(+fG?I1N6;t7Vo60fz?UmyYO43D zo+D=NuE+D6GeKs8OTQf~Jj3-BT^FR&Xub*ZsT3>DMHpzCusZv9Zn9ng^DE4 zr}Y(4ZYbZrwgFiCHiw2fDeaBNML_?Wan@186voN{3Jwn{4>E}ggKvMfRwS4RX>101-5L^1}=Tq}JYpO@HV@dajVtLCyMe2!*=E6gJTVQr!lZ^IgJo=Hd}M#PFLFj0 z7_q{G+40v>#oOTvY(9I`fDsFk(lXXvN>s1C1LcMcfhs4EkxfCVLU6k$-1r|gOY-DU z^KA}G(%BE?6$je;$dP?E$tLEY#Vz}D1JC5q_@1(d8Mkw@^=J45v3m%7|MuL2+keTY+f}~6&l0u?mu6!gg*{lVTM+ki1;&;R>n1ZPMYs(qS4&VOk^q z%i=dVQBY0%vpAt^tyNxc;Bw@4gXp58B$-7FVb%W`#{bfDHR6N34c=DQH46=d0arF) z**j?%s;JCED*8l2dibOnF@i3felCl%`}U2meKWrM@pq9L;2Z=3^S{R;1&qMw^m1o) z-h;}j+{QvD{;$T|w*39wPo7`IKRvxj+Ae0?VY^Q{{MDPMdefBK?qg1MvQydOZktyQ zPY2(B-&c;F2ULyvrO6Mf)7sXJx2;6|?$ZviF`ZKKv$s_4X&q>uiTx zURST)?=VyH4h->J;csZ>+vnfJ?Vpis@zR)Za!4CqqH*Be(=Ovs9|zbu+!9qx^55vs z7lSwddmZG0m5A9zNc*?F14*oLc^dzBhiU1r{4YfRWBwn`PqRgDm#27QtirsXeCy-* z%OCzQ{%?Q&XYuXZd$U~(v>kwof@#HelD3j^8JbC)5XIGIM;FRU`Cyf3NK~P60+SVV zcsK4vDE4D~nK`AB0qtND>j-e3&1259Pm37FJ&paI-J6^c=-;@

UbHUcP=&uZ{xCS_Z8#%RvgdGe*cH(t`<{7B#f=q~G?j>{Au?XoPiWMa*CVzM8Sh zhEhfv`}A9=sB&mzFuy3M@bnR-t?s?4?nH))Efu)gzHt0ngaJ=9XsaSN#Pg^~JJb<8 zX0KG=wn%lA~SX8XDfW7LEVb`ZBp> zOgDSxC@vf+{)s?*Hwj0C6$S@KR@}jVVBMu1+NLS?pRBcjN@b_@e(m2ZEX=A$?m-G_ zEyvR-$J4Z4lA@i2S;E0lAmwykO*v3Xr)=nXPYG#vrBQh``wvD&X>Xr~%PLqf6(V`` zksJP_*KTo zDmG^SDkr?c^@C)CblK9kn=z%Uo8!Vn#~Bmnm1^)9KQk9Iw4g&aE46x`1Zim559Uop5JD&n#gh}B#m<_X9y*jC*R7HB^&#~OU1Lk)!s+hdtivumrgv( z_V;!8^VdJhzzxkd0&E-Jetrn#K8JuJ>pP&M2>TMg!B++Io?L* z#ZGH8tjDPzQ!MIJrlYwtUEcBzA|_EJ*+|AHG~&V0aWI01I+`y+DJl34C&m66K!KHN z10v~vi!}_6`aS72;)RGa=4PAFJ1uB(D$Kh!lPPU_DXnxxQNmoDyM3A&kE$dMD<&F{_)jP3(<62|CpP|NCr~+q*=$Mp_ZAh5F>so+ zU3rg+ix|ligXxo+iT|mp=ZzRSj2S^V0FCEJ@8Nk3qk^<9&CIGd`rXUA8mF)yXQ){R z0pX>}HZ-#rs3tYAFWOll9IU=~{D=dCt5D?{hW{K<<8{O!lOEUc!$`?t zPVJ8u2cQM=QFoLVvg{LEoaGjHN&C$;MWf`S%3NRPx12A zbDV7tA?!anfQY+GAntT_#qfXY(RVo@vXLYbPtdQEF}<5KMsQ5Gj$4HqKfU^!6%IBh zHq%M6wQ7>aES*MU2zbX1FEO_ZU2ymmm)|IB6@R}zo%>C2PqrJJROW^B(y+6SGz%ea zEp*BNQcfpW=RsMLJRQy!L8)uHJvP}&-RR@^T%~thrL;7YyR!m;U4z7+E%E@)GTh^x zNKDILZ8XCUZ3|PXhzSfzcHAHMSIvl8IiM}X&0&K;)&et7u|wYr1{3A>K_&=t zVa^!s7M#3$5_94o3B!+TQyUab-r#ebSP%Hg_+&{(_&*Xxjp#4?yuG@dSpcSyJ#wLU z$`ThPv|`0$KhvbzF%yu0{Vh&RtYx8g{IZ#f%GhjP4exbXdSLx{R(Lnq@EXoCxT?bK zY}Zx9bd1@-Fuu;>v+@LapU~{j?WC?BXWI6ei|HjH-K4A&MmHqXXN!v<$w0MiG_Sh{9`R|a*^w@DIy@s3n?#WoF@(ZvB!9s^PP}J;TOpt zp`Kn>Jmb&{Msr02KDMK5U+Gk?5etP{k zv{hEvbhcZYp}@jK@}BoxLq*(3;I;>sCr?W8XM2Q~MbjAUD7F$6QHU^%A8X4~kT}EF z5z3%mO*OKI$0e{FUKs z;6G*3;9YEttqzj*+GX7ZH}UTrEzki8csF(YXqc6%8x4Q^$&26L1V|&sb%30N3YLW3s zARdQ)FT_8_i?~B@4APcw%nT8BDO&7dvaKu-?iy}YB_JwTA=&AlFL%2$KnB+HAsial z_i88S<4neWi4kyIIuC>eU>B01B9`)vdNDTm+vdZy3sYBbmPLgf^XHFEeWsxNTO+%n$IBKh2GJ zrjVSFi8UF8@rLsSifED^<}w;&B1Yi932S3L#|UOsLPaI}&WQ%SqPB-rNoFDu9nU^d@|sv2-Ch^l!Ti3W9GpxaAs zG?e&V!SPx`r0DRR2cWukw!?~fEcixJVqt{yf*gFpe^(6mUgkH*H!=zia$qH2n91q> z686sif9<)JKfJg~L;o2&yNsTz3bed(qsXIeZ^em3tuX9L@JK#**to6uJRvl*J`YEw zNV4(Nn*kvnhsag#1tk4y zcnNPynKPNUUFxzJj9`f~CH6^OStxcY223nDgdNE%2|Y`&&lap?hT{cg6e0zjP98T~ zgfbDP+Jx$~NrXTkUDoVIc;ZLCipb#*B#V*ZcE9$V};@^ql^DV~4Ef1fD)OK}J-l%ojVV~<+*vPZI4o_rqRGuw^=c2}-&Se;`X zO#F}3ApFP38=+JYs}Ju!+x zVd+E&{=&C0L9|pE71wNmghBc|!$Z;C<$ljrp5t@CHy<};B2%jH-JEzD8P0n}HZi2(ZS}G(3nIdf= zQE3Jp`V6bGCT#;W_;=v4gG`W;K?5YJJGN3MojFc9U6G#LM zFJqr!@4-_`FZ9H+Y-IYdASg=);ik(@A>~15&u?s0u8YzI3Sf!Zcup_oSMopMXMg2* z6A)X_)@E=N< zGT=lj1_04;Puzt}M(EciN(GMV+r8Jx4WbbO5$RaKUL7JO7IH``??Cc(o&|R&iBNL0^OR82IA%q%kqG_# z-NWpa*iYHN0<0;}KrAL|$XA`nn$bh?gOrj%8qF{+!S|{djA>+7o-%v%*LdwD5NGm{ z+GD)ic7id*A6ic$y;7#7ricRAwg?Gv-0Yu%b*hQ+Ttu2NY(#{HRxGLsqK574I8F>+ z!h@hTn~bwuUgFZ9gXQ#<6utP;4Gh){GmB@rioj31$+zL|=cv24Ui};haM-H6eMJkx zw#Ybb7RUfoU(^wFBX^_%yj)C}CHIJFw!i?CH!EAesuOuq$_-SCT%W-g{c4 zLQ#Xmm6II*HD;Qu1yf79c|%7t6?}BdCc}dE)qeRd=Zu4aM6QT3+cMZmF+#y4@+EGxQ#f2&AYEO ztDE&(2FClc>5Eq{>Q-dEu2*Ar(W5WBO05`|oXnJY*E7s!a!-*4?Zuq2$Ax*dff(OB z|Dy14QII5JI_+?Jp+kw2EoHn*dld_=uwpVarUDOizl8-Sc6qeeH1khK@**NwWRjQr zvQLVD7)4WwoCYiEZ*Ie*9QGyE%S3EgZIu~9Dg^>KEn_;Wee{!9$mxCeyYL^A6vSB( zs@>(e-dUF9baL217Fygw5489RM^<>Ulo7`|tc0+)%Ssn3dQ|wQ`;B&}&Hj)f*2Sl! zYcUe!0bvM5e6H7(_;&*D{)Vq~_xUCSw{$=;8Td^uEbe(K@Gn$^#a)=ZF8#Xe#95qi zJn_#@g;pa*{s8`$_U*lPAs^Q%g z$EXCwwQ)`uL-gs6f3bT6Nr-l$#B~?{+bbRR+;-=1_&hW`%I9P1o~|0>4{Y_(3$ zNP|lfTFFwuETkrG{aoxMDOh!$xr!JJ5#(TWqc8o=5-D0qR|*ke$=vMT*(&+P6vzbt zci|o)2>gbJe#`WZQmJRbgiPQAK|O_+JbqUBh%ep zw;8P4nylB?7vzK!%XZQ?TOYePC|INusHm*a^WS?+mqCS0hgH!ekN{RdslT59xP5w6 zFOIcW25!1Q$)YyDNeLW|oZI#ziv;a$i8n84QPd|;#^X%*6ZKhoEO)BsCkKVwW3aAYG267zU;fT%jhjm4TV*?87eRk`DakU`jjlw zDv`7}Y5q&@Dy5^)V2Opm)`##f0*DwS!?j1{eVVG}q;35mYQl3&h0o$4#5i<32sJ}? zkxoVmG<6vV2S}TjXR5ZCUq{gwY^TbF9QZfYNspPC;{?M$**LR{z7m!jBp~akD67CH z{yRZM4r_%G!N5Okub?3e4FB8|VU^SIcEOC2^gBmOU?|b}7Z;d|_`bMUYr_xUN=V1}Tb3>)7z#9>F@Q=-)ZSq9I$Q{HTEW+1W zgo*!dJyEF1sF{ZUE_BjVNQeNeAl_0OOJ9w&Ox%@>A@d|{62l@3sOAK-Z$FA?9a<;s zEin1}+33B~t{Ksac`zb$i6b zU%!9<_T=_yAsCK9?-*~fW8SgoX?Ple>*5(G$GH_mLCvT@-{A>TA-mWmn+den31>#< znk6;qMxYGy^c3xore{a_(?Ug7&9?m(VlH!q?h-Gz{pK8hm@ZB|@x=6Iu)^IqfcA-q zG4r$%Z`aT3b0nV)c`B~dPJhy9mH~kpzqD;b71b0^Y=4(;Ga`r0vMn?DZOUL);D*fH zl5BZ@W!bpDD;S|gSKJeKM?elz#QD^LYu?K7`~2ne{P5|Y9tx`01X8$m>8f*`Q?T$X zJ19jn7zSy$($39}z=irP^RK-)>#JuU$11Ky9HEbtc5TOGGbORj{IY2|j9MffBT&(x zC%9DE`~rlH4YBgRi<0p z5EG)iJM3)mN4qos`(qD1Yu_5JvY&Z!5^e-c*QX(4uYuy@m^|%b;zmFpa zn*Bx*EPP3V5|uB>0e39W*M@|KNGl3a7s-RGb5Q6?N!mUZh8-G^+_;ymdyF8GyyGM3 zM!Em!cF4+Jtq>OnGyZGvkAVO^4g5#1#X^RFh(-WLW=+~P+zSdbnN$FbzB2@G4+R*l zLpgG0Xb{p| z8TVe@S6a1{tV5a~0B(+EAy{ zDrLsx=ltf`=k?>uzfq12pvklQM2j~*3#Ds-oEE=rx#$ipwud5=nv2p~;TR3U2sNH2 zeVkMLguk{8q(25J$u41Q^})Xe;3Fn;W1jMpo6Ae&L-jQnh5N%}C@Q(`ML@NXZ_VVezcvKh$q?XUW3l#CgVlTE{aZ5ldS+ zHJn_VL=TX_Cu&(rsf7&54CPqAdH~iaPr`BSy(W!*Lj1~Qe-)EHo8^HT-ee+kjy=Tc2u; z6&O|ns^xIzml9=GD#geKe^dzi9A9Tq_!c5r!QUmbUesD z@$BWZ_~_}MZ!=jIJ)vl<*&GAe^id^-eo`1srsQT|+C9r2sdd}=^|Mdw+ZUgYxNuRL z&v+RkJ@Cb|v4ssqMIjG!W4Iv9$5_k4PGPK4`5rybkWLL5u6H9HCc1LefWF6zm}7x> z`wSn`?GSSWw#2|sC>afu(}7iH9V>7M9zt8lGMx;uNkcr9p*h(n~Pc z{Kh5Z@W#Ivy9loh|AzoO{w>U;Qdqc$U`sSmoGn4an@VJ(q}-xV;lyICLUfH22L9C$ zsNTd(=Coe(MY+R#YzToCheK<}OX;6eJD-oVqQp$y14ZhzatkrNjfi9NVIlWzPT#G@ zV{N0mmBqpdstnH#5tNe=EQYsJX1YigD&~~Nf0EU++m4i5&$-2bQsJbe>LeWhwg<5s z20FB~+G@htDGBl8btWID6rwV8nUksxHHm-ul1nHylVgtU2#Fra5nNsSgb$lsNad>) zSLqRHBywQ|&k;>n4vMYf>hD{5OWn<=Y5xTsOtx1?PCQg*9o?ujgcKO-o-UO>%LlDlSW+P^crL1&|F%=h%CD5bPH}ewg1q|7siH0idbA zn{jINt06%5V*G`aixCsN#O$YKSE%5o!DWqRs-_3`Y;Zuq7!Gk|>KL!VJ7I-_q0Dky zL8MBJR1Dc=S%uJTLiGx^Xc*B7?h^-W>#16-q=nOQ>mW`k|KW9#=#tOFI&+WTxVs_4 zsA4rl5*#?pVr$mjwyvz3YL(0M>Nd+l zGH9Tc2MgyA|1r%I(^jpEI*^si>-PO69lVd^!KsgNXMG(ol3m7Fl@hcSXpOe460q$Y z-fcbczl!Pz6?EdE?gTT0Ib2_~DC61ipTpnl#7p)d+XmEaNV>HLR^(d8@&GM)x5_9C zR8VFmvlkFtWAnz_XnXxLpH$3zLj3a>jwxWr{w^o9o@EjtZ91-dBfiA&eeo_`?)Tv0 zu+QwDBRf=>g6ojP-^915E&n%k(&U)<$Ht&=*|UIjr3A)4-`4T2FW%R}e}KDUYK2}e z%u*GWD8RBhdd14cC8|=ahglGc4uZ3oNhNR|}Y9@*HO&HOP&g34G4T?!1U%dV)KKcHC#*Z(* zGe42x({*MMFFHxamdh8ZRr!=Ju~OIKhDNS)KNvIA{1dv=BEDZHO{xd*;|4O>@Qxp$ zF;2)fPBI{L@Ufk(v%g>m{y954)Zhl+f*cfJp|T+5B18)<2`$?NlPmyX7furPZ>F9S zM>ur*E2`DSn8@-)s|)`r(}EGiyZ;OPlLnA}-6mE^_4jVW@PBv0kIE&Bq$?TxT2}Z2 z@S~zY<}S3C(4@A&sad(s(vb=zj@5axWESY7Y5=_Bf7K!uf=m$0@B{y*I&?{7M4cpl zQd~$fJGgClF?;KhR+Z!5P9s09V9S1rK*!%&0DnoQH>BCun_tx@N2WY>I#q>MH1SdLsNU=b#gPc=>_@1dy#;q8Q2lxJ1s6&~Md z^mcn)XLzNX;^^kWXqRa_J>4Eg`ssHc$7kPuRIjctqVX9tw2c^`MVF~~RKswb7k%A7 znDXJ0qMd}yE4+mXqjIlMPdZ;KuaI&&SaFD@D@+4#`kD$+ z%p^!Oc86TM8g(1nr(L?yYh%-G8pD9SiGpRaWOM5dX$z-i0{{KsKAvs(N3&F{+}9KT z#{Mp&#aTjU@&ZaZ9L|bXnjY8=F@^U42=+0pm-lb@x3!>hrO{08_}8=f;!ens#~S}D zX=t@L@Ex~aWW^dV!TkDPk5J>xyK6R{yH znJmq&n@ww4-`b0T%DHoW$8Ek5mgXK`9@npa_S^jB+rO^IkKW?+=Z&CDzd!<^Z$P%n z4#>L4w%daG+amU-&pwaW*H>m2Qkd*OpBW)kAv1cAMa!T|l}$ zk6lRAVVt;*wImhemhX-;7>`zO0d=djRB)9}9xKRkxm?B~ii9txdt(oaH^hTBapTta za03%EnKNei&^Em-Cnf8LQmaHl%rYI1TTt)1L7;Nj(rN=ENINm{zr|cs>FLmgB?jzm zC%R$K+{}bp#rqKcnKX2EpST4bJ%KM5#kD*0&G?rr|7-jssyi!cZi5AB7(1Z{vvq~A zV^Oda&AUQ^&!VmCadZ#=qD0#J_PRau(g#aDKH$`xyK58QUr6pZzj^jfNZWah5$!9j^mlO@$TEd zj9>liclGw;cM=mD3V2gL{IW@r{BI52E6~a~qMtzR=QY?2L1YAJ4@ZEwtLX6RXGFY^o;NCpq2{ ziH<-VTfPi{*anAF;^8x1_%B#W{llQz-*jZ zwWYjmx++^EQl5Y z$01*vO!w?K^Fz7YPlvL-@L6{aRYqP?=^CE*THt#{Rosu+u`PtoN*3qgfn^$uBq!TW zyuShevmsM=!~e~4c+hBwyaGa%k@H#U9@WeNTZeS&N$ciRH_I#px=6W0(kd3aiQ$Y0 z^Ji{(E|8l`fJNVTj1MEshbV@MM+ZjaREFAHaS*Xf8tx#P?c}z&$8>j!Sc?;mU}1{E zmnO@T%ai!olV8NU@BA_z^FU`%%E2X1|!9_Amo)v$oJyxVOSF5Tof%KrvG#@W0$1C@w44_`Z(iTl>s%}ZxfGBjp_utK)mMgJnh5H0>) zzVK~cV4N@je8iMVzO^QEray^3a2#_01*EfWuktIL9}vq$EV`CW`y0rf4F|azrD@_*wd@q-6wcDhBNm#3yU{6 z`3?9Feh-KJhMUnR;{Y-A`2W79MHUn<@67ngx5J42Swk^Q*Cv4pLl~H_Z?(FUjP#We z-H>~bjf5P-{IeRWSuC;;jIhDp4u%cru1|lhbCpg=H~#K!mj#B+W_}} zHJxTJSRr|i+ztVL_`zh)j*GJAf5HDY<8(O$- zUU~#zQcp*rIk8_Pc)Q_{XYfPhbuNkbH!5Tj_YN(ha>;> zYP>B$uA~2Uf4|>#-OMV4jOCvKCX*}CP_OenmUO01c*&14Tn@xVNV12DJM%)0zgIR= z%X?p(=DTNWj=624wLOZe`Kr@5EV3dj@aCkI7*fgevF^O|*3F(>%#!zf<@E(7!ADV} zUN2^*Omi)S1Wn*2Wju=5iWGpfLq`Vt*9uat({#B+KI2ER9PLAVQcW_B^?Jw7J0&vl z;Eg)M@S{&&(~&_Fu030wXnuc0ZfT1Z-1UzC|1|+zeq6qx&py9LeH34;1=qI= zg~LAAA0#{l1@cj6UGJb+Xl&tG*EKAC7#%Df zg6EfAW~3+Y^-KQmUf0e28y8Tfsk-7^wEg?uK%TeTcBRd}#*7T~V)I8VMM%zmd!PD$ zPG>YPQ9A5)_tTT`Xfqq1RreGX8k2oa zatY{g^@|Tq?KL5iaU&N=j*$e%w}e|QEoJEW+dB!~XzX?9@qvHX_cu)4x=9h_&*vcP zxJxeI(#t(83ObbUtf)_c(Mz#SQ(b`)s;YLS2R?SBh)AZO$c(YI123d9`H0pigjHnf zI>{mnJI9b&N5&W=o_NuMA1)ysU%yXZ}F^%wF z`(eR3W_+&9EUj(A+1dBmPD@i|42|~&DyTsC2tFMqEbl}$pZe+E4xLXF6JopR(H%}S zgEt&&Vo%!P1XA;-+s9%iotZFB%vK0rDS1DOqQz#F1DD5`Pn7Gz|Lm+6%E_YO+Qsbk zb3hb0@`UtB{G;N|^sNU=+93$~`^12VNAhgjB52@*hwzV;BWfMq8?K5|yuIkeLacY= zQCxB0<5;f@N{cD3sCbhDW|RxZze{IU{zv$w!!D0tI3d}}ZDHOjO#sQoEeIw3c)UNg zjwsMil_9dhk*WB(!fdpbAJY^0e?V>Euw$7<3~Br$H5~x}S@;73?WoE^eV(ogG@_F${LB+3PbP21CCi!T~&V9*x18$>*GUWzgeV=b^pg64I4*7BKf` zmjh+bp)aGUGS3Rbq=X>$X@6uVzB>h>4By^KRCcYEy#};dI||4_3>GNHRSZk$Ufs`h z=)rl5`Ol%r>2TZ#-ojX}@8hlG{caU{@%A>&VsmC1;)Xh$rv_W#VWo^mR_c-T*>iyf zhamEX|B$X-BYbv^wqD`5x)P$Q8xZ4-9Pf#L>>CN%)e`+WIrI#&5~e>($BDiSLU#7+ z=i5GIYW%ZbQ3q8nQTv?M(_l)#!FhOnm53{ftrz^)ibY##qAj-* zHl~hRr+JP4v*F-BG{I{35B#5Z{+#FEPuo$eQW|uwlgqv&A~UR|{)WB8J{5T`5Fib6*M2D1WZ#qk8<92ZJlpntnV zZwOOCosirAr`Z?6x;VA?rIlv$)yJcv%N1uiNAoMasNIq#$Cty)8 zNObg1ObHFAor<&@*}*>x02s~@ETL(1Tnqo#DhoP!?s)jal4JOKlp_95;ShzUY*|iP;5Cw3 zl?pTujy*eIUlN9ZYJ~H%QmI_QHGJ7GaOX|n8}w6NX_e|c7@{{gs4_KE=T62&rYIm8 zB=}DbF9Z+Ig9_cjQDja`J@60vydq9)9KY|sL)lY9BBU)lC3aQl*EEG3FjxR^*;V-G zb0_Av2(#f4nkSleVrneMs?@SQrFe&=8XNuOsHpUZGoV5glWT?W$B&)G*pT%ZZ%;j^OLed6 zuy;o2rH6wj$^)3+WGAB6M|3aIPH%B0iB%E%U!kQ+xTV*UOAJJ!8sXRZ`^8sOE?J*H z-h2v!3O`V%U>hK>jal%TXfrRAs*eF=Fg=`0c3~9(;XDZe)M39*OAn(MJTY4qz;f0it96lQYXWw*7#+*V;nNs*g3ZssdCxM(GnZ^mgv8p)oa+*3>~{F_5FUL=E)#HVZsf%S)hds0f< z_KU9~tS|*-MGfGJO~)276IZM|(!eQ(Y-bdZhddx4I*pcvEz|U0z3n=J82^kmwj#Ax za>XO2_oZ(cpQmCB!mCu5vCnHoH(@Ip)1L_Z{{qm)Y3-<0Sk?Bw3rCJJn>*-vR;rEv z;BpK%EB*k*D`liU87_*Sh-#X<-UJ<;H-ykD2~XuxivW&cO{*_dRAm64Rw@CCpf2RK z(#yxmV-qKR#!sp`zKB7GPSikP%>()iUE0%`48B2({}Jf z%8-tJu?ub;8t5mmiUry3W!}#UP!<#2SAtMKEGJ2lX;<5dU6;wA$##UGK52%49Nyop zb1%swq*AS-3>VivE?iu;4A-@fvT@j|q1DrsF;~Cg+|YW>krHbA4GZV*8C5`QXecbay1FFCO#5u$~LIS9pcn5w4*Bwp|o*CPL73R+mNV_hKnxNay^O4w$pVaL2RkD>byi}K|Y*g=jdt^v&j_$Y$ z{*Ihgzxdf&xJm2jb3A=Z7W680&viVQ_<(3~FVZ_Im)M&ZbpzC$h8q8E-VjAswdr!wT{@4t=s3jbis14zx%Q4UHe84t2Izl2W)8dX> z&d{yy;g$afdH;%$IOwwL?6Xi$N_|>eZ9b=6<>?!)#rcjjMp)m^MO>>dR=)V(uPohP zQ}-Yi@C=MA$YrDt2UMuB$WYg{RGWW|T#Z2(cV+=9Pub$C>}LEc=aF1`$&+K$9zGJ#m<4h`wlY1KAd|BG6R>ml!q z!&zSfw;q#{(@o`2%jY5R30WoJc1md{`BL1<9pqy7!_+dDlj?@_#rkf7$9E(-an!hF?Mf=c>6GrE%t#EB5CrPaN z=Cr8!#No!AD~_P4?}^}c1XB>NarJ1@vI&Z8LNL$tpl&?MWeCkV~Yp=n*+%TT19IMGXc2qFT?cf5bN@XP|PF< zRbH77qN!qPVJi8MD+dad;wrnWT|Ngc)5mRL-vR5`}8cE(2NHup4kw%Q&8u`q=?WK80k^PBO*b~XeUJ+5-uBVp@e_$?l9MZb=hDAXD!Q&F(eb0eG#P( zQujRY9L$X|xl%qN*VTOrvTo*=piJW6j#?E`!fZw4ia`XRK@c>Sd2&!JOR2l5ww2}v zxw!B!CEE~l5~Tg_Q?ATuI{J`oShX6P2*(!?vDq&^6|>#qYh!GOBY3$Y^<=Ae8``5= zl^_-$?i(Hy~bQA{g>f1%k@Lf2ABF*SASPS`WMJ%Y+e$ zfHAnCJL4xXx;F)6NO|(KI`Qm(o6SPgNNBahXzr)ia7stQ zkx+m_4L*|b!nPgTjfB!=uBR7HL@V)+u=7Con`FqlF)5L5Thx^wo*IUNoAj#v9RE*vy@X@Ay0Z`)%OVQTVUG|74?xbbMCt z{aB)A5O+=xSxu^mVA3r|Aw=LOAimT(HoitJN@5iGhV?`uqPKu+pP9bMpLr%v<$%Zb zrN_mP{h%Rj$C?3(VPFHS@VqP{uJwTjX)A~?J6Wpp5V(2}aWDEKk%0LSSKV}4w8Af{ z`$z^wWiLC}xFZuxkcXRG>%lz{lcO6}%r%lQ=CcMm;g||Au1~S@7U}l6|AMA+_f^Smc$|an-kOreBIhX86BLBe=-7a|8l#=ljdwX=C^l%`G*=hCzKJV#AE&Gnc%%R#(qxS~Ih*b9^p zf^p*rRe!)g@DHCb=rQWVS>XSso#P_o;%L_B45;8HsbArNQa|-!nAwWalk|X)Plk$^SlnSYTwTUjvUi(yR8lNtTXjo-c1dzJ|?t;f$F=LEAf!>9LE} zbbsp0^tK5iz4!alw@?FtQ-m1o$>UgIk)d^3mG#+7bca@2nEQ1tSfQ4%y@I&Ax8Q|b z;?^kTFP%270qYeTYfOEv@iPp(4ghf`lZ9pPLCb>&h?VS4e*S(vHQ8DB#?G7{8wA^tlslCUA_Qz{{}5qCo#BFQ7-$!X@wsJv#ua_>d;j}UcjPsxjm;Tm z(AGO1mfrPoT9lgko& zBBXVh(kYxxlE;>CQktGwsLi&!_K>ArDQu(FIa{ZAK^7f8B1#Z%X*erg z7ZJbZ9-Ugd@V)^MTCHj^h|mZ2WeCfXc;`$p#;rJ}X6$~fjFF)CKnqQixSA!!FR{|m zh{8hYYSLW@$I0YXWDTpiXsF9trx@us{siD6V3FU%72z=Qw!0K*2a_OHC);7&E6i1- z9E|Luwj$Z*cj^-P;VfMZx}1QgqLAH_Rz*6M$>LX-i0uWfWGa0UInm#%CbUk=o_Dp> z9r}Uvuv&e`DU65faM^?1bZm6HaZAN19Qv9T9HR`mMhB(X9PttqBkvAR9h`9{ZY%>{ zS-R{gpQKRoz9vVVYWY>j97^D@+ZA{~NPcMgN-a<^S5~n6xqVE;W>q~ZeXJ+Dqb%Ff zLVm$^AkAj^m9uyU88Sb97yg~w$cN`NHRE*is<3+(Xm&nr++kC%g2g{PR;C!hLDF0$ zBvufpCZ7AU@lhovwj{`+<1j_c8o!)+SLUIajx3#}sQyp3a^xe!12^4cjd$Mb$?ejkuVnh`bK<@b!B@4qzvHgz^rZ*5n zw9t$f&<~>6;t!?M4m(xOhN-vW#(fjSE3|QPlyGKiRqd4if%P;c(VXJ1${oXE4 zSor@2{#nCOspj8<6HM)=;>?-&9QOOMXDeO_e9Botkt=b`z~u_=Ol*)@)fQri=st_S z3I`j3)M{)+!Pm4?jH_#yn8P{M30!cHnXR-2mExpnKWRm=0@4l>gs_RfM= zqHHX6Zyp<;Cq}Ya&xcy$O5;w%)7v8C1etQm)3cUGry&&MZrZZe323ufZ8*Enbm@7bhK@d`KL{30dp7Vq%4@Z)q<$_ ztDH{$+x?Hlsr4~WvGgC*y?`AE7pLEcISY!z$>@U@E-l+wE$p8u;Mqt97CE~xPz>F2 z$*(hwERk1h$<7rkHSUD>F-d7e+LGzUOgSQGIVcPWMp?&fQv(M24~w@Bb)h;j+|g?k z#*2>>*iOH~k&CK%V%zC2f@c}-MDZ~_T{gnd2^PlVj_{|EPq$aeVpj#-8T59#z?;{O}`=+mH+8X?_Uq zF*dRKy_LZ2=;Jz4tZ_v3o3FuSt(2jBJvb^&u0ja1=CHRo@#OA#B<7e?yP!Zf3}A}h}vhq z9M3mP$WJ8~I~!VFL{Y$Y%q&v}T!ol0Rkzn?kQ|Z3reg&u{h8$MyBZM=?Z|le0kp6a z4O9J*drYV)f@cc*#h=)jv#8<3@7r?ydQG*;G2~OY;OeY8NHk3LePNhDqIFcrQWvV~ zY?6s)b|PkYm-xcYTtpeTF^V17G{}0#4}?>Vg`Lq+3lRYkOlMYn7nGfF?vQ4NEE^R| zqLAIgA+BjCC7Zfg>H2J8n%pxX(THGuo-YTCq;>|K9YF*o24ST18r)f+ZyCo;Rng3u zTWQ1zb250F=R3w8nRhivV_&ILH;z=XfYuYP`Jh+D#smM7Omcas<-YmT&eFxepM)8O zIi?86titikHd90%LFanC8RZ^VNx5hunkMb*Lwf00@dR<~ru5hdFZ>^v^nxi5%4z}9 z8+15x(}OsC2nxQA&Sg(2kT5PUWLOgaxD#e}9GLl3P)R4T%~oLH{|wX}J&l#q+M*vO zB%=$VXKn66t1{sPY+5$5U_)IQ(Cz{MMU?f#*hLU(?YvD1eLd1xt+y3R#>Vz@;P;7t zWkr}|!&pt`JSJCxJq1KZ1y`2^W2t3Qe1ujP7XA^8?@qEDukchfpZ%tq3j8N^drnnR zyvk_Zw=IF}Lj^|#{#%c{$vmt8r%Ytn^RHt2Yn~7!wAk=l!Rm}%dCNIqQO_7wM(kA_ zv0+=tNYDYakZIoTP*N~VFCrqi$cUaeMg-{^X9sAcl%KJag_wZvR1m6R0>V3$vuel{ zHv`kl5jQ$=pi+q7wbf*ACb{z(mxE|Fc72nIc9Z(MeqTxAhs~P?j2>24T)=u+*oPVsM-; zeYz%OyZ6GilYFckhrU%>++m>_bwYEf`9t4UQbk8W1ZDi`tj%{5UW*S!oE#J;Dn_Ynv?4 z2-?31s2pJ#ZFM@Wv&RSi%e*D=m?seU54WNc|2uY(7PfUF;`BrT;YgE3C$;Dzd93A( z(Q@#QxR5@s!J3Xus1p_yHRV*Yc@0(iKoiW151@i>=?u(cc2IZ*!YX{&PX(YnuB0ss zi?!O(?%unlyncr}qiYF=8HCiwG*}fvMRlNFKdw_4* zD59(=!96I^T2*f$N%^t(dpmf`f{U*^jFpQc^os<82&5`l&qC9NOaSKG*156s`<8KQ z{!9Qkl=5zYbW$W&1!$@8>CfDSM5B+Lbd889G{r@~uv&*3c#WKTfRj=)UQ+hu6Zot% zJ9WI|0kwt=r^uEE{GYmtxtr6Up(>kO<8%BW(Ju4VjXQ@D?L>@cOPV zDT3lU%$W25VdeMd17E02oG`x!jWN7bu%(?^yczf(4hrhp_%G`Hp;2p`PDMyC`fPriCF{IT5E0qDp16 z@xPOMhQ<^)JAUwpKjiVx@#mZJ_9b22h+9_6M@C@Xq9u!U#{j_>|Hi*8{tx^Es0XNS z`~w>M%FRd8s53t9`@FR&QwOnNlfAG`i!6C6tIK(P;|GS9HX_sKe=miLO4QJ4*?|Rf z6ldzALa>vPUmzBP?8{i2uw!J;9{;x9QSP&*d{>0f zK%sbt1qX~^v5%bvWa!Mb42)sa^RX!^$Tt!It3sck*0wWq3T10kRc|pMF!C8Fk!emF zO&g0X( zpRia%r@taPJCa-F>P86AEhe8M93ll5v=LS>Go*I8cymRzSsQyz4B)acf|=rhhLc$A zuP5=M*v%@gPNLSaDR?X9iuJS@9MfH|G+4TmD7P}&Cc2G(K27O1f)|NS>>aNWp*5j) z@c&tmf22Ak7Jrv8G+rl>$~SQa5w-FjfqHeVX7RptZ(vugS(AeQo>BaBV_2lIpYHCDHtyz!TJgt z^!HzDuBTp7tA^R(Pg#ambiElFamS9N`%#5BUT>m;NN@W2vZJrhehJvSQ~` zk*S)H8vUjp;q6LInXITvleiRvsZV)j5m>bnSg1C18X^kEN^g#Sb=-QS4d4}mqVyaV zTVjJSg=t#A1UGQTSYmxH}^D#`Pvl9@|+#OzWX*j{$3xGTEb@`iA7TiQ>h%EU+2 z>&mZHX=_+KMb@bk!c}NK8%B~;#U;ig_l=kbf@bvNhcGP>=M`Yc9P`z55rsURdY#Jm z=~>A?TY&u>I$JF9AGJb=-IsFRvO9w`YQ)p+r{eMh1%1`ItI$~Hzu6tDQxY+*TM`R_ z)WL(JFv%`u2NAxcX{DmTcBywC%)ll$0HG1WX{(>M`F;x-w-Kj8b(ptG74<^Tl~lG+ zHA%NwYKmDKPH?f&W!b3jZUX@vp)vxkzp*m6_-;pI@p4 zbDL;W^2FV)jnoT~EI-4QMFXl`Ilwh@G5$CMf_hZ)a0Mq&Z6F0pV-+r3HR>o;xxk}r z`@7WtD+aKCZ42j!c#?ZZ`P|kqbH%Kji9bj_sSo?z2DSW{dRo-LSvSt?=R;yHZ08m- zc81eT`3$g;XX!hKFxZNHto@URDjJO=rAP0`8h;v0l=qNyEoZ?iQ}IyRkb^`uBo#!J zUCXxp2>X#^6a^5uini`6){p9PepF{vmmb{$@7!6~)~;cOe(Y}YLINq095g<2dlO(3 zaNfWDnmVb^c&ZcLtU<)pV(0q!GeB2WC|DPPXv}uGU0H4XNG4<|&j>w(BUOpVR(!Q= z;a+4B?c5_K)92{98`#+qF$bDNxSu~`mt2XN zuEoW4NP}c&52|V5O>tOX?8FxPjsMJ!_H>~WBnY5fN0cbb-|GTub?x zc1uPNd&W3@Br%qgzuFK7t?;Fr-CtvQeWYG&SK$X6O|nnJ)udLy246wCwTF?y1Rs@}Ywr@bV(jl>6f~R`D-IJEC552g&%zd&ii+T}~by=|iW@Dd+huLKYK& zJdpljAstXTdmUIgd1ZxNdP(@eUCe}oW9!_ELTbiVz8o!*DQdgI74QehUC5b8VMP*i z9Sgj|=CVtRd<95ISBcnXUunzAVB`vb4Cw^K?F{%7gmM0jxSJ0?RpF#p3Kcv|pZeZP z_7#YJXk69J`>h&@sF3O$n+Xn;(rf@mOi-s)6TpO>QI!#(kRFD-xRXWe0xazmLfirc z0mSy?4L)kbfr&^8DP?6rT$9SO%5>fx`dZfm?tO~7Uo_UaB7f){Vgx~p$!Re37Tpsw z%l4bZCjv5xYI%dm5%4NIhgfbOK;g=^0gL_FZ;q1~{OPFLvT*$yDaR4w=l`+8P=Z%@ z%06RfJ4w@&vtJ9UhkZe^? zZzt!Z1tyWOm_9s3uEP*g`RK$Jf|?mg5_|@T{5mrBCBZ&W_DdIRyMD@9n|e=9n%J?7 ziG=G*>M`#Xx^jR@87k#+rtQ$H#$V+jNASLmtIHd;Gk%g7PHYy>49z6!1^*-fL&~N$ z;jYLX9r{yv5+o|%)yMc_^hkP&?@m%!JY6F2bZm!)l$X~stz3mGqXyP`jLHpbyX1(p zx#WR}ZczgZzFu2?)|%r?9W#EV#Zpohtx+eLAgFnb9m+O9EIbg79uJQfllS6;72v`l ztBpf~s~)X|pCnV+VkC&T_LQBIh9U9aQnf5{pP~-{A5q#wL2ihKSTkMM9ulvz&z3M@ zjkDrW6><0rUKYevx$1%!D`O{M0y(^H!E1Czt=y2X2<8h=+FX<{VtV04j4(T5!sA-# z@K)VqmyHp(TBnTj-Fc@bF?YXUbK&mdu{UDx+Q(XsA&M$1I1RY&zA?1M3 zU_poQ6Hp`HBy?0JDe>ZXIm`LKPoK}HKIWz2fJUT>Z73yZD?(9Dl;4)0gP8@g0ubT!s86-dJUcfIkZvt zqXKla(6nI1wHRvt99sm3>!saHz|-dYyYo&vIgTH=Hrq2N4=+~~w+aGm->M~(S-JQy zh(nE9vz^ClP80QzT|r(cXBo^hUx>P4(1{Djs-t@ocMPxF&qoabtN9~}^ViEJYhk7D zgezto%Z0Y`DrZD8{D3%%`ZIype!h%W`LRO`iK6NctM-I5dPy} z(*Zfa&jqucq|*!|lG*b-V})QoVWF~_Vx? zdkBcCx2d}x10We1%zM#g1$)$f%W+kDF-M!vFcd-w_N)fGWH(AWbESKw{Ga`>=@=M_IdRq`EnUwIL0wjog#l zO6t8z*q4-)<>DI^i!m7UGh~NWZoa!e)h{<#&sri>9P>-K&^2Yg1+`ygM@p8m+%~W-yt%R4IonSkS1Q}!X%_gCtY{tXVOfCS?3pk`23NeoLpXRbyxnp(A($6iq@G$AN$wz`;PyDGx-ulK7IXs6W)!LyReVozj)qE zZ}?kPO^`0RIuqZD2yq`+fw0V-pE@at#Mr|#_hfc7FOEZJ9Ag1dMoO;0{|kZI-p@4p zN($SM5B|l-@$74*;Rap`NAbz@9QY5anWE#^6YUR&`B^CpqF-Iv zxmF%p9Zend-yQ-C7_FDQP&R6IyPpZ6xZP!v+P0?Yo>TQoWrA4EOGc0I(rw#2=;~Vf zIh=5wMQT5uaBb-yv!>Z;g#@NTX1@Jn!GJ#(i`A99++`O1z(0!}M(RwX*Y3qZ5#G~Y ziaz5I7L_Y-^!*aUhs6LyUf%H3aMbWs)6r4mS{yDiCH(iAa7`3$xpZF@76=1xGp;o?~SbzmrILW?YlMJ*3 zUoL79SsMFq%iM`uX@HLKCidxM=CtCS)X3h#74ycY9}xekgl1$&)(4t36-dMnmbZ(hIWgK#sjsnc<u!b6;~%m-M5c; zz9J;U!D7tQ$4hOhF&mt(7M|)V08FIC)8$*H7XBxGqrhtu4FnEbN)4|A};9 z#ekc(RKH9m-V)H-&%s)P2RiRQ%<}Ez>m|jKKs4rr*2M50EBmcQXElTS0jTVk)>wx# z>|I>cBbkKFNE^kd-j#+T$oT2}+=JaDyHZ4X26n8Jh?ubFNtC0ett{f5ql*jL=Dg}? z5EF1)Vs=X7;2_+a=7C-0nIfU+g_+IrIoeunt@-;m~tkPLm&!8*3H)YqhJ} z#;1`;SUKUSbT&!(O!~jUJ#Af+;Nu#o7_Kful*Vs~ZXYYdcv1na5Q*oo?n1;WXl;-w zMl>@*BpvgC3V57ZQK9Od#$n@MB1Q3PZuc|9#*Q%VR8&u5Q@<;kyiK#~ad6(T$)+-M z7>^`YlA%;pp7yN!_s#j0yz`F#PzJpgWz)u*bW{`*e*gBf;OZ9K%s(=Q2FfB1i-3+3 zO^yx>$8|emxuV9KN~l6bFqQ&D5X9z8hq}nRqf8E0^-3<{zaRh(vIvDZpA%VQcpXZm zT%<6|-ivVcV9CjkYr!Gl8b;PC8Zy9oIA#PGC&=_OU|B>JW&8o&6MM7zN zw8RLJB3pvHP-f6MxE5))0v4(v>i=CNYzYgn)7AHD_^*mVjJX z3t-_?b4XKR^%Y2!s^b4nt-yeCuyt^J+17n8GA@SHxP1y{X*HG!WS4796YPvUl0_OV zijlf8Da&U>>T!yFh5<2g=aQ!!0B69ey0HrT14ZU%zhI$Jh2Rl*eXdqJAt%c}r+r91!UGDmh7uTz* zsU?co5>YJ}|4`mtX9SjRj<|NN3NFojQU|tBD6_z@fpQ4Ie)=3|MjM}i+BY>ec z%9W=Gv_gl&jVXdKG=^44!#G7dm+c@MnDC<*W5Q+8XA8y3NMGq8j6`CP4_qWDt4-Ug zds$`lNh7oSEG*SHRtbK#vY9yV$*#0otH_!6tkcGp4ikh0F8mL@c+LmXLC*h?H!UH} zPCIlI08^{3CVmzE<8{I7bb8}oG174((K`C#+ldX6M^sT(`uF2I*ihy;yKa@<4^f-he$3usGp#9RhMC|l$3@Lql|{$0$f~p`sCX0 zQQm>bt&j1cr>>VvcK4YD$*fL9faxpBXP%n59|w8%F2^3@Vl?gCd*Z3d)8$wfSHti?~3NQF~BFMc8P$8)p2P=zS zLF3V{ha+J%3jwL`3h0t=N;b|zh!=}SC@HoBlvy6gzO%Q}pOeHoViOOaBLWU{J- z|Hv_s7dvVRE*O-Urq7InsihRRA4y(r?>_gdI|FSBfyph2e;97|Xe${^l^A&-A70!U z_Axg99R0*?e?5IvU8W(^Rv|PggmhByjn|bKg1&PMmJ5|tk;E5BEdGm3Qn5QXm!$Rg zFkEMuF-}x@RDGp#EHIVMGNg^?y(2$N{x8bTfEeu&nTGgxX;Gs0;Ndgw|M|b|QF#$A zW5iC);%ONs`wHH|86UH_d{qwNU3npTuJ#>9Wx0J6cHl1R0(b+7eg=wQENf2K3ys_c7wjdkyAr&Rg4 zFZ*gXat6L-oBE>DH@7jy+V=6=Yh4K4`d(X*5R~Ihbn8OQ?#IQ)jeY+{vzu}sJ;Wpe ze}tkp1!;~}n;iygP%<1ce3NbYcYFDcl9(KaLAVqqNeeHinJrmd!A4X|odn#k_K5m8 zHV6I#{}Y!>8b<@RX-`(TjJ|9;F*e-H{iy#v{-^l35{WSoEacy@m$0LqMu_`*qP zY_-VsB`8Gt`MX)qv|am-t=4 zndAhd^(#BN*~UB~2+r1Zw+2_TVoB*yT%}PS&JgWXVe?*oENJ?O<*fl_s@YqM2Im9} znUSX1mFBkPkfE{U2I=d+aQsL}iCJEb;_7CGjATI)LxL-9Mf=(WnqW;|&GBW-i3Xt8 z5WU5X2%ia4(S5SiCbh!9$lE6O>V}n4F;Srh*=%V>mG|Bws&t{CL1N?A+Ol9zn`^OO zKE48P1Ynykok>-TBaL91iE8`c>?fL6KMKY)$&tg05WS?0NB|SUU;9&BbuW?A6qh7R zebFg=U4_<*26G@*6ludhxZ@-6kAL7l>Yh8iZeMfYpCq4JeXa_(M6rqg$Q8mrbBFk# z!bru%Tq4Al^}z0uafDgeeM6A@ik7_YCj?1k^iUp!wO0yie%lri|z}_Kve%q6jNL^ef4Q(wrSMxf80Fj64&gc zviO1%)W~Mw(OyzEuieE~Q!5+pYpKQ1&(-ou+Dc}3J)+qL;w0ej0&cAO)z_lUmLu-c zTf2sF?&9Y(8+DzekM&uVD>WGZQ3pi)4CznNuO}!c_mvYKmY`44g^OjdP}6KdAwX$% zL`f0q7`&Hd%+E)avxlRyagpMTv267^Pay9*X^1H`JK*Ld?;}Z^4aiE6*s7@6imJ`b z!R6lLaTpFb&Ro^yxem=r)t!*phizyhA1{38RJUxzZVR49+}$a_NiJsq60wr=EeYMh zI4tJQU~JfC?SJVH&Im)J7yeWE8|F#8HWt3@rYHU-5lmu}2KG*W7XEDz4)pm{U4=^rB$hfVyk$XU)Q&&nd<^%VN%kYUTZ}m5EEEsc$@%jxww!MUn7hErv4cAC~ZL6 zxrwu(g3}3oj<97rw8TZW&7n!#HZRx?JP~C|Va}^j=7{)T~M0^KbJ4+A8s3)G=^4S(pG3!y$CvY z7yolt6V=YdJ9Yrl(q{i~+wIWHP_=t$o)7CvkZMNg}duJdMq$u0zrECxv zk`zgX3S`%uR!gLLk%NPXQ08$MJiLRz=*EspeQ+Mig~2G$#o9C&YE?`3OpN7WqKHkK zg&{5iNf7{D=N1N~oe{5!?44VUe}ILJFBhaN43@^t2STr9-?BM|23n1OREFK_L8l?5 zGL|MJry`TGp7j0$|Jr3M{2l!Lj=rGHk(^yT_EVWkS^_^{g(Wq0ioRT#e;8VEyrleH zM&VrQPEWwBp;9GD+#2m5^HYj%HELu>%){PP>q*{Oq75eLd~C+U&tTm;?ht2r9Q74$ zPE%qsYoGi!Q@bMCFZ_#`E5H}ftMZ=CbW0z>)zaDABRt0)!#^XJ0)0xhj0KRJlV+Yq zDth2)Nj2@F3(ZT@Y@JRgU&ur|JYn7oTLvFFa1uj{A0md$lNqFm|1+%cg59L|V;W-e z?s%&)Py?&@Q98igMS_Z-b}mrcinUkD=vu5Yo=!x$dF_kEr^O|mk!fzhI&V(lSa?ye z>?vZ13EjI~kgW%-)FwYpU;LXLTuALboX9#DF8Z5#xLrX~_Wbvvk^UT7@V1 z=nYcgj+H&&8GY0p-IB{OL=_bU#4sPE&?W(d&9+@k7C>-BVHbjcTy6@ocoRnt6XVoDFSlUysM;DKR9jqltELv$1$H*s${MB`ygX~}CV2Cs81h7aF{hC}#@ z&LLo8W%?7hIN7*8v~8Q$dSyX-qhb81bQ!Wf@vk^uEWC1LISDR7dz|zQ{HHREQ+6r6 zjz`5mh~d*)f4_$CD5UU`izgD1J&bo5KP?K-JDx8i#Kp2nV~Bmn^PTVF-z4vq=@=a6 z8K=1LzZ8nzn-VvFAtG@NOS-$b@PC6aTQeB0dUyJ5@m-m+#xm26m3ccJD=2sc-X4TB zQCpf$i^cyuHC2C8ph7JLHH}SHkYJ>8~43Zjac!7OU7Il&Js2e^i$nuuO7dF;^ytjwZb-Yue{QX10_HJWRrBax@N)J3*zy7>chWVF+d%1o^?I6dG3|h`KP z=v8dQW=beimBLjdewEZ>&R>wy7-j97GIg)n4ZJKtJ$J%cLsXnvX>%iNYtsVN?AP>$+C{9v6y41NP_&7AM^bMBM&n;`=4y>vU$9BQizA1%KmB zHpTS{AWcwK43e7ZxlNS|#T6g=#=o)}Dc$&o+}Ata{QHb9gq!u~uOogAy`$4mK}pWV z+HZul!dU+u`6=bD=P7uXHU(EFisooVwwG;KU=H^-T+|cw z;-D}}2Iz^S$|H*oSN?}qU1b#J+NS1&#>O$^X7Ci|rQCk0?z%b?)F8byb!(^5dA+$KGZ+ zjy2gn~5upKn<)8r54Iv@dKGN`<{C(0A(yUDnJPpD`(g-y*cC7E9ZT`xB5!VMrx@ z3Ib7!v&b4iuq#F^mS5A=E6<*&OGTu zQKAA!s;!j+sxrPIm@=a`Tu@MIh3A#+WG{&#I=&d%LVds2Y~W+CU>nM#o{c^`;V`L` zi<+wZr?so>L%O8R48Nn!k5P-T8Q&sHex6SCweu@)nYy6X|Ya6KZ+Xdlnduf~mtePP3FCng1TGQ`?-xxc{kf+hcDy2*) zOgcw5f?YmmC7|s6c>a@TWtWnDU0!#Dn+w^-t`d;}d-@#v^uO3|_lYcmevV|lkwrW^yGmYea42zU? zi=#DA=V1uWRl+PyQ=L_RdNxVW?EQ^6Lx-Yru8Y_}4fZ>6WEe1u2+fnRI+=B5n#|Bp z(y=>4jJ0a^tfrZretsQ&Dv|&wda$RKGr&k)EYnFegyT9LUf8z*GEq#SSCPRN20C)! z&1?+QKXJc^SvW~|WDpyZ@G{BM8#Pq-_whsgYaA*OcfrY;Wb2!`&hJKJgqo z9nGSs`ogMZc%%uKx{wK5^@b0&r4ROdRY|Egh!>D6)aK%c^Wtx$Umj|Tres-llcbag z6FnJ!(o;=5O0Bseu?Q+A%ioy$DjDAQB%>j(eVn8|cZ$xBN-u6;V0I%icaa6!6kz?W zVo}7rf#%@9GCdz_aa9HQFZ_cw$KDryMsu-4E0OE;d)5uj!Ie7>84bR9=f7|Aaa7cj zuTzdF7Ea_&-u(8_GYttPz%vev7jgLnN$|KQFlhtyj!|DXXsgC^_84~;{zDm-B68jT Y1ArIDzqRvyjQ{`u07*qoM6N<$f;%vvLjV8( literal 0 HcmV?d00001 diff --git a/src/EventHub.HttpApi.Host/Controllers/Organizations/ProfilePictures/eh-organization.png b/src/EventHub.HttpApi.Host/Images/eh-organization.png similarity index 100% rename from src/EventHub.HttpApi.Host/Controllers/Organizations/ProfilePictures/eh-organization.png rename to src/EventHub.HttpApi.Host/Images/eh-organization.png diff --git a/src/EventHub.Web/Controllers/EventController.cs b/src/EventHub.Web/Controllers/EventController.cs index f5497f3..fcc385b 100644 --- a/src/EventHub.Web/Controllers/EventController.cs +++ b/src/EventHub.Web/Controllers/EventController.cs @@ -1,4 +1,3 @@ -using System; using System.Linq; using System.Threading.Tasks; using EventHub.Events; @@ -29,19 +28,5 @@ namespace EventHub.Web.Controllers ViewData = ViewData }; } - - [HttpGet] - [Route("cover-picture-source/{eventId}")] - public async Task GetArticleCoverImageAsync(Guid eventId) - { - var coverImageContent = await _eventAppService.GetCoverImageAsync(eventId); - - if (coverImageContent == null) - { - return NotFound(); - } - - return File(coverImageContent, "image/jpeg"); - } } } \ No newline at end of file diff --git a/src/EventHub.Web/EventHubWebAutoMapperProfile.cs b/src/EventHub.Web/EventHubWebAutoMapperProfile.cs index 94e74fc..014ea33 100644 --- a/src/EventHub.Web/EventHubWebAutoMapperProfile.cs +++ b/src/EventHub.Web/EventHubWebAutoMapperProfile.cs @@ -13,7 +13,7 @@ namespace EventHub.Web { CreateMap(); CreateMap() - .Ignore(x => x.CoverImageContent); + .Ignore(x => x.CoverImageStreamContent); CreateMap(); CreateMap(); CreateMap(); diff --git a/src/EventHub.Web/Pages/Events/Components/EventsArea/_eventListSection.cshtml b/src/EventHub.Web/Pages/Events/Components/EventsArea/_eventListSection.cshtml index 20d23e6..e8e5ba0 100644 --- a/src/EventHub.Web/Pages/Events/Components/EventsArea/_eventListSection.cshtml +++ b/src/EventHub.Web/Pages/Events/Components/EventsArea/_eventListSection.cshtml @@ -1,22 +1,16 @@ @using System.Globalization -@using EventHub.Web.Helpers +@using EventHub.Web @using EventHub.Web.Pages.Events +@using Microsoft.Extensions.Options @model List +@inject IOptions UrlOptions @foreach (var eventDto in Model) {

^@%!J0AJuk%wvizUOYf9mKgiU|f;RA7!HV^Z&#~3RakTT9<*xcS;&}OBXqTkyM z;I3n1+qf`(-cU}NrjJHgglB$L9Z%&e!GOCK`^nKlwT@}=$4sX^c2-0gWAIXTIOI+d zt?5>ELQ{;?QoQWpXed74A+(K4s;rQt{>{>pZ{|_-=CQeqZUSY82n#qpnC{;V@eajE9h%!y@x6f zQB##;^^4=F-3qcWv^HBD{E;Tk@f<5?piN1*29@)#TAb@ET`iG^D?QiESa34!L(R#XU+ zJ1|2v21j^7?z*$wHJ}cQ1)BhR(6Q!}Bhq;8zKZ3tCO?X$M9uV{vtP*x90kJHf9D(V z?f>wJ_6ft7MR78G`s9OKd~;IwTDSm7O)$1K7F?G5r}vlo(K|ikgg#`9taQIWK=S^R znXmIYR+%(tHM)ELPyX*t$>9-#<=XhaldzQP_*H|V5~fM435oEj({4(BR?!gT{~>JZ z3i^Ge!*AaIyn-tes>4Y*RUxdJ9`Kbz3cm!<<^z8&$JWB*jErZQ;_V~j-&}Gi@zt+H;^Qf5Gh-hOF{v`S%qpz{=w5n8aoftm$l%N)1|%~4OQ`7t z+T7_X1V%9(p(I8VXcYuYQ=%*8ZihT(EOKM^ha0ABkBHCt&=7^Z1TZ zqxxh{m=m|i2bh$PFpNm4Kp}6+EX=g^rL$n6a$Cw{X3lLh=4lMCLMolW!dolkf49Qj z*K3K&t_Xn#psF}_aHOL^QtrW#Hu)Y_Jk1Lt@VpF&6OGD(Ayz7|~yPc9eo4(SZ zb0_@SZdloo)<(HJY@>Q*!H4%*Pw%g3okg+cv^0tV@rZCxt}7AQt00gQkfMymw3@(# z3hQU{Kwy#wEo9rI(B<)^bc+}~rI2*L%h+>3lyyq=V`5?II%1_`B0*|ti8Us>QcJ|Q zLCNp_&hN&zzVR(OAvB%>FPZq@lrS0-bYWEE8ibu4-m&W00lfeG{4)RP!$o_fD4V?h zLeEFHL;n1uYrgD9|KItaCc1Kv^oaHpccw|zj@Cj6@O+suDxCkdTwmB!;(xr%?g8N) z{9!f(qpeTBegDh+?ETMSuK-hKk6m&!>l-G>I&Pb;-e2FvFW=pN4dWV%|AC%d4AkkM zUm3|!xQr;G!frrJ%7iJe8owv4BCPD0BLMm5!G}luAK?E>YV^(iA(N zF%=A3Hc6H707uq#@g8g-Z+3~iKiA>E{O3Q5AKoS(Uf`ZC?aYjcJRyr7O^bX7uTOM{!22TrgHUBOTd#N^`5G z6UL558>rnltmfYqh_9>Hu6@!l;SyF59zq~N5s%?g2xov zY|bG}9mQ*Ie(9*8we2B&83PdU(NC}P=;+_yPKy#4O_^0X%W7vQns5LfqBaXouA$Ko z8LneGYP790tsj(%?KT&yMd$$Uzllnu{D>vqgslr`W+Kd^{11~HFu$1R#8APBRdlqu z#H_X8f$4szmM9Cmj(MD~q$BoJA@f*~P@Y4$LiHPxFI8To0;&z@^SPYgn%5L zq6C@z^7v|mdnWBopmH74s=PivSk%RYYs5oU8Rz13i-_#YITO3e)ysaw*U8}=q@42K zyk5fOAU-*^1a(RSfc=QB74Iuo&^0DX$|r@-`QPNmLNk;lgm#1&fic3ORXRc0QMGix z`~`}V3T1Y=zrRm9{MUDveClU9$e7IGqx+Y)hW`4aimzG4GGeOEs8&krlJN#E@TlU^ z@Jd7oTsQt_YWjBA{JAF`?ys3nQ(TJe`)U2gg_Y@RexWed^NxUt2(z?!S(G#;a=Z6R z_i^_)js?I>NGUA*1mc(*I&MVx?v1}YC!~y zn_*)ogBy)$)~-xV%Ljd@*ZaWS`M+G7!T-AO7!?nYW`G^jtw&F7@RIXVGi#r{`(@pK zGV{4UusYkDS5#aH~YPcI%rJeQu`vGMWA__jYIP9G6TVIW^Snyb#WW{E&UK?v<%}=Tj z%&;8@mBYIG>@b2JubLrRU0-{mAqCa}IS2>z(3fv>46`Sr*VZXS3TBEsK9 zpsIyhm&HQDvgGhj8|Aplar<0RF;6P9X!f&783V(hQgN6jV~OQfD}ON8fx{2MA}pnoMn*2v!B+<6ohz~ z0X$Gs5yTF0SR(47F^CF%ksW>SG? zY9u=TFm6yKbQi1+#c|f+Ov-`!RHL-42z|Cj3cFU$L!nOms{WLh5SqRip6-EjsE~l! z3$G!6<$dyw^-vrWbzvHIT~Pz`*Aw?G|II>2?`=2uWJiIR!NI<~jcxB749?E_6&6TV zQKPY%O#`#N`0>~K&NZ(YgGf8pzI5}NAmGx{o7#dD*b2`UQhpQ+sk8`Rqs*_n&x=rL zOUoJQf)~*S;W&+wXZ}mc(y`=D7X?C~agJPS%ctgC|E?evJYbNf=Z2eZO75UJ*~_g~w)%+rO8$ zegEaFw@HUfj4)0+-k_CS*BaS658*;BV(wQ?qTHXAiq%G)>R04l3IZZ59#N6U)AfD* z^ot*_l@3$^@PYyQAAndh?kpLWxOopUif~s?~M9&B- z3sa^?O?YenpFg~~O+35^^8bq0w5f_isjuFu_xrC`yo@vd%f2COkDlRGu;rEfuLMFm zJ?8&(Tf-y@l(0f*!9~lzJXKwQoHvL)FC-j%dTZ~)^V_&T==QVs|91SmZ=6=YghA7M zM$7x>FYc=v^0N;=ACeb?4uO+X9#4OG8Ua%9Xp9MPlA2FJ6aY*Y!O;o*!(}9`WYY ztN6jEpVklm_|ts-`W3R??|bct5mI69EN%9sdp!+H@9(d5#q=$o97_dCIJ5QzyJU`4 z&7i6M-mS>pMks1ma9_*zx1)nh1Eb`~JA`aLHet=tn`%uNqy}Ly(bL6<&4AvI_uZhm z`5R!SW6+3z^kRF5#LLfxr>6R?BS#D79LIWsPV1H3Xtz+!syDT`# zBsMEezbpIwwBjtafT)NpUEao6Hn7YSVO3=MIYW|8#I*LVWvRxbjxgQ`r8WlYyIy63 ztI8Q!YA8e8hRm14M#DwpcKgNQmQ~G*K|;f@SwdTlH!$liv%{lI6|EXluvp{w1z4~dzEEO9c{~fN4YcdC3P5Ti z-A)qBW+y-hq`stB#A-UV&=3Tp zFBBc~?6s%)|2kMAmFAYjCI0{HcGmrw4o}Dtof@vy{fF=V=A-Me(m|SeCIKhh37MXx zVS=X@^e`r^k=v!^2TA z#*iT~%+E^aKt8N<#ych=*25%^oLyW{91mZQok&K@Uo>qkwlBD^rfm!-?v3A9I{b&P ze_S^BL#S%mIKs+`SRh31)iXruv&cgMWehTD7`&Paj@12(%b6q(8R%N{3_8 z0s5rXPcb$NewG)5|1)h$BPf5g4Z8ln64%9Qh+Y-2h7qa{4*4$D513hvMQD=h2q@F% z{-E2>-v6?G{`SZ5>vuni_t&>^Ose*?JUpE4&!zeN=~uUjh9BSl{h!CALrnWM|JM+7 z75JJ6RK8}8TExS5V#UN(02`DA-!F4<@j}g_ek+TDl*soL<26CXOI`%FYo z$P8Wj73gCXP_yWypq8${ECVKU#R|SnAH+l_Bj{kgP4=)vh7*|5&=HX&3Zbfv4@J1c zOGhaOXCvwe9<}*Sro-TF<}!~hos2bpA?oUY55x+N%*k9(vNqU+G>KlZI-tc5)~z_SG)|)fmEt zMm{o`>>GBZcrjfTVj8m*HiFO@sdL*$a~w?!1PKN#XOj2TYU^OyvZhHbk>Ug-EB|Dz zF=vKY;gHTwH4b%iVHbX8j`!6X$3nFpTFJn&)9 zm0SiBzU1yjyk;yjk=VlWEo`DV9V~^;OEW>KN)H(0OfX>PyM3Tc5Njqs0c9NX1gPElsvj=2<=-p`7p; z3b*z399wsO$vK-cb|7RfKD4y_JBMOb@4%;?Lh)lpH14!Lx$)PTiqh3G{TmArGi%XvK}wU%AK^}FB7 zZ+-LkWY^qQ_%`Od*hSPOBXq(B`5)bxnMgwS@dvC11aESQfBJB#AHBc8P3eG8X6Ub8 zs{Z)ZbIAk|HmHY8>0A@we~WO0Uq74W*rRG&{Exb6Sw&tH7>BLQD%GqwFCxU5qk)6r z6*Oz`oDM*FUzPC`Z=ZgX_uDLf^7;RapMLR=`HQ#zD}HgCi1^v<{ZGI6pEnHq(QR_# z=kei~l!%k>)p2^2(D0PHirN-37|3v{Jl1}CZOY$*n+cV#Sl!sr+fS~Lz};3dv~s7C#g0RfOB_5dichh=Ydh?VM3mI`5qrUvg2vySC)37^&8 z-$5k0L`9^dVr$CV$`IHhw}z-|(FY<>LUa2|#z+HZRkG!&j*mtBvlLGrgMRY_8~AwG zyVX=*mg>odO}9|gBBGvyeK5ixOS@|-$FOv@Gn0oGoCiKXW${bHMT z>HWEi*VG`irsS7QPTXgbbz>Lw@CdnRAi}D?ku#%+(d`v)|q>y#62WFD~bi|7~No z^U*D3?$3016TO1Q*}SoSIl`*Y;f55MNnF@I$rs@(Pk|!DGx&yWvilb1>G}QfOoyoF zj5rU}j6vR{ zaMu47ga6f7b~*rz`sy@*;r99d5XpaeTG+DinLG+2J>Guu@|r(<^USX}e2FjT|2{b3 zSG2w!sMuC_{%7yiwInJra!Izjy8S&n2fNN-+;uI_fQ*^|FybOub2jax9yq>wuBW<9 zEad&)^_VEV8Ye`0?HG~Uh={5VdWbkj%RH1-9O4VPhxgJ0|5-CVVN>GE2G0J@pnuQx z<a!YaHVTAyvk5BU_nkZQD zba&v(%ZvK6|MZ{od*A(TBA%ps>?PhZrk9aakXIYQlEGtJaB8rPeLNT~`f|Y~CgR@kTIaYa4@4Am3100o{Tp;jOobV}> zM-G4^H-cd}{8Qoyphm0KrCM7*Y};g88Q8%u?xacaWVl!XLuN zwzCPvQ8Z2Hel|cN*vs;^LzIf4*(%Xw5Q-R8{Z-5-hjn+IZ#5(gK$(+#j`l-%5RK^R zHpyY%U|=wrBY2D^!6+-t=P>G+%_Gm@8bJ_lXQB9ChW4TVPz6Wtpr&ucw)+`?;1ff(1#nUO9lXJ9Bkt%SRS|z<)ARcHtiQ z9A5vg|Fc&qxV8H~IyyRRO2JV@E*P1O$e$Hoj$R%_+*u|DJ0p|JGnd6G+R zS;?jS)^F_Ln$>rCJT4Sa8mka*+|U5{xV_@tHJ+b}6F2H~>e6xEjcpH*u=-)a!N&iP zi1@g^6eet-)8pS#F|zt>8CtJQ%l{Ra*9SR`2S#pt%}4qhFq-8~Mh=2G!Uyc1oWadwv z6kf?O$Eg3}lNZag=7mP--&nN~$L}#)^2#Ss*w!$+ zH%0F=S9bna0D|{s(%Q&GvlJ=}D}1HivdO@Gqd*C{R8LY7cbb35%e;ZWcE?suY8y@8C=$Ka?3u2+V2nK8jtvhu?s zRb$$eW5#_xAh?n`JSo$BFc5fHVQz-|{7>TX+f`h90}6_KP>nh9&+mjxHHgj>48lQb zpuPZT)mbxG4djTv)v~d;O>Z;^1PuUbN#sv_-n24lvnO~k8x@WS6~6EIw|?5MQ!#0# zHX?OI+|5DE9`O*@Mr#8Q0FKALG_F3yfEA?0JwhzA<}iUxD9O&D!k!r&r)~M}l6(EK zxret%jq{4RV`Ljn0O7%0TkND&`hCT)JIG0)tC$agaajy?R|kw-ugoJR zfSM{6No>$WM&yfYl9P6xkTW{@RI{|v+8!>;wl#P8=q5n3gbj7|d$% z5SwZ)eY(B_b1eHkL73vPHI?MnmhM_Tc&y>6@amCsaTzj{McCk~k`BvMxS= zK%DlYbi#~?Ah+#SI-a>O2UTkGAjU8fpdi9v-Bh!0K0cL=AyUcId##ZcEXQ#j*XeDI zXkm}aZ%6#v_XP&Ee9}1cpB5W^8Ra&p(N5zFDS<9iIFqR&aS~OP2Sqnh7SPK8SCt7x zV=0CT-ZYezV5RvQ@>KEXfXl=wB~_HozaTOn(nU!m$m9Q@r3&ssKrjFP>+LG_f8$CA z;cl`lU)xt+MEsYp)cxn}mZ5f_+^vzcW`sF6yQpG{Yy%LcU4O9bC;#Ut`o*UAWA4k5 zfBM^hsx|4r`0EUg&5kvAur)^d2~Lv==n8uQEAD30d=@7edMwvj-1pQwhjsiIp%HTCJAR|L|&UG2DbGF)JPTsmj3~`ui=xY513rY$P+ZIt`MWh`JMoP zA!0^agk(rhP_tbKV0~2td<{E6hn_r1Hj+rq6^6y@5sC6oslJ}muw==NLy$*Ut&Sym~Ki3j56n3BWo1~6*jKu1cKk@&PFVazP(tjs=mvr}S zJ;T95Bn?>NB-xUp1j+92`=rDDpD?@SS9!lahQ=%{yD2>LSCR^02;LF`vsjYFiZ!>Wo7Vh z?oF6VR`4*S>;(X5xs3gIT)JzM#gFozy|?)ND;FqkQ+1XcX_JJUJk4SA00eV#CJe`0 ztg<{NbDW$<-S>jgPaIcylCY7U|G>Ghc-Sr{2l`R)o_mz81##KjGTom4IeF1qEgQ+^ z%>S|+TVXOM`pe$6YSn$HE>Bj1Vab&3KZVqaB;aSqb7}ySjpRz8fBkTqba>Yx*Y@Aw z|B(O9ZQozNxyBo$OFia)n1#`43sRU++05+4cx`d#j1XW(-4-)Vr=b3DeV;%5{GX$j zStnt2S!TJK`mLq(=sR(Z%F;i&h}Gw9Ck(_UaWd~V+RnAmDag_(_K2_KNE>eu{9v zMFTIIi0M@TvjQ8IA^u?;uogzl4DJwGU&eUe0wrgSRD1b^TBUG{3~Yem1fY}o0NVuZ zZCKs{rp%)iECC2Ah1mlva+{?cUX0P>!(5cM@?Tc_&VTs*`uf+tQ6uy95~^7RWiUq& zWOC>UQ5)Tv1*G9~Pd@|6xW54d+aLh@SDt)2B9!|4%i;u8%v) z`fS~bP1_se=rR89evW52Xj~O4#ckH-(biJaiQP-Bl@8yHF~F=T2X~jMhFKRQkQ*Ak zCwx8y&|Jw5ObDV1Apz7+V=GTbgVD2xZ3}hU#Q^PHZa}lpMC0Hbz$~*u;}+JYE1dv* z8sv_xMh8q&77u7FS!0xSSSA&eEo+NerT9c`pX`t3JC0H|Ec<3(Ie=u3L&=Jt%Y|m) zWJTzscrMKdleYolV+Jn50l~+(VSdp4w2UDRj)NM|AJZeCqQmXi>#1#3$0PHR6)F-X zbSeoWltgLZyRUvwN;vb;qAY5M(Cz}&yvYEB2H}QLxsYK1LL6ew4x)i@F(rx~Y%V{+ zXLg%`EM=lv{-2Eip1_Hg(<~Pj=qtHv(=|Xcik7A*;{t$-NhABuYA!H{L;pi$lPeXA zt-Wq3afkL_1J2bLg4RH=OuXq4@rnu{Gg+HZ*=UtmA3&VN%vXdB$Amu?fg@!>-xsUb zjO>y9(bFe&B0&DtTv(<`1;|G5V1(2JIO;2OaBFx9Gw2NPyCJU?r2)0IBY8$!q<~!^ z@W62;ZPGe)E6{q5oZY3HKL*e{hLlwijp-*fnT<|XWqOuj*dA;BC%1Sg6g=rg}~JJ4c3mg;7Re~_+iO!CkDC+U9n`H#2!H=e)pb_(um zQJ9xDrV630`$jtjsR`OD{&ImdkRWW;695BMd~r<%?qOrV$%>x!BXqcfv$T}Z`2Rlm zZFNHCFOJp4|HP3(W_bFC>&I0bfnd)M?_)9uOD|+#h_ix-hQ7T6Dp2#3h!Ipt53Lm@ zk*By(@+VS^4jq$Bxha}7l*DrWj~aHj$%ZqMB>zOO{7(6(+n|MH7VK+Zss68Xj;sUW z(!5PNaHRtlXD@?xR6?WaubN&c41j0-50GbvfveRWett{o+W!0d7xk-W_qZEJV~p>; zy5{#^U(ZJkxp>|tyXJeH{~qE6$*7!`quP*AN#$uQAIu-0OQ0|JSSB=6(c zVB7*=F#^hyTr?Q<3&wWje0+9!joBkUCT{{%FG6}Ml(wfBe<2;y%)&+p)! zL6(J~HTW=4#18bnC+1PYROgH2$mT9wR^>@H5J%{yVFGMr>2jzn(B2FXB&*(+x#R!1 zLE4UN-95GBNe8c>nx1fAPh?&Xf5;m?W3yIseJYj7Oyfu{l^L_TU$} zg?xBbFHA-y5 z&ii$(4{vXS#p}vL+9@pBA8sd`m-7ZfJ!&6MR6iUr4cF}X6@-hF6bYSC-v;f@ZkUfK zi?c;?{@;_Ryp?W=7NP>t@#FDERK>ERjC5+HF3yrGI@W~NQUxObe1DsC_-=gtYhMor zQbcTn*Ki!&P&uLUt_~`916WOfvVYIW<;Va1-HZ6#9+RQ;aa-1Xl|y{``ifpFX5iSk z*n#gv2=>`A>gRKF&R4(?ng`*J1jke@xV>$TWSOycLqsEgmK|5Y9PA0N_%>vA} zSzDK5S;BBw3@-ULsAQ>aif8(W0lr>=ItGphjv4<`)-~wZ@}FpHq1O0qQWeH?3F(r@ zwJz)&{NHmE6-u_SY;bKmd!7FyN0gaD>sKnQ8Pi&oBUNQiv2|a^GacgFAO8n4 zqna;nWnUb3>}W6 zV_E|tw`csx%`UDnw!g!v2K)wCOpp$-8vawxjG+_P61oB;#GC;jOxDs{%PpA1vbCH_ zhJD~J;XzOgfI$Ij@e;Gn6QN_!>JOVEVxb$lGEEg}h$_$AucF%mQb`28C3v0uitoC> zrmGO3WppDec%HE8!S@*>L;;-X$k1a47o;I}IQ-P5m!uAL=YYMtJXUZI=U!4D|c0~ug zTnPZgtTve7+RJOCsD&~LNVd=5QubFk{aAuC3s!7e6cm1SA&^(K1!;jRAPaEBzBgTu z>-1X!*(ZsU_hb6-nu zuCDm}!>{s}U;JyBoz+URwcg{a3wlrN7qOUf=_rrJYg}kM)Kn8IAwX|FLhKw=NzdAvaHeJ3%g*RkF42=Q*EOwIUQ?DO<*-0= zPo4(q9%SX=n=+kztT9k=by`w4H4W^fOB651-*128JN4$(8=p9)0~A;-jXB%--_#Db z?Z}JL8sG(P$GV~Z2%q;#ZzwXZBF zYwNdl$ru$!MOX#X;ZS3r^*;(Wi)>U=bDJSz-?RI&B69&&<>ScW44p+^J!l*jkh$9i zEp6IvAwwV`I{vLjm4+BbTb4eGjNGK^I;~s`7CfG1md^;ELMpaD@}#jczw`?ZEpYeV zhn=LG2r|Gk8n+#e1QUdQ6tf*0fqGpaYYdUeIFHb6eGgTZFflk8fr=6c`7QWaQquHE@zkGjqaAw2{^qf^zL6 zY*TaB0p7hR3^AVuB>ShVv`V-Q)xNHfE##SDAre5Mn=Q%H)k%06^c2`NZW+mJ^s~Gp37} zP6%=oR70pY*4NB;+}!QxI+Vu1gJRa`Emr0%)d1#onZC3vVn2DZyZ#V@I$0Q*6Vp4|E%!6^w_Xzy0v5xUY1`1Z;LV*KDN9 z7es1YR{XaX(c;YF$XflTCKqtj5RXQhKh_`{q3I6MHWKZdy1yUU+pa`YTZL48A4au* z)1Q2(ep%sO0#HB;cLQ*9CQY>lp^nJ9p3iWcC+P~>prhVN|*-C^6=^erh4i=8*a&UEm9|#}UW(nSX zRo2I0N1_EoHr;lY%O(Es+ux7dq(hMU8UdQjvYq;9o9HEXw2qXeOTC(2CSl5Ow@HV% zO*-6HI;8R`)tMC;-+y(@Pv2Cgr}x&&xr``ME*QSb4Yp7EHgiy8%(lmOuFZr}6Fo@G*Q56TOPG$}+ebZsK9enpH~0xryXS#)@VI zkE61jHq#GZ$*VQkhAj+XlK-_N$!WWkReNcLRW=a-bn{a{|Xa!GsHX-Oz+>ft<&{W%!uMDZ8$(T8erF5wh z06!h6!CxqKO#Fb{JJBbsscfuaFhOu^;jz9&!hjrouwy8XhK4gbYg<~72=Fw} zAHm3;9$}UTZo@0Op^VT&xfYv{aU$^;=~YgWuq$vM@^%w7ttn@P21l0vFkgD0*x2>F zdX@lInn(zv%<{#|@=ym8C1u45N-N=_JzPooe}8L_FrnM0JK>x(-K`ft)^f|@3lvXA z^Y{xAT*euGwFoEO!tt={LK(7-r`?Tub)^&j-U3refLyAX|80dZVeRrm7;upefOmL` z-M*&SB1#v{Ta-}8V_E;B97oigv7r-k*(lRO(>!BR0Hzvv6~xvPWuJMM88vNwlCg(c z-e_77T4Uw+)T_V7&vek@0ZWh7a2w%kx0dcdnfdA>iVi5!M^Seq z!G;!$qzVtin!|z^Huk0-Y-#Eq=l%9r>G0DCzY5Mi@4I^Cz^M&BAB~`x9?@OvO95O> zPb?KvZq}NxSSQ-bhaJ_&SQtO)7(?#1Yc-72(0W9{(zke<18k^N^2$-zaU8xBFpiV$ zt%tTDqvQ7J!@KFZwciKxxs4{XFH0_)$F_CxB3mA>^I|VjM)Bt#V4`EMny8HV^gp?_R}wdkjce4Nl2# zpT75UJV^2ZC+t{F(KA@VTeQ&j;q=YE(?($&CzAhtoG{73z$;Wta}38$YnrE8s2vU? zL?}y{i-4askGkr%k^>$jGkwM?ulN!!^iST6&+jxt<_4=)A;ovZu`Q<48$c9{Eg_3d`OKGflQ{GgLpO-D^e$qwbrCEq6+H!L2HS(%?I)VgmE* z3=JkV808n0O&qFodx;gpqU=F?eJTk zC&Dm?6y}C9x3V~oc%1*+J1b<$iGLoe_(B-Y&|>O_zpnQ=J64nihnD)+cjckk zrbu*M0}3R4X3p%lumje_w0cz7gQp&*Wo^PMSaTfLy)Ba=kXEbw4*B>{PXB!T=6e@y zJz%7n@sa#rq4lHIBM%pYj%PZMqgu}l;myL7Ey*(Gb+V%S6gURrD{k((AOq&MjtL12 zuG&m-n{bHxzhUjCP-vwCp41Um-c7ITQ=b(|(V7;$Bb36UYd2a0lkro(%T zXZzHPU@rsrIas1}C&QektNgYDfUg=%$&;OuW3kHe&_!> zVZ&Auc62}De~unVQw1&5QywcF{`T#Q+oZ#~bxWCUSi7XmW2M9E>w`>B1q$dHMr!>q zOq#MPV$l`&zb2c6oLbf;lM`f!zv`eFq3A@qj*X%FQf{R@5X}E*Yz{luTH8X-TJH~v z+!V(ffmH1Ezc+V)fkZDXidO)W*LE=k{Z$Y6zx3?Vcrbj3*!cg_0|4}E?F0$2i;mGx zcr~2o@xPli#Q#U1v29euR!+u94(v@yr+^N;X~(nB`{O_O!}!WqzEbRCBX|zT0U$Ml zN%FA+tOF5HlSndkY?PG^u@~vqXoNGwFyQ)bdAYAx43k+ILt&JLBPlMKV*Wm2I&3sO z{OocgAXAeleM~8bJ1|+Gmr$#GI932*7B-G?v`B`C%wC$Aytcw%Bk+o&OJX_;MX2)b ztDajFOODzgi;yPL$?)7f{8jp`@kWGML*v*?>1KGxf-`qM-IK$Fntllu?{UEbCRXZde{M@0brVagP+)VIW|Ozz>-Ey?xobg*r*?i zzQpR7JLOd?DIF}xEq{t-z47<)z_o)Ht{QYktp^sT89Nfiz(f7&3`iwSr>OX{grO=E zV>4-v$)G^IJ=_GB8Iu_3zma;XNCWs$K3-$))WA!rQkjqX@v;E87$g02+KB8>?9Ka; zRT3ONVbz(7>i3h!2bgA?$ubVB*@D8M1*&Phk$XZF+?4C*M>=jpTft*#VZj2hrKZfs>O=XjdZp~rhOD?10DK!3yRKv) ziexoxzkc`g_|@B=TXT4hK;PP8O$`J}&+IkNi-C7pD#}BR=YGA1`J=1fIG;M-294KM zxFy@Z&m1jA9bC~(o;DPI5~eF;lhZ&HX$-!A+O)qV8M5NUM~}98zE3(l=jg~z5j0{# z;G_?7m{lKrl9G9uS*rz>%P_HnJ3`k!P0b@Dbqfu~l74=H0;qR&y;5BiyLI-vO>DTa z3@P0aL=%z6)pLEf-!hl||LSu~6&z=Iet*#ICBFN6e^@VHyzFdp=7IQg*vW@u%Yzx` zRKq(yM<5)eI>U9`67b#a_`iGmqTcmfS6wInd&>Xe%jf$2m)EgBEgOwg{bNihg_71v z(YSp}W9BK?k^YV0;(t{^qu;^*wlYYh6`uSXIAem5&o+V{d;Pz#*Yu0_W^)3@Y%Azk z(t2-vZCh;o-^$o2Gc;*Qp5|Y2xTFE?=-9_*T`c;LJS53_cRY8&eL{s`mwqfrQI*b= zJchBI#I=)xjT!tx@3Etw;UMKSGIwpt#vvvbN?;&JABq16RyPS=ym%3R@q<6fuYTnt zBy4)#WX$DPfzVSC5emlg0e+IWlvfMhx@jd^#+KZcY*0LAR>_v_Wy;Ak$_saEiEzZM zo2s$vS{0KR%U`E_>0^YGOnu%lgH*CyAY+sEN#SX?J3+Wpaknam1rZ}&i<1JDPN=OI ztkSPE0U=c&%3c6YhH+O^*p;dPiWk;D+Q?e|*4$U$d&RRV^jqg`u*g(g2d|t}XSt5r zGOViN~XW4`eIk&5;(VHHz7P6c?!u zKoW?287o9RbTSNJ`IV<5pm{?L!)n*}TB;2>d{42DA;ewB>-DN-jQBSIHk1#@n;in$ zd9rSmebdr|P@q5agMW^glZr<>#0(1`S*<_Cu8G* zZUx{H1G6Y!8d}>ieYJxYqFJ)h8|F=NMzUE8gW4+|%S~gsdH+YBC#-E%?-Ooma@uTt zH^HPZ+_8wvUHh;n(wUAruaQ`CdXzd~1jj3Nz#gP^9Sq6@Kbk0fzF zVqk1X>`a^DYB54Uuwyoy{_4E+U{g|!s1o`fvR{cvsl@E>2zPj(LS9)!3Fug{Apb8` zVeI7`L`s#c<)S7_^~R?*$Np<{oFKWca)|ixlT8*_vFon?#%)~uC$F!k__MeTFI~Lg zNN4`A^n%o`Svc~>h=bi(B`{;y{pQ`z^S;tyHCHpn?TY@)h=Mx7oq7fW)4u%6Q4cn5 zu3R;%q(-GnXI#yeb%@~-6;)jI1zK@Ls&N-e`LWE~KciXJ|BxOdmXPe6lL+SKmiXIt zhp78A9p2yZ3mWNSedqICpn=Y(K#Wp88hb4<=Itb96AeL{>3$L`9GLkPe3n9=n0y9D zuDEP}SzsaG+bHPR;vp$VkwMoAgk}(!uGQ7E9Iien+BR}UqLf+k<$l5b-R?|?t9S0?)F2V^lgQ31;iw3+}7kvgRtoPu5RC1QtLB3OAF&&dg zw?`1=IHna&D&cDC%bFjM7F-2cD}K`KEepXKO+!q`j8h^vQ4Htx@W|;2orcewqpVId zfY+eX8mVYmkF<0HHE%#Q@L>$xPlyD2(gs)ZKQNR17zMBIGK6}Umo4uGbdwQ4U63>$ z9NBQePsDyT_2R`P{`?0&jIVy>D^Vm^3bzhQ2_Fmtd_*}bc!FU}68fZd;$RoWRauvb zF=?Gu^R4!e77gv&+y>1)5mGSX;PwnAd+t#jcuu`sfMiC zI{ng=CGzlx0VB1_}boi5gx#T8L z%WeSCp)z7UV!NFn9qvvEbW(=iSK^yCMx1-vs}m`BQsm?+PGtaK@3 zR2-8V<&CA_o@(&sSbAOM@n~3#!z0a zR6z$xrhWz(M+<3OglMwFTSmOlh~2S)$?fg`@BJly`s7^dy~upuc^Ua9_a)Gs0bNf7 zQ>JuE8mBx)08nH-k|X#EgB0@|?h}KE`f;pbWU>;)ISzs#rD08WF*fn0#NB=y5~#^22uYff4tz| z{Tmf>+V(WkeYEAh;*aMKSIz`f%wM_)TpZ_0jK03tymQI9B&6{Chfc!`*!+kBvvJl| zHSzp7twvBnbf~h&;)6Hwu*a4)JONWYX>!P}T;v;y1NZZSh2)^9D67T3$Ip;D)VK#+ z%c;R6hUk5ycE-~-PIvUZ{>L~cCj}RU z(k_jiV~!0VAo%~jUG5jDw>bz21YFW+K?l`{D&p71|5mfJ^`qY>>7S2c>%7Mqt-@2s z+^D3l(%;*5U+Hk4bokm=zLLiPu}7qkVY-=UHkcjxi$1Cz4xI3PA0q;4qC|_Z+-kCH z=Br8_a0apn+%#Oj7AlrL5NVs+XhK{`od)Mb*y@ZR2>Eg!Mqe5_EV($nHSEFxcybaT zY$l4)bLqk-bHunuLWQ4@!KF$F&l#uT0d-Tc6*AE|)X|>)MB1V2 zhD(bf6+csqSuH3l%#$#W1%}2X={}t4 zN=|%8<$~pmO?Y^G74pA)7Nn;X)lSX`g(>Wcd4K@s708%pz~=($Q;kqKyxe#pGp8HO z0CKhNcqCBtGOGBpQp0Xb%PsqsB_}2%ayir;;76Sh1$$REV$M9!svC%vgH4RYyfBe| znmxeVD!IOPB#rDwoVIrz^!a)f#yQu>O42H+8`571RF6A==Vj(-M*NRBN=jW<@h1iuh1rPvuIqJiMVvS1f3Sn$tPj+{)A0}QvVQXHKms9`KtP-C zysY}uH`tADgFKDUZsaKl0pvL9A7y`Pq`iX7m;_h7Qh8%p5eCrVxwBgM^}AohufF(s zRoMgn0#}WB*0N!ZNj>Jq7KKBOm~B|~fXmX!TP`$4f!=H|jmd7W7lN!ZdH>~z{nH_> z5+(a;d*ft1fP2=T;bbLEmD1zZ1M73l5gaQWp57zen@ZhLtCb8N(5G%;%rU~MQ~iIm z3Gq6{Snj3EKidkdJP1f@a?=N;2WP@=y@EnQ)yDsJyG?QuDdtKd`6MvW)F_I<5uPy; z!{*F9FZY3(2aF<*A~xE(9rfzPtN4R&eZOA5d`asAX))#w`9=5GFaRV*D973!38VTk z(XelJMxjvkc1=3eyAU3E)zBGxsQbg$PxZ-*-DQ~O`&YWoJeJt5qw(c`E zlon*yRyfUvMtVG#8;dW^#`{wAPH0#iHg$u9u>9qVm+_~6{2%M1H*YMs4Al(#!$gYU zjM0~E0BR<(*ZO5%h*j`#@ZplOqRK=Ok;9`7z-cSP?*Y$3bk!8*2t`=ANmZzsZbNm3 zwTUTJwpnv~pAaH~&oKxAYF`h{H5*%Ow^)kwtFa?|5Ez4@T9HD60Zcq(Pb1L|2)Akb zGF^S&JRm~ttTtL-y2o&}ujEOa<2aiSQ9h*X4?B52Se`bf8Mjx-;zRq|h&ae<*Dhj} znX8+TiK@g`4;Sf3TVQZp7@u^SGT2s>cE{~nE#n`CWk)&bF9I=i^l+sW9e2*;~7-pps+8=m-YtOdsA9RJvCMVXUfc0_8=8Kf1symSKlfr9DS4oX}nXW8|qeB{;LUQ zPuNB6%q{(0mf4)9kSbrQc1O~2KHZtMl(Aj!p(c4D3zD-3Q!4%uWuLusj5Bd5#EHZo?*|8-0e9n)>S03jGq zZRlJR5afS!>Xw=Of79oB?QX>X!RCo|7GIhF@HXRLKR|xVb;rirao>4W@gHB+NV!ol z49tz@lji>nthOWnZ@kc9Iv*_T5yE&5WzB{}$N%@+D}M9tXMv^lm>aI4Tf~L49*0Lt zEpZKg1qR;(b&oxMc{_9!e!eCvWyY9RyWz(K1bOBDkvWZ}%LlY>Y*`RGIR6{|zQXQ1UAy5F|zZL;dayZg^&(!K0|9GA=k!PX@3=5BnRz#ra~H}=Ov<=F(;@S|(%~K+cR8-4 z(M1)kYi|GUD;>W1qVHA(Bz8fv@j;4l(AjB7+`3+kgAyXjTg}a`O6PP@af5clnb>K@ zoWq_D#V$$y@15xcXp~{~aE%xN zYQ|c{h~%0+Xbv?D<8;r&TZz^GFvF!IvK#KGW*KR9^bW=*rQG0=H0Y=0;N%BwQ<{kl zM-mW_S;V{GKuSrW2V$x&#&ZyGHJkf~>TT#DZduGh{GkgEvrLGx7(A4?7N51X_GNgy zC1JmUgONy?N1`ZBR2Ir|W-YlcqBfQIjSn=c^x(B_M$H8VyeV)A4gOODue2D`Mcg=9 zEi>@^6y!r`0bmPC_xBz&-ljR6miUAms+0fBwKWVm2%}1~X5}w6uNcA*(j{bS+QQ<< zQ6i;b>j$wSxC+AMhgif=R{mj!Eu@l1a(D+tNBX>0l@nbM0fcTa)EO4C zmGMaQle(OO>}he>y$2g7JrUFv4qu3^xgNk)9d+s5!55=YOm#R4hT#KLI$Y%7rF+mH z%zEfc05BpRCnxjmP^!{$sBt(4LPe=!N$)?6Fqg?A>dVRxS(9J74!{HKLp-t4$h3k; z6q^pVLV)a5TI&@EQ{^b9N%$>WV4FE$FUyJ~O%hM`>(oQCs zgt%pPQaCH%9VdHnj_&w8*`doJvm97a8`f3H;7ZqD7%j&U}Y<{w#H{62Mi0c)71jOeTW(fG^P zEf$9Z%k0^GGs+7k76$i@SH_T_qL$G^LJ$@`DbaTYC{GLjvIkI4AFe)Y*&JPpLw0=a z{YCky9Gwt0;nTM435)f!nUz>kGADXA-eA+fm2n#c6JXt5;gYBs@qe7ovjf}KkuFCL zwnT}QIDz#)R&tbk3m^RP9V-qz(K<5P&o@0@zI+vb@a^N74m!#Nai$S+qAFkxh;VrF zqZBIX68l$cdv|m9-@ki#Jk!B2_aXoP>FW>mwTmzib}s|eV62GSfspHg*t7l*^8Z!Q zJ0IfBR?uN%vGKoszip_u`?V+_Ao*G~a6gc5qx)h1FbGFe;{O$v5jFu}q)`UDD!{s( z!L(@xzSf{p0zlXQ;D7eBj8w+|F7V>IB>QZek4}MS9Yc)siV4wuF#(lG=03r2>~pA_ zs&m6F6}ZwsC`Arf=bPB6spmAWZR1lEO0DI%GW+J$tN8OD{2)Gh{W_818k9n=)kzSZ zalYQtcs0IB4@MlArd)WThXI4t3aY=XuRLWvJw>*SI5Ad54JQ-~M;+vBA87cv?cdwV z5Z@9JDau9 zz2NRPc+!%k-{gR=fh=qlAtR6SXd{b)9dgL8a()a}b2>Hcgk*t%W-6e;x(Xa+jp33} z+uDc#V0axYv7(RYqP+zTfb&D{9M9fxhp(eB&@<*N9iSlc(Q|PXot1GZm(r4}_S?Z; z8+~PAUj)lUH4zWMZ?m@tfQLn5LDUonWDV!)Y&2IQxCht@Se zRBVRn^I_LS^H3`&J@jdx^q_1c#Kycb_5c8c^YYcz&4v5tOF06h4^GaeEvx{2Mh^my zzckkU;PJyst0=ke18xxjsQZegJE;d($bmmQcZ=GU$tW|qg*QAz2&D(SILT`Wv*pPD z6mKvAM6}D4;pC@cYsA*TbwU|NKxU%A zU>*C*wc!ZSP{QS}5s1-P0nS;ru68J|$aM4cIY-tO0?vJAdUO`^YAA(8$kBk8Fwd(( zbUrX;j{4}ozQ4q0&(8m|_~1{0Y>8q<8zT`x+K0=3UQ@}dYxn&O3rz?*vfYX!@ z&3PG?RGCX#uiK9MFIRm2;nx`)44M8jy#I4JmA)Nc;6FB##!D@#VoKWGDDI91<&34ujg}_SjIk;DDbS^)AC}6AN zAPZzLu`IiZPS4ep$=zieCj%;CGDGzYh!)88siyn99Uyzw1V^G)S$-J{R+gOo5Kh{C zYz&{#pXDd(rb0kk%W5<&{hcV2Hqz-i@*m1E1}_VjUtL}u&vd};6)1N{{a^8D3`72p zQ7S%An?dWl2Zl3Q-rn5szrA}APt#M-7c0Hv)$RRXy?M^BUWzslY^Mp_6E*u7W#fO< z|LdWVs8+hBgIzV21_VWqYgbnTD@Xdb5Wstr)Nm{5gG1L2$~itiZyGY@=ywzueF&@+ zI;L>!BmOTGTtTwUF+Ln=hKY+7+xG7wo7~=3Po{1BA50G1-a@v4+?ZHsnImVHm`t|s zW3&NXTHj;4n6N7vxC0J`E4RRxNz&8V4#z0F6SFK@TBh6ouV1~6KmSk1N(bDp)u~xB zi^7N}uOK$lbyUKsIdd*;pjx5}0DaeU${@rNEoT!j(tQj??%UPj0LG>`2sgBsF^jWc zfj(!8n0ufl>k=}}I>Opy;w%z zV3JrMo`SB3RML^oH-P{MsGb&UFEsc3o81VbU~)vCvkZmo?n?GTfuAVmcbQpq+Tc@W zcc-si330NQVw%*wBt2wR!efMe(b1L)dkxG(>M>LKsrw$orhyU>92vJBDR=sOMmok0 zL@H)vU-cFrp_POYD1@$xwkZqt9s^|MP3CUwkj>QAMMwvKl4F(^EYML!1eNuQRR9o@ z{*>`5r>L~Z_RNW}2wym0i0#l!151t)%u?G4mhDLSPzaZ$hS|4FCYmLUMseE;@vOWY zsv7VZ4w!8#^^nV2b-f1V=d4U$J*g8Zw$GLj9JY`AubCy=*%5nlr#-FMz+IvO!ATj3 z%e|UpiZ9(t1sFOho`L&a%LPgCOqt9n$1DOUTjh~-G*he;!rfv$lyem&IBSV2lhEKS zYVl17noUYt(%{L0ujQXS*m>CJjY=|uvB)~n)!;a}AiDJDUobK-%1++`s%ns}XNE)> zuuIpitJJqy;=ld>)AnXT*QHl^*jncwyIbm6t*QUNB_xnQYE_J{kVGyLpipFklT^Tl zE60`->B5x+C<|A`F>%V03p^wjka)VXWk_7{z~BLM6S_sJJVvb+0*pc34MIbU?v}ds z58roI&ff2Op7pGEpYQ7iF*U>m-N*QG z%#X1d{|i~hJl5v%O8v*!2nlqIL~wTfax&up_h;b0Pgb=Fo=r<^B%YEk$Ji8%xo zWjawpmoIX3(+F?4?SXX6e7?YwGM~!8q6Wg z0y~qrNkR)=*7XUAQ{^Q*4VW40tPPi{cN3R(W0=VVqsZ|haUG?eLy)=(=xlOoGiyF$ zCXs0}?NzFKMW*zza$BFAN8d9>r5N0pH4dW|zs`RZp%)GqXvKeuO7Zk+OuE+!2h=na zDlOQP9xBnS5DY^F=_z*Gr#y|_Xlj6QKS~}>8+73p0h;~|G%uiYg@AC8wCA@OW9#-O z^^YFGqKnX0L?2^}gUx_2CzBkff$d(zsh19%ACt64j`f6X#T z7SY-&^OxJKRJ5vwdPt$^YZAMkd5q{|762%s(XV<=(c`~M{Lg=>Oc0u3sbNb&U>HNb z0S;VX0a3&?0g(4D@n1~Cl_V29A_4U6ar(&tB0up}kFT6U08tUlL>`Adk6bZdRyx#? z<F|}CUydH2avI8`U<+2l zE61*LVpW67%9`Nq9q@^2LZE@+v72>YvJX-ds-M0!a|GmYSIsF0xPH#VTwGQDBDQd{ zuv#sbv`%v*?HG9ZyFWA>P8K7QpBFXf?Ip?OF2_bQ#!w@2ZYE8oKv8ZD4LCEBnDYO9fPBd(`C`Pw%mc&dSdNKIP$}n3 zzPI_mvU|xFz8rCg`@zI6kza)z&1yw zWTA&d4(pxEMwg6TXi&9gsO0Ho{ zYsUpBHjZls0~76Y4dEP`4t8id#FfLV%BpD~cuS?JaKVukpH{^lGbwkXo~0!Qq+^N} zF6_FH-RF%0*OdL}I88nkB2k3QO3+J$Nk@vUi&~)cNTMsVP;lT?SPfGi%)}x>hoI$I zdR3+(CY6VF8n_*Hgnb zRzLQ@^_hW8heimv0)Fv;sE`V=P80WEKOrh>ICo<|z|-d>xF>cne0gJ@a)d;!Jr+An zFbYU%-NXnE<_!8H3rJ#e*&nPl(P%gaS7y1IiqGiPH*Z)Srclr0CD}6wN$9V!cCu&9 zf;1s*SAtxfDNhdpWX0c@vb`fy7e2}sWwOZy|29d)=3^?rE1#@FIBj@{mB*!@l19Plm(l{sTk~~st43XH`;=gcUMOl%wCgYjV$8a|K`pMz%CvNV>eb=Il z5GKH0-d+I^a=xaYgu@cTDmSSC$|6JIDQ$|cYaSANAy+-)TH=KtBO$YsKS?pm{ifY=Hq)leZT2N_PV@$9B##wOhpBJc3orjRg=9_w(uJh<@)vIOIPd-4_>niy9=eyjQ_OpCU`+HN)P{{B;u18z-)f$ zE)V2p&K~PZhbM1bu+t;uqx$W|!=6X4p7<5po77MS=u2PnOzGfQE}~B=da5#&0@#-) zQ2iALqQNv|H(t35eJkRvXIvZxk%?mnf7Ulbd+LCi8W0M1@lF1Zd99ZpFmPo4L^EOQ z$lHuFj_B#OiT}<}lD8=q+^#sxVJe(z<)OzGwJ-%(r?+U&h%v?j{&397Wr>iqhasO5 z&3I^})iVDvp{YpQeH=$NN2FdE4hDz-S=qqKdj%UhJM47%d}uoO*MH4heKZ}c{7iI7 z>~%8O^O;aA32}}@q)`-@#IqF76!Rt?ckbO+SPha++#hH%P(AcY+&YMA7|a0FDn|qswyCJ`n=LQib9_yWKFK9!&)rUY$($*n5Twz z6N`szE7a6225Ar;`pFdWy@LiR43)E2z$?<4c?IU7H#N1T-N^ES270eDh>)49;_|N*Zx^*PIftRX^F*|a4OyOdgmA^IK5Gy&_n#VOu17Ro)m^hBF;YgGj>;h1<# zGEwkOPQYW7uMXiH^Z#-Q28r~x=#1bnYZmP^50jnVaB3v@eaK1xZ3ciSo6J-uDF?yJ z?G>N6;dW!6;WtcDOTyH;J#yLnk;{7+a~3>i%&uDeH;G3jDu_k5n1q^+i^Nt^f|874 zijK8R_`=Q4`|Z=4X5td#*pO2eG45$5zTOxw6-iLu#v-uAfA8QOQ;`ZYqD@reZsb>K0K?fkz*9YX=>mPVHZJ7iqg5KXJ^P zS|j;H=qLn(jY(8ANty90Z|d(B75>GI<4kNSEgR0M6Et zGOTCm$t@yD0KhGKCPU=I95!*8F*b2}b{+)_r74;SnkdIk@qZUR3#_GfREee!e5Ugp ztnQ*{AZXepbQ4dToqwe~(mzHqFWj;ZW;TJdRhcktSFc>Lx4-2r>rZDYF|&;{dldvR zpoXa0#ll7CAxT6W&!#~1cnDu~7^@lUy-Z}WWwawq=S6`Q83GfvCMcgkIHrUS=p8_% zOj+D&>1b!7{HT%X1g?se36%~qLXUnYTcilGtQd|>u7JI)Lt2xg>6AInes{zN?MGU@?Okp-V|vFUCE6rXFPu68oaF2 z0eEK}Oj-&bK_zye8efLx&)r%7$|r&{MCD*^0@`wT^Yz$%%M78cQ_Q8iEr)<0s+*9Q z#@d*xed3IPI>L%%Huxh!X0{r_4}y10{$G1xPepm2?x@9D6}BD|Rh<|b7%@dsDb$NE zMuv*uX^~zrHNal3K#5|b$-pJLz|+*jiz|+bFM={Ft&3T?DUMi)uYBGrmq?L$*IkYl z#xl08AY(*PwtDm%;$)fU8USoNQ?oA$o(+*G)=h11GJEn#@kGoSozj<5?xv~IQ2#$P zyA=UPo#8s5CIHQB*Kbzu-*+sZJ+g4mdaM&cf;5}SHs%e3?!&(u%k336c79WD1dV9wKzX^|LN|1uactb3fqtP_m`+&n zKsG-%HUZsbBFX)XY$}=|tsP#vEI+EUp$-Fy{Y*(-HsIGxrkM)7YvC+vNZ0+3X$J z(L$fj4{VxwXLMw~7hzyI3xC(V4q1&vkYEv}zMn*9+9B&X@-HGlwEYYjR(xA4wERf3 zc;LO}eafGFIOa#mLnY&xkmABl8zQ|l&^#^bwD!xvcm1UGNI@}JYBXt*GJto^fkTCK z#VD`1J3)U1dR>lgR5Iw(1`WfSfL$@%&K-CN_Sz`}? zTv>@nPNJ1bQr=Ns(Ug4pzc#TnY^TbE1v>s#;)gdHuwxymH=QWYl@^w z0C95d4G9!t)5Faq-!YRe1u!WCozH++?yc+=;iQsgi=0dlN|`IYBkN591>pde(#Z(~ z0K}{Hfc;+O6CxWZ(;?qF&V?(;C;9FOK-(%Kmx9M2K4O#?1T`d}=0bdP`MY1~r@Wm< zm6$i{Im4);SeNHiOfPA#@&Y!EDXPh{%_T}?p*dcM{Rk#i(7*f*6?%=P7Z*Ixe};ZVd6x1ImXI2^&$8y{o-e( zr@TYr|M)t|61Eb^(K;FKKly*A^KPXcyk~~i3?oby1{K%1f|n=+F)l;gh^6T;RytTm zfI`3==8;Qg4_%0yzr>a#k7k_{KIKZ~y!Jg}PF`FD1+k~#QMp&{hxlYx@jrEQ8fZG) zM9Pq_E?2~8QC==VsHLV$=DgBfah%59gbW3whnU06ZCcMAY7b_7TjaKR;l?J~IQ)()ci2Psy>>l+gWGM32A&oF18`kOh63o2 z+!)vi@)=uvU=?sI{PVXxe&yzPI;2nWp8?|V@9Ke_Wu?Ovb&-O4uhSA2hF8MHu=1P9 zMx`YtSp$LIg7F__Qcj0m>&LxS{09wzRS!1f7l4M*9+((CiI!7TBQjNCid9Sl;Ok-& zGn7Y3bs#q^)z}On-idJWz#uK)0(Ru0m?)VzjBQN7#C7IN^B>m#shc6{y~g#>Q{Wha z^S+TGykI9^(4AT=%-uVYw2O%9xcXggkN)r|2~wdPhh!*C%7=Y--f@S&{mpN&3l}cv z{(jh?nk|)yKLlCsgScHil;M|yv>J&A$@I{&m-pIwwG9DKtpdXc~hzg?uj8V-Q zJh~7x-YJT!qSkH^NOV=d8-uwFIEsn7Evlgn1C8rCRP`ClbL+>}F*6S!w|d_;YjI{> zVbS=_=tIT(wBL=()6}nL08su#Pc2^MiG7C7$z*!QStC%G3hATzswYYZy556tXIZC2 zM;Q;MPEP=j5h7A=WCbnG(`=lgm7;un!N}1Q0&*KQkyCI{?&fBEiy_y3{U=2}3QRTcaK zxbGV`FMeC};WIo~%Q$UgDX{TVpHTOXcC79{Vl0|mQ&Bf|(2jOKp5Krew*X{7o4=db zMCJcxue#%Id+6TRT0&G8P&C%8Gvx5tCcv)m(I}k4$%YW7&WAC-aC*W2?ad3hZ=A6_ z4QYh`AW>7(VWd4~pi1>C|L&HV^Zd9s6mYLXlH_YF$lQ!71b1c65vt~ z7!=b%L7pwPVNK${I&v4oI^WLgnIJlYO9Gc-tXr_HZNs)s>_o{mg^)r5TvfIjD56P9 zFOf;REU1ihTn3=h3H7GHv+O!F9hL`4+J)WtVOZZf+^F`V=_(awHYHh1c!--6F}gWP z9Tr1#)KK+ipcd3XXwu2;W$YrpV&V7&%Q>ag}-Q4D;fzltGo>tH%RGHe5%~{M8 zwdu)b4d+}a7+P#uiMNhDoILmA43ZY*1e(MOS^XV!m(8AGHp&~IuE*PH{W@~l%r-=O z0jdV^>p+n_jxk3@V-+TP9Yb0w9G01mHVl^KMMaBPVb5IFKa^a(F$8~t7#h7L!q6F)S z(AmGrmF&p2rjj}iq87^(35J0P;DSIS5OWG77)`@YE({1HR7ZAQA__V2odhKWspje% zrn)?IqcU<}t3u8v+zrrdnQVz4`(!#W3-^g9u%^8atz$`!U~~l=EB|l2`4j{*TT!y; z%Cr-j1e#pj;l^fNo_kz=O1erx@R?jO>EXUgwe)l`E9J+!cQM7OXdF!>^2;187=TH~ z!lmtXRab)Op^9n7h*%CCHW94xAJ~?MM1!030ZAj$4h{MJutt+J2%Tctq4$n9)G~D= zgP@aH{X)en;~@7#$|~SCM4+o6R-?BT|C5N|*a-#u5K7zA5kRrqR}Xsn|Gv7jTO0q6 zjsL&x%6>E*n%|1K%vM}c-|@kvfN1HfX*kCHv;=)c35HD&7E-TLT%U6m}qT2Y{}$Sz!GM^ciL(zL3`Ekb=)t75FM7~JE{Zj+dn z%h6Z(vy=%d1A8j3rp|N9`b?itkHah(8O6@k{||D?S+nWTk3qMUj?waH2 zElcF70V1}g>G1UJT@5Jl9~iv6UOgQ0jw>f?(*bxMJ$c2?V3I1A_#YEBNP7nDyJ~$Z z3^*~DGFpwT<^K)^bcQoIBu<*jb$aM`lv6@jMz||)XM?430-IA8z)MAUGxVk)5ao2r zE1X<%M>V7?MtTOoPHb%AztnczPwV!1p2@%XMe-5ArVud&L6s+@9Y$y~X4&#rDiRzm zG=<>bDZY>sn+Mv+FV zILt!2<}fq0GrmJmLX?cqzKQu{uU0%tG^jWANioSXfej!aU?OLiB)SCT(s7DV+Dpxa zhg1A;%o{>eCVOLF_aDoF(v*iFT;dJB7eO%jDz`9{)v(RH0kY7kiPe!#Q zAwQ^W6BS}wy<AM`L{e4~j-XWJ4Cp0^q~z8fpYgyzbA*Zx?-f-+ zo2dX`#5HibrY0~{A$UpWrqfz?dJ;8a2SA4h=J3uT%oR}&{Tzu@3$2__W$79J zpz068iM zKt)5Ot5fWe8ySL>a|JTy+1D>70ZMNi_AO0^n^6U(HXX|j-M{Y8ba?GWeTFwZ2}2UP z5#|aQA^5&L*vL}|Xxo%-(;zgZ%CVX~`O<9o+?Ss|G#ySXQQrhXB|(&*LdaDLDWwER z{8VNhON_1spZva5DO!?6JS}NpXu+xN%C(X@q~=;e4Sjo#KP2I%kWh%l{wcgl%mel# zo+!7UniTsoDC2()y3n%xdc|lu$Z~%x)gk^DPaX{o#m}){bYj%8CtcF3+V$rpjvr}h z;hE38SY2;*m1ean^jfhJ((D)|D|8m6bAxLaJ5i+5i#eU!WUFEaE&eyz7n%LxnefS# zt@S~dhi_kf=iUCmJr52nmW(qoqQ!qP*AS$EEbt{#Z807sGIRX*M%l9e>Dw1_96RLJ?-EhH4GE!KaS|+pqWKdLSfqjmk8n;nCZg7=c#Z#7x5ktX48f=4 zSXoJlA!1^;f3SA_r*H-nC9S+%&$zuFFfM$oD;y*Rhk&eMfp>zbL1ZjFNcJwV#^$sn zae53VSEqZDu)N;=s#n>YAAUF>5FOsBg=J*kXU;ZcO)cn=L7r~N{8gs+rglo0iLu$N zuPzz^av?bjz)^nHSK8*0X_KwuG4Gh90?Ev@JP1MAaP z4d|6g!3gxPbh?FfRuJ9FZKO#@zRSRxQ5lgjGzO_*rysA(Ws>gF=oH+_eeki$4tx^@ z(Y2m_N=f7pl6W+rfeX@&8`Q1#Kdw5-RjJ?+z$PPbq*JXiX4CEg3GVPMadQ{>yYd|D z$C2obpuA^;W*WI+OO+>4)cIX8l|ce$R#_Achb^5K(i#D3vSkLYg zm7I@FtxX&Y%~d&o`_}pN7-^D?BB#a3?*GT)zY1!yZDS+~#{W)+#(&zsS45;NApkrq z4sohXHUR|+^G1$mK~%h1okAwS!=!JR*Ra$2xu%W(gJI>$4F0bVk~EsD6NLDzj`i=? zTn>BHPGY}Hs7{=rR3%e3D-<%}Q%LkPW0Cu2Nxr8qI5c9$(0ph%_@U`wr*WG;xc=Q~ zbFPu1dCKTqaRok+aI!1x$%h|`qdCX7ju!5Eivw5fhsla~ z2|JO6X>;MGi*lqWx=l#+`RuL#F9hsi^M|*4i++2Ba|g zxxzA@d5{+qnBF)S(Zfn0fTZ=}f-+-wkli1~--`dl zKocy;Q1aBF>G0I;-SPPErLRNN!QX!6G%oEha;exQC=8eMCROIVhB|1M*x;ZykIa>M zA;UQ&UqTph-!O9_W~v`$qe$dE7MfuyA)5avJA zEye?i>1_$D0P7Z4TKFFb$Z;4qtuAl@USjLZMJo+n0Ngim5BqC!!&L-V*z&Hm@eBuK zA&9(g-Knh^(mGStr?N&XLhm!8aqCEq*vQZMpLe&Nq_F;b&3zB}o8Nd1XAL2GV_aL$ z1i*|#ZQ7Ux9iax5dqVYTjfav$L5i+iUFErF^$2DiOb?cL`+=y~)frQhUfvewM}<@b z72ksqFEXpClhm{{yxxW~iv%F`&|2__mO-}=cDu0~t0oAqEMWSla?W~9ceKbCi8nlRLnD8okfyy+6IWsYbPCU`v%T*gY$p)6`_kpxA2-}9NuM?!C;OcBP89-oZ zY>3r~*=F#NVqSq`(^cS0t4hJ)qbtKHZ-dgmyNOoL4 zlee+Y%{EzKL0GwVgg6M+f*|pgSl=32jhjj&X)Z%FYy2O(EoAwomADGyt>G2Jh*ui6 zbqFhGtV}e0Fywyw`E-r{M)(mKl&sw(!6O0$ZN>ViuJbsalD?SKj058g&(D04xMW=pf-Q#agh?<-KjpOf+R<>KL#cU|2tO$QVi0tlq0=t?%l9r+IS zD<)ESTdq=Y4}NR|CGz#4bH6`XS2~;=UJaNwSm(NQ(ly0@*Wydvi%G?FWjgB0w~kcE zvRYQ;a~T3TMMdD1l75r^(G87;aHJHW4^+&R8fp1`sCDnIt%4aZAIshi~dn+$!B!SjpEvuTbN@@6iUcJxHZm0vjRpwsfnKS-}&mKXKhXKiR zG4eSR(U7#QW}qA-0Vwk>&(1i~D@5`a+d^TclF4zUFvGp~+p^9ZPGx<3|EnLc`|rLV zW8m3o#L{7|C5v*M{L@pM0_X82xI1vQy#~pi3PZ`V^O@ThVp;9b*{%`6{9T9M)H|-6 z+C>X%IsO#?1O3HLCU}cNFQcC_dodVT#s3Xzx;N)RM(sFQTXG>e!m%x??jQj%$3@cG zfDoZJ3XRi*-K#u`ibu5mT!hkRa620Rt=|H%OQ)m1=k#>ZkDg`c%5t6nr%*(SxyZJ*DmTSG(ISR{pR)!+ym9#LLZqOYrvs8I?-Tx2l?NpHg{R+_ zT+X&|A;$pmip{X6Y7KE)rI8w#`$FEnJ; zk~6U_Kj`uAe2v*0|UE1n-6d_7YDjFx=Qp;JT zApxYrs|>+FhUhHc^n=4#$iat$vQRXEOh!8B+0?15W*@2Zp|eJIOwbqDR}K^#4yF&z zHKxfzh@!?HpI}2ohHygV5HD*KLICCjLuY6~WY5-&Q`=@`DIvTUM@VFm_!ZoHw8LuJ zmM7rXZ_sFqnM|K)u2Lg)DAt7JS>wN)Yc0X3YKhh*2w>vtg8P{$G=fay{}5{3qEnrk zBEw|G$mHW|V^;wQUu%#!?ElI^>QCI**=ZDSrj+LZ7YlwQb0l!it)r+$R`vw<0S zg;8Az$la^iX_^x@sX}*E*HtM$nM`wa7EL}WX@*6?E{^A-o1DLNL^>kr68oA*theI_ zQ#1Pvr=c)d)f9pZ)N`+s$lWUS^>?Rsh|x(Vsp0Eu?!Vu!zy1v{X}QXV zQ?>>i^PFJT%OCB?`5eSk@}LXF(b$I)!7DaP2AG6fvF-}lQS>Qb8BD5Z+JkOAsB@$; z3%!_DYr4X=R|+&}CAhV0v1dP?4z53JZu)+3yKnbvWg4b&vpfs1+ENxt+-i^`Z08r% ztl-ad8FLgf#!XB9y@k{Q2}!=zf;B>$j|}i6-zx)MKS^%Nzxe|uh&)b!f-bXIvd(MR zk$M?D3OJ@)kD|0RsfF~fnOr0_bob$QOakf{-wxp^J_%TL#Oyl)nM7>0y<}x4ezbwC z5TJ3IYidCK1$9{G*vc&^1FK-CX4UFA6F@Hx!z4rJ@=SGjSDuG$g~}sCV!9P)45c|r zfn)!^u|S)ZKEs67xtuZM4GKD(pf+ujWIA|_!Mi1en&23p-=qcNp3FL^tO^K8ycBte z#Im5QU{I`?+E55Gpz$D6K`e^dtNqky1STW|>j~~A9e*ePj%aK!*GwFIla69of;(lK zm0Q4vqa0Gt)v-vv`X%@+A`L}vGi=I7+}O!y)iRU@%tXN-_B;=fJtKR*jHnV|8| zI(!p$E?B1ory_jjX_ev9bXa~e^CZe4LIM^L{nFuOX*%5Hg)ax_0-wPo8FV``e1TyZBT`b;|Hxcp@1 z(sXcK`DQ9Z_;f62A-vZ-_^4Q$G}d=@Y#zE2&w^u|;snoCf&%$?rX~@&;(_yLClvr> zflnyGn}s&TL+IhS{xq?>%kL;!6I&X;h~YNDT00hugknt8 z(pj^fq)P(e45cN#6mn>u(ZXCSgaGd@QEh70MM)qb&PgnX&4=LTX;lz6)q()Z!Ab+( zbMB$1@rzz`s9a$aAuSYM<){;r0Zbnic1+`PHd>UpIsPAshcr;e3+)s{)v5x&mKeo( zi~bNS(?9A8PhyK&N;?x@j8Nq*9k6>#E9T^+E7`Sic>RA>Z&{B+YSKY zCxNlzRt_e~(h(idyOTC&ly~4yCyu;OO`#rH_lJTNx9-^nQbt-RBe~TDIsp*SA4)VB z;xhhjLslM?DY*Amh542%No@uPQJ~l^4U`@d0hrGZ!P6v)UN~!Eo>SoKHx(?b8R43# z6b74YC}ge4RSy_{5UhpAXpEXN(> z#0dqMc|%`m5+R`}OoEGd2cQ$mM6+F@a*Tv3J=HsIs1C6tb@EIoS~aaQJfaly{Pfd)Y%1RBFF>L}Bu-rl` zi%7sNa|n$|${Q_p&=NI2=RN^yw89p8AELQ|| zG@KLw@}^l@V~M{!28N=@c^LoYwt#UmS21`Ci)&_}RygR^d1XAGz$4#^qsjFnvN~3I zERVq2%k!Ii{73z?uNWT!136D~f2XM2T9XIv7~QT6E6%I(#}3@Kg0bAUKof06M2P=$ z9=GaK$`G}{iTF$1PH-MVx0k6wC&3jnwB%qd6(tr^1oT0B)&i^84^4;lnGO_X)@lw; zi74*G$l$RugIPnkQH%gfn3X8ns1S26n+^#jqoYP@YNERiyWVtp-^q5zDzoG`01J*; z0>3Y=5MWFxY{&S&uY$^J^2E6Q5H3^LFL_A#Uq?ay;o^FoKpjt{(~N>v>?Jp6&H!oc z<Ll=LDb;1M8u4FLIlK4M~p{2HForO*ARHvD>kQj~b*u;O^xaF`=m|29@ z=sTOX=$gm9(!u#F&>wwGASF2&>75^bwdueRRFk?A0G42* zjaXCbl9*N2nVEwufy~nwYLxpe`_k);LOSX6}2Mr4IMr<*wk zXqA5#7&7(Y`JRq#d>9lxjh&pV)G&qMpdIagiKx(&U}fv|w71wN2~{ldARcV(N(&_k zJCw3x08R1*+F^|`i6DX6LJ>hGalATTIZ*^hiy0|vMj$F;ga&KzM81jcrrW7>_*dXeLfb(=wrNFD8xlG6W6jz061TJoxW zlP6~^QmqMT+hvXuP;7Gp^k7=`|7l$MxwU|4a=Uax7lCL7WJDsFqZQiw zX%GX@L^PJ>PsK3F^DrJ~-qs?2^Nl9`BRQ{dRd9UfL8URW4a`XL316m$ZS5vyt<-vK z+5o^Y$JAdyD7rL6qU=m8!_Fgv^;fUhVNFwJ75~*L%zAeX^x(OQ8lY<^lYF{5!gS4$ zG-r}dSc6vGoW+xu1~SeKjFrVCEg*IO-vEFBcalD9$<$<;glN-~QNi~PBfNO{^Y3oD zY1XjDwgTGqxaA4+@491eR~=Y8eA}#_D&`ju=fLj3@$1(bLw(Cov%NU(6F`3X=zg-l z6`%j|Gj_T@2V+=B(uH~-UbIR8A}Y_X`P1@N2y<;Ttfz;I>(BIM1*y-p75@k7@l`J9 z#^#v}ig_tITtDMa8VC+ae~!X)l~as4#ytBt8*g${N}BYI8P>nc1(BucAf}cFGl!{Dhpil*) z)Muc!X6>K#eFWpjv_(fz*Bv35sCrNGEYnty9AI7Z?0Bx%v0+qHYPIT06Z>?erh<~< z61*u{wIVtyFYG8Gx?q%Irw4z{S{AJtR3HM2Na~P&f)zRoOt!v~abU62 zJj+W=Tjb009Q!I$vry|)vl8@`o?UTbYHB9_Z_+rZ2A1g3YXqAB+ZvRzp!Fk-Ey2Ae z|5UuG2qHW2(ZXUR@4}dFT<%U5z3E77(Tib&p`joLubK%c-+`+!5#sygc_nnv2TYMD z)cjHaAoCniM1u|gMaiVa?$}8xfiWo9tyK3y@Jx_zzyKBxVvM2vMo>G9o)a=BTfJ6Hal4ftpiAU**XdB!X(P9y#=&fvmT){6;I67nTXNB~Q>m#eJ!ZVVzI z-t`#f6E+Q6#?1?ZTxcu^De|x#T!lU8I=zS-c;gn^FYIq=2jx!`= zjRJiv9XPf!psU9TRs0o$5VJCk|8<%dQ;zsQ9ze+lQI3dK;W!n#j$<6F>tP^JHhi-V z$1hfj?N#>Ne>RhV%|?ZZy(J%eYj_}|x_g%mT@Gh&6=JQa5p|$*OtHJwmApI(*P()G zQH%ddezDPRk(unSnh}`aY5~rn<6=xS=;2_@`|U2^n~uX?f=(IU9bw1=D`B{gFrg~( ze5S(#!-py4$$xZgypDfdy=xgGjA&I*GmwjE*5R<7RlTLyY4&TkF8CKt`8{JY&c(jh z9GVVqy{v1kXrekCd?c;jd^|hJB$ex_p&@V=PDrUEzGZn&OQmf2 z^G6|&uzs~R9bWtT=5R)F27Rw37iLkloeU;`lfEhe&y@{p3BEDj2wS0cHI|2)nyTj{ za{g@d;y+t&aIa}=S7Z~%gC5B1$4)g>J)ElY4#M3RCGYmMv`B{YAFOSIt@UV8L=Ac;8<0hVdTle&2*eZy~_!SXMV=fer^M zKa-5m^5L=-F~y4*1nN_=)-`5U{%=B<^OVNZI+kR`971Q~OH{HP1orZ(VLt+Dm_Q(* z<-eHUObUaNewxmdLfGUgZp`Y;V2M_vJ8BZwN?7YJC8_KxD>gicKPQjWcLB9JI;9g` z)*-scPgdZDqzft%GqECg5?~aAG5bGa*lO7Os+1EBB!ocH7+M4;T)0c(R!5}rqeMrt z2U8>}=gxG!>XF`Ln(|)frvEb?f_*dz%w2x^5aRUA4}J9QrMjlG6aiUKvM9I6eKdU% zJ>Q0a+X7CMs^957GmAwX)2{|191b1X(&R|t%P-6a*tpFiHf zVp%0@B2y{L1`lDFeu8nF{HMIV)LOL8223}eWZJA6%`KYe+V>e4ssTA{g82!fZY?vXDn}#yp!;&H%9X7LidPwAVA#*8HUmJ}m4^fjYw#eLl%> za$j;o5)=$j&ZOUhrGV$W!|A;mI+NXX8+0v=Kt@O!#X5a}PkY7#{@OHV={U5V`3~$x(F+?*1uJ;nAh;Dbm>{{$EF(3_yVs~zP65Ts{vB^C1t4KPy-y6{ekA__&2-CjQvVD`X&haxs_ZDa|K~KJzfM{_` zhVysLX?!`PvWQ|x3|6rSpSRBC8k}W$J^UjPGl00W{|*0F%o}|tR0^8nq4m89jy!%-84x`PhK%rNI+&Cvk&icln zWI<)iUwJW!o|bM>3?NpNP3htis^8!<1)K#=ba@!Z`Vd@i&AH6!_Q!)2#t}ca3S&A% zQDw$o#*m$9kNG@_{6sSdnEHSU_&8r=&|`~02)ZU+BfZr{;%<$G&$91#ID+tw&j>DUJ(K?k*^XE z%`CW#Mpj3OCk5T8GF`=y(svfadgDN;1T+x*_15xA7aIr(Y`dj8Xe5i zjH;?+6aXtTJ_;kQT%-~dOd^{ajQ|DS%buH?7f_Ncn>%f*Aklud7F zG#CN>p|uulEOR_+Hk$v7ol45iBg(eUMK0ZjPFYkM^-FuHm+b!dm|vND?R~GeSKaaI zK_-PIuC^6mq=AO}6qYLcFCL<2Va$bbMvb`s`IVbH`}_%OLEr82A^#a%EuHw#bnt7J z_aR?$1!8|i2v$FRrunlDUbjU!Zk1z zOSw1We_ABOxIQ$}go2d-Goc||s;j6%T@yko-wRTTd*-#dZ|6N2CMb+Uka-%5pLXLM z(@jj4GJpL;4@EuG0drTMtp1V|PQ+wgLSYnJ>>eRUHA%SAj>EQ^FLwsCtEKWCIn{L7 zir!|+76Kdk2HiAGttNgUWeT6kHvi9mYW1q9u<~0tp3>oRj8?^lHhF>}>5FE}nhLWa znFM*K%jcv<$+L1g@>hq~65f&9rtMaaQ(=yRne5r7O<8cwvrKN~aX5D&KAgpQWoQ~s z=WyPP$nHgOnRn0tmLMQ9EwdWF-)WDS8QF>d!!1O$c+3xj6Cpn2)*JPAodQ*XBSuA` zzcm3sCjju$zJjQudzHQV@(36AM~!05|9KJ(m^N5(yNKux=lVK%elbsK`cE+mO>iA1D_FWn)XvSZssXSY z86f0p{vrNXN)_V9X{QPe#jC*AGSB{0?n1P^N3(3WX;hubP{su=)^rm(XQfxL)oTqX(AJ42SsdyR*)7oKllg%&Sn3O4`p2k-{Z7!@r7Y`Df1L;j^~qc%(t#s zf7S%Ng>Gz<`wwh==)TvDrbCnAHvS|1%TwKYyb>ya+a|d{$NzjE zLbrEWRW3!b=+T?aZIiK)lFI*EvTPji%%LHNphZLZ%>RRa*%LlV6pa-P?kso4&Jq2JvN<}@5))FBZQ&GEQS9pEOYt<23Mzwh^Z!_7%&j8 zftw4%uEgcxS=22wyz!yeElmfFd5#kpv#mdw)6p=_PEUv)ypkM%kHL<_a6ym@3WULL z#F7aI5a@cuj>)KrsW?*w$kR1{@dQos*z?So&31U_;_yo^hDHfH2}rKpi`!+!-A*x#gENl1qZnOe9A|x(Q&H|N{Mm=?+8oAM9O47%g@~jNPW zYvc;*+~p!L{C$#872Y5V7Xw1;HfC~OqGGTZ18q#x`b>v$_W*>QplZ+|a#tFGsWut^ zD9DO`jxZL%C2lEZOW zBr=f2D#jF+@DKK_NYp*ogx* z=B4FlhzogG$DD^xRb71(o!u~H0z1()T6Z6s4*uZ1_m=~?0WP2$8xJW#48}gus;2{I zG2~T2ndu^3CeJ3vttf)QqpMER8CbRupJGc;){Hpn1b_o@w4{jh@pF>wC{m);L5bp2 zp?5ek-beYVm5*%agV8htl$fU25R`!zy=D>%(@>8_#Avo{g6Li%#3)jPvxffjgy39dPaMG!Vz1Xz}Kcmhm}4s3FTl_w8#%b6$MGMqHBFS>~HvJ2}|Q5 z+6zX`1G|TN1xa#FprI)bEOg}1{4CL}_)N@7knv`j7$EsQ=G{pXUIpUmuW-$>LmenF z$j#=Ax&_T-(OTxX@Uh&J>Ltz9mV&62>!ri2MGKk-EXPngdj*-$IF7xzC8g1+P)~TB zgag3Bz5?3vf+&yF??8Rxq%}6ebhcv1luGzbHw~Oz+NSSD#Xa6z3a9r{#@5GDOoCx4 zYe0OCMjNliP($eD{J!(4={}1n$2T8vDD*QElugQm-sLvZ4YK=k$oUkhR1y>6f-S9JIv0mvv z{4*9a0aJwhE0&-LG7Z<>{CI6PB%R-`OTATsl`hLyOM~d?!#uH{X$Bjj0^(!6qjE-Rc zA1K1>0n~Fg2CSl`rKWfRW2GO-1{`NdJg;+#eD&8ja;WJ1u!nClZ|xiJf;0-R54`#{ zcIDC)J*LHfl?Z}2eVC@=?4Dy!SrK!Vgo^TK8GHSFa`^kn8>8tUVFl0GFpB8#|Fxy* zaOsq^Y5cET&dC1Sfk^;SdoOjm5k6?Fn9d6udtI%@HMsT(-y+t$P~wrq|0+{d4jeE= z=K}l4?V(P7m&dQ3v59*U8+@`KnzA!2aqeWefkIkURNRmllg$rFwkos=giLShW7XRe zj0j%wKcLO}-NlP`@wjtGY#*!`l}dr@OfmDSwKJN<5VFUpXfqRGTYpz{ij`lA;_uJ)Krg+c$R@}&ib+9Of3aADGL2?Mg)q8UWnl**W#0Fhh z1vO&_!HxH+q3HD@zv5ugoidhH8%%GrQ|}uRR-X*MH#6#&LQuILx>Dnr*4;Tsi6@e- z%kcyA*hb%UV~g3o>UidDWpZ_%TQw9iWC=BvXls2R=o>ekRvrpiL3k|ZhfGG}dp&NC z1_4WeL~bwN7k)$JkmH8fDM?Wsq%8<$PY5>ggscba4@UtLRcV(LO`Qps0!q&U0F-A) zmpg|UvxH(fjKXORl<7Wz3)~%4qiGU7^T^GemJjkat#?oSNgozK=Or$el!6CXnPi%T z_+62vMFs6NL@4lo(LWyNB~i=Lx5&AdTE;33j$L#JMA6pZN+I$v-~h6~`a!W)=mJBc z3ckjf+E)7Ekn3_4b}hyodNu`vly4R~{mMZdIbL@ZN6B1AQyEJ_M$aZzqv@iuYz3xawE>!hVy z$5q;)g|yq#1vNy#r=7eeNO@r{^q?yTOp$k8F~7{U7wigju_Nxe_b&UhANj5=c;Hp9TWx{i zG6wLO)M*t;^QnDw?or@E2xFx|?L#O@e}yaN`3)tla(2l`aRbPd=I{#(F~(XoSVcSx)C+15 z6T3ZdvalBZL6^tRf7!blYMsjt3v$UTG zuUj;5WDwB4G&zi-+cBNyLEE2aLc*Mi?)JhSG4$_ z8neocDxIxjg~AQ>|DDHv-}1BDF`5qVyn14H?uOm2#|dU3uf2Y0zYhG&?Hwf8;(w5? zW&fUZ4KZGuIf>_~4;u$fLS~Zi3$#f~BNjJ@bdFw4Un#PK5P)mlyDJk5u za4C6a$lT`t=7nblYaH~Ienb6&qzHetKVxUQG0&1*kz8z%xZ!gMvu3`bz>C?`&R&#S zFk=@_>;%STA)e%}N@6SBd7Tak5hM}Sk62Ge65y1PvJ~RJ;5w7Sori=pgJIzit9o;w zL?v_Z>cuzS^u}xJDPMf&b&Nr; zLSk+q5JMN?{9fu5V{-Oo92RAjB&E(p&KrY?m;gI%QjS9c>}E*j+H_``0(+|;H z+I9}pqlZ=SS>O58gy=<#I)OJPqYBn>jC@XK^VEZt8w{IWme^MUM^Q=lI+=%)iW?XL zMMPAI*(;7Ztxh+lrK9=~sY$MqJa7U=BNP_KHF3jV)3-D68yIcX_#7vPRR~3-%_Lp8 z%|JGehe@tMa-#%B<+R?i8^JkMVTrC3=-xoHv@zp*#+jge0zL%I<2io>j3LD^6ie{4 zqIJ)vof>xrpRy&|GW~dJHkg>qa^}uDj-fGYs!jtPQ&a`BzRH=nsR4m~9PkyUvmGf>!JyRwV8xrcv`eN`Bj`n5o4 zK49HI7)eb|YG!O|^MwOlJG=j`hj>J}L1`&j%T$k*r5Uca54FY4 zS;mVC!t6A}u|(YXH)5UV^7_m!x*#}K#;*#of+sncyNDDQS`2Lv5%{Pu4ZnhrG_ZnI zEv2ysYh8Q=vFGto{%>ouX`grgh&vCJB1WWwq2+3>Sd%9<><`8*8~IjfzBkgfZIgkL zB3_ieE@SWasW3^~-P-*QHX2Bht1Jsxb}>Uf^(p3(El@9;W9jD7JStenHo`h8A+QrjVPEXysV5VM6M2R#opXhVfV3oT}F(Ol> zDh!dtR8i{&A4f1`J~!e&0AykjQ#2WuzG()?v65xf6PhIzY?QdY=l=>9VT|jkxUhoI z7N1JwC>N&q&q(5&l+#7Uf3cf9j&YBqPnJG#4ml%SB^>#Z3^*p|3Ws1-1eJLOLicuR zq==Jai;}bNksyQ?^w#C6_)vpZm!901o}N^@e(S1q9+N!0>5bRdFV~e0CR$IQw<_oj zdSwye6(T}r-V{YC1HO8Nqy=~Lr(=MrSs>X!QsQpZe$NOQnHYJF=D-cgEB_wByNMW^ zBOW}xlnNUA)g1BP^6wn0?0o&pWFcxYFeW4+$wMNWhKZlPK?29f2b>p^_YHfgA8$OA zj+!0;pb#Gt2_ZTYAMw&?MWBdggd1Fw8UuDS5GRJ8C(sQUq)iDMh77}sBtuOi6qwIE z8o!II9YU!Htyz%J?hLmMl(E&u0=XAMHIGIyAIGEkvEGPFrmaDrVtVV)Dk%-kYVma9^6yx{X79*}H=tteA;Wh*YL=@#Xf|m4cQd_+3$RXGSU-xz zLog-am$6A$z@Dpb@?7c=Fvy(7tcPCh>6le`X1bW$XV&LA?EH~SVKjEZpXK%Dv>qy< z$eb==^=k7l;{)x^-PEZvjH7`qg~jqZu3{dV2$erlIvA%KrOOvD-1zO~imKgn$AgfI zUd*xbjrjtL1hWWeSe25O+L3hh$e>F~sj3-*r7`{j8s-h^$1Ps{f3#nbh>r*7>qDq>ywQO5s3cJ0;6Lfw{<$N~nq zl5%6Pl2>ZVqTxTx(KDu4<&R^)9z7>nu0BELu!<>94~96C^sndt#6a))zxbV1ewzT4 zKx@Bjdy*T>*u-gT5-C+_x9i6c^4)qZJ8Pb}w*F#FPh+j5Wa9q?ki>Z0k%WOSa)8Z- zOU?jR(O6FybyjyVfAAg@gqM)QGT|vCAdHA0yzywIei4iv*`LwIAAa2%;-wom?8O@| zRkG*B9)=(D@#eG!!c5#_?v!Moy7mrd3nmboBFaTm>I4P!<0}NGG{{ggWPYD@W~mf) ztb&T=8(z&*0r-UK=mw_VtKJ_xiO^H;c{>GMn9dB@EK8+KjtTa{D@iZ~HztA^y=W5< zWQW-@sU{4uMHDSX8M3o-eirE7El(4^2GAcMZ@T zy)2@fTE1MP0#f*rDN9ELh+O1uz%&Gfq|9AsB(BDcTnx6jl+SKp$FDpZFB3+jG7R7B zA#b-9{bFJ_#oc+arh@Tw;TiBXA`qv8w-H63q}e9al8wCaz5~Fj71U`}1y{A=8+lh^ zz`~ow;cV8w%T4l;*sL$+P58!Sl%l4btji&IH8{BZIuC@S6hO;BTgrmX8@CF+6vSyhgruZ-O4!q4#mPXs_ z?ti`g#%-iZj4VT}*PK zHuXX^c)rctpe3hLdhk8p=1*JnjdyGlZeMuZxbp-4I?FtSsG~+`g#SV;?9$S{6Lga z0$stD!r?)NLbT))0_A18%W)SjT(Gyj=`D8G)jLWuC3NyN0tdX$OB!&k%8!LCN5nK8 z4|;401>-;}PdNy!BKv5K8Y4&6H*cJ)tYVHG$r%8(g>K^v!6d<9PcC31Jf*;RE=*A8 zPF*o&j#}D{h+cVlS|!D7nZ|emiqlnfUai$^GMVA#ZG~Sx zS&{lbf^!mFI8*>2Bi6M^bkXrO^sDr2ZC9uhIz|wZ0cHe>l?Xy8jc_3^>@BiDA;$Aq(WkH-biOGw3+IMbipAb4i`11=)rXF zAfr>44%{QXeixefSqcoMm0_6n$$^yq8|UXpPg~mOfqXz%2vKKE}I3rBRN0kra;G2f~xV*Fjn*0XuMgj zR2Ui<&wjANxuQJ+SzC4nQF?fG@MML`xShdxyMXD;X1kWF;VklR+T;oFCT7MXCH{|V ztt<|J2yTT9xnHeVOf*1?&sl-GZPS!*3Rl$CxSluD8t`b;2Ne~gJH^Edm+TD>JZu*) zUaT?9CXX~aW|~{&{{}I59UXOl58^-G7f%)cmA4y*>xoa^yy!Q>MK@hnBL=y@`SNKz zbTNQQ;GG1c_IG2@Fg%DKasdVI6|W5fOi&kFY{3`t&In?`{Y_yMA0CL=dF~%uD(go| z*kM{$I8j-c#^Q>M5ptL!L}Y5vla_IC?jHQP%0Ji2V(f@$^&4EH1F?v}(&G#FIM4VP z@WxWYdbqX)cf!5mVbUO|of4?xPlBwR=9{jGr0GbYT(7=!{8`r^En46*1tAB6t|PEG z9LDQw)8Wl;wL7ldQIV%lQbW5-K>|Jp-w!RibS9T|2r+BhV3Lz{R1wc79zuKT1MPRcr zz-THNRF@t)Si0)zBi&`~Lh2#MB0NJXlcMF1X6UZGn(PUGQV0TxC-YOrn)iktUX zXhG|Uqh9el-k9jnl#{E#Gta@6Gp?;EvXI)i7vBEu#%MhHt>2^j+CwVssSPS)93=mSB zn{g4TOZ+!)O@G^NSZ(05-=T&_dNY3?Qx0vRvxQlu(HL-;Q#eBeQxDB8Vsfc!esCVd zA^s{vc%?CT5@q#rn<2#(Dgcsb0QB2tT(bz%M#uQ;LOo|8Evw~Ci4sFY$~7?zAxy$W z@f-qOwcpAH&API6fdw!Ii&fpG%y7_hX=ys#|FB)yT`Xy}_z!WI-d-6(4bUNGYm<1z zn6Iko{yM(Pro(b;RtrJNz=)q&L%sF#i9K|&-Ehk9%#Ajea2JJ1NsfS%1~ zl5sEMqI4h#)65S-%UrN&S$RAnKQl&hHa4TaE3RZL>9TCcMh@9m=b>-N>>?#Z;Mv zotrr-CtDDfm0LOp5=em~etluLi?_e|t$yc~tGPQU72ifBAzwT~hAg}HqgAK3ie!p^ z?4gt}@;fRLmYRo```MJmNK&-hDIu*6G&6muiD<2o$0|x9G=asMK;ZznJ7KN5aY1#ySeY>2m-U3gf=s%lmibYLT&VqMW zA*s-y{wFzA*;dQddw?Gen8sL2WlaD4Z)fwUMlPt-?zt zDnpGvB=pqJ@nQtM+Gb+vUdHaU#C{u3RR}BSV_Uw#~{PTwb;nXDl3&~y=IvhBem&i(ykQJ8h<;w68>gNLTWg^TMmP?Co^za0Av z7J%^VXU2cVE0_3hx*$`8Q^^*Z4t`@_hajZ0a7;gX>*do!)8Q2I&|?E$juKqre^Km3 ztb(IYQf~@Nfm-H+1&T1sdaJVAMyts-5IoueQfhz?#?In`^eR9`xoi<_rtGK9sq7ko z&M}KKx9J>`@8lzqmZc$eVv^IBF^3<)L}y;x<3C$tmT8s{WdaCDlr@g>HHjgAZt{~a z8J}EGqzwMd4albUU{O1pV~DK7AGCFMF(7D0Gn}Z0$urB zp1cm*6MKb|M1ihc-Vjtm#;TJ|Dhmm>Yf#!r z5>Y93%(gHk(>9+o`I9gVo$!ADu!7`T4I7Dp$Q^I3?34!^ zV}hNv{mf7OOZy)`{4pa&gO5tU0@{53xtG=h-t*0Gw`^z-Vw@3iHYHy(ZTnmv5|0lWL&JMD$% zU$PgTd&xfe#MA5fhtE#XqYliRkDnQGdEfiL(eA$I&XtF-()F?}4{%(@MFH^YyYGni z{ej=_*A8=Hd-92=mY;02^%p#70fn;5tk-;QzEYEhRU+Ob|{<#cZIe>fvhUXDI{vX@Q^453P9(mBd>Ai2$IK&lFkN^Cq?Khr&7Vb2c zqpP65?ft*c?iup6j?y0g_-Fo=ukyvW{xTd&mN#_qjlSsr;p_Jw^mN0XIq2ZYPd>9e z^wKxNg1f`8W4fjdh+}N3 z1t5IA8VbydBTRQCX#&Je55i;LEpzZ#Z^hX$?$_g9cxoUnOW_GUL1DvfvhktM8gR)` z=yhs;(8Kbu-#pc-eyBh#$I3OUfZVzmI@eG%>-8F#NC+S-ckM=AS z#G(?(Dv$jbubN9$(>O4B(r&_Yc-^`|rpC`hGw#W=MbfU5%K{;9B%wBNiT=fNBRF^tm9Wbyq8QtV%*ykeWDr>84or7AO7ArG-IEpw^#0~Mh3iZpRhBl1nVnuH@O}ybd z2{)Ay#CR|&_H!(pntHS`73K)kZ6{7zZN&{E|Gx+KoFac`T%+ zn^?JCG9Qg-xP_NZ4K?veqA>(}`O;~Ov?|`mkcCS!T_xNQURkgt zUSmg;Fpd5Sn>hy9oQH-b;tm!1RH-8LWP~9AGpG*oTx1|Z5g!tr2Qb|!^f2o@i&!`K zQrM)yHEpb!Z(&BzYU$rK7Aj?{xYVPL&>(5WhAeJNv9}b;>bf~;yH{AJSc>QW?Z^K3 z(ea)?6!~9!?L(oB1k+?A)wi6#jB{l3Kl#DGZuVIBe-OAd7XF(Lew+P?4}I&>BsiNf z8xLUok&pfZd-^k99Os9mhXt7Nfe(GF%R?O7n2*2n2ja^Io*q6F-T&)>=67r1ea3vx zJoT(`icD0$>Ai2azx<>BwY}W--QWA(^&hrHH%r4|wYi=9%MRd@AdSz34lt23atLmf zWv@zKnhk&XNB?M>1#kYl5B^R2zdrVHfxZS#E3SXwgWs|=ERIt9@kf7gG<59cSz~NE z$l?3`)OXk)|KNY>*(lmk=B+V0x3Zbp|bd4`5h01SQq0(DJF%jfF{##w9cS66p z>b$(aUzzeugahxjSPxSJvbrKDms%KpFb&lbLQY}g-~-%b{AcZvxo_s^8pkzYy0JDy zC+MF@NcD7bYv z;*&Qo+B*(ShbzoN+XH`cj3FLx`A}i2tt7{W!vX7g z%*X*J47M|C@C}1zT$R=Gzey(9Y{=yhCXc5X6YWTj3~n;2$*7~x;wFhxScNd`fzShI z*gzXsFx=(Si!KExUKVUv1>s?f-h{DyxN`Z5z5PvZwJVn{NmQ(p!)ibj z9IZDO!GAeZ1&F3j`ob_c(;y6IZEPl;bsidQFjj9JjXJ)(i6*`7b$4yi#87Og(Ew8$ z63>H&Fof@`8<4Z88L(!+aZ9GF>i3A{A0vGmVwX_HDis)Ow*)>h;2HQhz_k;mUykTQKnOXFtlFjyb9O0_p(HWHI1SOj1JZ zr%_*#YJJ_6uES034=1>;CgDG`N=T`SR zh*&dKvu9y3FhRa=hC}o4+8s?qv{$e5jfJD5 zEmyMN{oc3J|9f6CZ0H@2UOTJVux=m!`SFvC?k%fWn+*T*i66G_|H1FHvkFb!mcsp? zACCWXAN?Z~J_Z!%_4CG94m;2rKlj)V`B}d#q4WLUKmDiH6&C;%XwA=^<>j`lNcPdg z`I$7ghARK1#o(ZGM#5!EJ>jg$Y%9T6Kx3WX5#YSpmap!)_b&e@|IeSX|KY=b@LU^M z?CY=m=pXez`{%!#v5_@Mi2qA`s(9?xw#mz5`JoDN{D;${xwds7sO!6?8$Hc0LMmBE z4`!6#4D9+wFoqT+kD zfd$9&fFA2J_MVa7^CuxSY?EwG8XHNCb1R+|?Q@(A6f%a}IdDBIclEQZ!ds~VDU?@i zI>HVY%4A*<(?6c5=|@-p2RNe6?5Vg?dWW zfEh38vpft<=MosDnZtzxW)@W;mQ6?W?6#$(6V&GKwNgQ5b@Er9d?7PhJuEzwU%uQ+3&~jTC{%BqRc4Mne#-LPGY{L;581J09X8 z#9Ap4Y;9GqjPEQmq7AeOexo(I#UUnX3 zNVpFZ3^-Mu7BG3iqWqDMEf|MsrZntEtrjPELI53MivwN(Au*=eAFyahFYDN2%BBTI z6d(ZH5pYyg+t|`@i#wzRP!pMy0>P__?aGrWw@E-K>CuVUBT@H0mlHQi!)8qAO<*Zz zS}U5HCz0}?Ti$FuY)fpdk0v=f4u&{pZ?B64}4mjNUW$qAZ;NrU01!R8S1kbPIiPXP$vM^~m;t(VuQDFp9X3B+N9_`4_+Z zTlSTkFRWy_b?$?U9>BI&fwF#&@06dG29qim?DEN006RhZjArsdmT48z%YxL_E|M zlgI1(mzI?dho-}cII&6QhJtx%IxMRp?%JJ_KL+yPg;RELh+po!lrN8{l}ne2i*-TVdJPm<(A@4(F*Fnc zDDM>r({SMwboZvFAo(o69L5J@bIr~I1z|x)x;`2;jc9U1n?=j~nCx96Xc&WacKH!$ zOoq*qKt}E-=vJf|V?(_1K5@P!2DwXx6^(zHf8D!>mnk9Uc08#SN`Vc|R+*Qa!W5T@ z+C{cyyMj;xgtTedlNT42m?+4l$X(|!LJ`L(m5%9lc(O~|Z7@gcDbD)Gy_Vc_8fl27 z`X>J`a9BR?WJ$DZbI`@mCgD$-$Y9_qfHFr>ohUc@k>~Cqf zY6hW>$GBy_+&*yD_J{M9fT{%=nfAUv@Qr7lyEGg+hK**!_kZ{g*}u>B&Uan6|K%_I zk#$h{!I+ob{>qR2vEOl%V`(~k;6vXsx!Eh3?X0chf1IaGv8Rkf;)H_la_kxNxieWf z_du&W!OC0gWrpuG6M{T%lYYZZ^X-D1}REjjgP8Cx27|u$rep(=q8}MhBW03+@y^8F?!da z3uK-hwz}&_xW?0rBjR!9SZ$GaJY+OTo$@DyK2tdQ!{X%Pe^sgG%1YBN4`Y`N_EO0|1@RvUJ8X8U*<$$Es73U@ z9G7$I9dd5v*2_UJ?$_HZd|!7|E@`W*JQ}lI@@1vNX+HNMSc)TJLuA0N${_OAc^B07 zoZagK6gVUpRFd*dOmg=blL|jJTO9d(&LabO%TPO|I(Ry#R3s**j@=V5^*qcm8MJPY zN<`j)P+`PnjG;ozRDaiZqfFTxPqOUjhp}BGb;Wm+K?5uu3P+597vOcMQ|?zcAsYo% zt*TR^EqWs@@vHod8F@sQ&CF1RAUQ2wl9hhq;ltk6XF9y;E%D2r`Bl4h`?hKL-Ef>X z3T4SxRbead-n>vkk~L5Tkgf5}^LCW9N-XPu|E~P(T<`I*vIz{0g2ZPtHPfWOaog<5 zvyyS1Lhvi;X(3WrA7u@+<~)A0u-KXw3F4lL-^MEeN*4(l4X8XW+P#<3v}=RHK4OGB zw+;nPSw;rFdT)j|siVBK&4qMuyIt!H4ibX`mY;@S&lvV@CUMb>`v9yW*HHTtK^BoztfQzl@&BN=hq!!^s=Do1 zTS=!|SOG_2K~(BwBTq2uzL~~Eb=$l>!$1;xP;< zc4Rr=$MO6d3eqHzGpppsy(bstS1z~vGSCT+`szm{vdYYRGde^KX{RngCr})nVBO$S zlKRZhbLN&zM?~R%2mC73$`Rx7$3E@LZ58(%DaMzAd-=CM8zL_gqTjnbZ1LUiJ-)(W z8Sf`P_LyLF*tJJq^Rmr`}P)RUoQ_7#I7iLAK&!h zkiV1d10VcW`>Q|tv+F}FX>h;$4M=(Jw#fXu4$Yo)EZ2Eg`xb0?_*}lc`+vMV@vv$C z-LRQ~8P6d;>#*}~!+E*w`#$^!eR97p-sw=N< zxnRK-ZZXIdU}Xmj-*~4x9`F|((-^1aVS-~kuP>XllyN?a=g9W{3pQds$Ic z*|;rZ{haszj{v7Q8fZ{Bd@Af5cXq+}XuC(Mw998#EcEU@Lser}hep>RqHY%`%_9Ei zNxanqV^+Z)RU9WhWrpLJomiyL@5#h|WK3@QGmbN_lW=^_cbpVd>@{8uMu0WT=8o%t z71NEmKE`*$FevcoU7pQ|iTx($%a^YB8y{Nc9+f8z>ip8N>rQ1}$)K>~= zp)*Tyt!Wkw;?Q)6CvIHuM-L5!3tanBBPHFqy<+{Pi<^qWyrj1WkxZO2CDpo#dZ2s~ z7n?&4p(kF;GZre9L8psAr1}#)X=d(hqV`yfMuRG&WSB;;`F|wt+El+Rt5=wS6CVaZ z@wliw61YtsgNm$_*;+m-n%SU()U}vX05MD|Jz;dvn-7hQvgi&%b3)0MVv;3+DYKF>))VLz5n+e zWc2vT`KO-v%wddwuzvT>cU`k@fB*4S9?P#{eCiWVXCY*!zu@5K6ywXbJY(XV=S-Y? z?vZVTPcwfdXTr+Lw-FDICt#dplhD4h?H3;VrS;cHK6UuF=-`{)`*mkMm~!2gRVwT4 z6(9YF2v`zjvBVZFNwQSX17_%nyA@L^xpvb+SN&fGt9-11Rul5auP; z7|aL<`Dg%v-D(6;_hrNpM{ms<7CP=iK_g?4?~W!(UiVWI-k8V?yO{T2R?3*WdTBefGDXIn-KvRb)Wsp1u8ixIUw$_%8-DVjJSW_4rQ+ z+U;!44VL}O?G^v-)-JyG$|->gpkaczR}W3GZ@7FrK6UHT`tzD3g?J?d3SLQVAazk* zgp15M3eM91QEO@Wixir0M|d@p8eLGY*k})G(aKJqpCz|^Q?$4hnUaLheQc^L=Z6hw%%4~4p z0s=rZNy)}{{Mif^h2sE+%~g>u(>lOp`mTU1#AiFRl2CggH`v@>{a=1D^@ z)t>y-Pp@@DI-`l(8SA*@YqB;gK0+;O8U?VNCb9A_KkcUsRe(y_1*5g4Q_u_LWS`3_ zNJh|=yN0}36b_-H5uNuIiqjcvvumu28FQDCg$#2Gc@JS2)lIt@JX-UB5>lT9U+>GF zMo~5zDT5!Vgn7w01_3Q`+EcD5tkQ!3YCGPr$RwYQcK`^)>%AZ?S8>!-jVojlc?vK- zBO%%Y)gTa{h)FQ81lm>2qaDsn1_#{@!;J<&o)mpRLnUcO=EAh-A6b#0R4xG&QWGp& zq=vxMRzv;Ym~l=3;1y8UPlXYAo}TJ@KEv|D)^Aa4MP0{%?8D|Fk}{Vfi`74PDF6aX#{ZJ@uLKWPa<>(_(tcJrs zImqD;!K5VPTrz(zx5@v`mr)=dH*Aiw!t*AgmvoCiZ~KcM{fG9K|H4n&9R8Qv zEtY3IoTZPYDS_Z%bfuoDu%l_2tqC7_TxrAkP~+gz^9uD&SYn%9=R3wIO2~|niLe6? zTxK_<$ygRee^0YnKes2oTTByG?VL?aFPD7*HurMj#H6 zZ{12@Hq$7v(h%&Hw|h(!jO8u3X9z^aWTUY_;aW)i&ts?LaXD`1b@95at6Vwi*SO6k zHwd9(h^N;GvEkXdVqhJ3KURTMRcVH@#hB=M>d;!S-$qF*J>uYC?Uk}wewy069`m6# z?iCWls%8`&@);mrnS;z3moH!O*WULA`|OvVsT?DZM%EJ+C|Cmp85}8notC7zl(qR3 z1X?U=GWo*(g4^Mm?$=%33p33y*N=A`WU@Td;mI4zN{4O*$QZKwhtA*FlNVzw^B7#{ z9+?)J&Jqi1+$s)TR%T61U?hY8H&M(%O}!I-?$*+Gb1|XNGLUu?Q5J~fyz*QZ;1DNb zeQ49h)i=SUG99tXi5x;|^H~K!d{u5OOQW%B#H2>eQ+E^wsD#zdvya25NY7AIsp7EJ zAx(^ynf*Anj8e3Kpg>_OljUYXHkBH)0_uEaF-AWCOA&=osoW%H?fxCUyL53`>G0M= zgKjqtj>=C^N(9NAD9UI(NG@@raDp?Z2{*Y$(^^MZ7NP1Gi5B%0#W4|JXh@i;K{hcO zzfP@g16Zjqyz^ti6!p+-r$92)gN0{>Z8%PPn~7*6G!QC%YyfnQDv0DsjVDV8AR!Pu z7crohlRA&IuP{VvBnKR=$+aYJ4w|z-?_|J*bP1S?Cw4%O7EoXdY8#*&zH!lEhI;Alue?d*xfi)^QNgo>^Tsd9PJ*ACo zyt*FZ?Zl%n^&|3m#EgyzS6L^VMzi_Q*broOd@J(iIqu~esk4}73`)T0c%2XN7Yrqo zs#eu|O@k`M9PkKBJhC#Q@Q!i9T>6w&Au^A!ql}g8;<(&@XB$OI`9A*Gr}HN@x7+ey z$hGhz;JV*)_nmRp?G(#ug~!)h9g5baIdIPz#p4fudtM}PKA;a(pN4_+BX{I_$|F_h|wQ)&-h zapgbwMsPx?I(Jg|zqP3BeXMh*+PK@9+tO_KOCR}%8A}8xndXyR0nf?zW@6mA^ysb-d zy-gmUqA8V!2uLOOBG7%D+HXDgjNLl9Q4_c2^ahC?j?IN+pcV?Uy48YWbgy}Xv6UPK zhsawqz;R>GZ4~8sfhXgCSXV?Xes|EeM>h!D>UOQput518(>3m8ls z^8dB!$dDA-c*}aMr*xb6AM$DTVcmwaILyJz8)myPLGkb?N6EeWO4nkdW3XKm##rHT z_3|C|;N7n+z;E%t&i6Coe;Hu#(%N{AJqC-cM=UDWwd3*s@Z}dyF4(W!+7Wd^upu%n zSoU2#RHyH_dSaJ--?Ar)gju1Aou-z}fKbZKq`VpaBaXukXeRt3A-EE<-Ps zegq0mL;#BV&g3jlB^lkqXJ*A=u(wAF9s&oZeXb98)E^$EVKE-{?| zRel$ggjxB{IK0_$8YCeQO{Xd%s!c?+F?D(7gH{;sg)WI@>vKqkB1FlqvX)nG89D4W zvj+&Xl05L-aw!qM&K2{FzZYA;@6{oG;%_}3XPvNI$!Df~`179s`0Zy>vosr2#LMe> zKSTM+Pb@1Ayz?vOdT0`ydG0&kb-f|vdD~C??T?3wxnk0w@y9>*_?aWD#jQvukdD8s zPG+E5-}`3Qf2eIrE9{jSkt-ri{&((Ke0>G;EKLQTF^lr>`LF-jKa<-~w%a=%eVBnT z3Y>i+$ZNMt;7iaLG1=kci2u7I@!#mzRy8GJNKP_>8)J7Aw)@0m$F&jMw{*Af$1Yua z-a(ojfc!j?FNoz(ww%W2o`1$~pWH;QR9SZcs##sh*4)R|MgvKn^6?GM&T(O+S&n6@ zfrTC^lKNpF!#Kog097zpR@Wt(jB<+Q?LGrT#a%aj2<8Iut5V!rBSq4X{K-wwuNkI= z9f|*|edL&Z3v2hTbm4gMZ+*3FzLD>0w$N9iriOog%~Uw`$oM}zeUU{qS1eaXz>g!E zr~|TD?VD+=pNkRBTRKu5JM)Icm3t!i2W=qK2X}HC1!H;e7}v(m;B9&T>O1eY*WCNs zlEr#Db2!Hk=pxW(HB%*Sn6Y3g-?ohLgP$B8$(5PrIANbZ+4-;Byf8R5b!e4I*m4up z@*v48j%%G*gg{o3cIIO+o`~4TMowPw4zdu|-1GV_ESmpwyraB~u`Y5H&r`klD;W;g zGVOqxSO|*N3|>SF=d!3Y#u)5vb>s54mc@(linUmnHVUJzSsL#}QWQe9zJk$uzXTNN zIagOanhx>HPyMRx_j`8_UG3eL`by4RfJO3(e~R5Ys*45Z!DSt$-!ahEqQ>EUx!O+S z1grki-{{I^&|?$BwY`&s=Z?G;A%#plRQh4nVX_Px)5f&y$CvKbP9i1$wg^7R3f(V- zFd7WmzDvg8{5x_m@NbI%EgM*V+i~b9ceu75b5`(aMKYLf^42b%=~w0iXqbgX-GgVe zCoEq~sLMH`t~6*%sa4Y5Zc_ai#)r*UaUt_tNy8cQn2Z7y=x^R*h9UGoCVWUul(d;6 z$=tL2%)9?Ha6p;-t`0!Vk-o&ROWZ;O6XLamDE}8<4K`$^rI#q+*R`FlZtB!Ql2TG^ zia%>hlPVoyTm;kk1TRSrPm0E3?i1LS22#pMcpf+j8RuGqd^%cid8st^3g;SDC`Ys} zm^yVRzA=)l0_G4bU%?0dzdjzK_8V+0S`X^qYg@AnX-xNCav4zelQknT=P$c=z1ae)aGv-C9Az<99$Q z+~9n{EYEHDjrAu}^DJUh_y2$L)BonoU$c04edfk5ucy=dl6XRPW?m)#ivPnu4Knh| z6V~7e@FmUx32aWb3)9R0EthGhZF*4&GOulB;J7v`?{Lwd~fIK`zog6m|U-x%BWNn`AD?~x z^S(E^O-KDV=KwJV$7FJ_iT`-BjIb-bS^s|FbZ1v?MO+`ZS7?n=qCIR^ z4-+4n4)Np-_nW@UFB6|!mbyqR3r+I~6IKYej9_K%Zj`*$U+n^wO5LVhukx$;;HVdO zu?%{JTP@#p80;u&6JwYYhV+z)_b%W=cqzKpBT*9zeNtR@J5t2zU77wT?(x6HP`lMwT$DLQN+FKufvoB2t0=A166tPxB5|vZI0jnLejxP(C zB0?R$J(sKLPTh(1xq6kZ)~GAN%VcmzvMkanyYtgw!)ItGrV?U0%yUv82m0D zOvNOJ&M)_mj@5WotT0(*F`nO584{A_LqqQ)Xar?mG%Edq7SvA?!0&6nMFB68Coi{76bYAo6pprnR9-9X zcyJ9wL_Gjo#zKK*8dPyT>;Gdbs;r~fN};&_YJ5$NU0k?rxH|3&-Z(USy?$J7srdNMf7*^c4DvmBOT^)d^Qy749vHcd{mD-}g=&TVfA>9i z`dM_p=e=h?eDdYCg{GEtoU^UJY9M+tqo1t0d4A>X>F_HxaGD!S#@h6>})Jr%BOo5sPsEw&~; zJlu2V4eMWtPGs()lR!yGch;OX#edJ(DEU^JNQEdnhJNdV^dOgkZC>?@SvrkFB}mU(Y(DUR z$XE`A8ScBNpID?|2y@lH3$_K8Qko?%*+;Y*t*d0=vhc{FdJSK``L)C_3GWKKWc zH%hcB0#T^QvjKuUAYA4tCM<*Ll>e_@up6}E7d?W%Ji>S)dMh5yn3A{9J5&;-{tBfD zMzEp8#sJn<9*K||E#I}W{v2|ok~78y{rc5++`SZ#_N6a>L1F;%M>5qDGK=Z2SDwz` zKhho$=aM-fH{ADvbUozhlMCy& zinJ4_4w>ULoCuZUNrfZEFnoF+xg3`-QNB9oDnwqZ8q*a^EMC_>OoJ&;>lrm_Wh z;|_&o@2l>-%N}|C!}05%eL6u)l$t&&c|QzVm1Rt@LAE>PK<69DeTbuYNdc^w=CD>x zYT!m{Vd;UMf<4%rvc0o>>%kIVK*!;zDfE zCfG`q#Wrv!Vmnc)LWKw+`5#9IoPI3MGMWPtS+G3#rxgZly7C6VkX4I2lxHFU7Cd_lh2;Sx1|&`#*7ofE`TenRxW9mV*_Ph5C@wKAi;x zT(I&YL&%kI;6_EI>2gWuRG$VQ7_OE_+U}&^(ApW$Yh6fsm z8XNBOH1{L=j*4titrZPYSVfXS#?uW(;Dx;~{)+&~e^Je9N&6}O8#Hm)_w?=c&VDu>sL9j_K3_h(`}(VUfAWUg?HDb= z{2}-1%eiSzLjMQB75|e9jcCBzLLzH53&>jL-lY-@O?bekdDAQHq3OfJbO{FJPWb}0 zogQYuOkz+q7Y1VqLUfnZta0Voka)#^L!CNuy&972z}%+%zeGVzhw# zYoZXN+cIg4N~VCgN3f$9HwGB_YO{GaXp?gyozRhdRx7@$XgDk{i_&owUT>NFhSoqCz_Ih3Zy}TF@G5y zpa(%Z(YlIkrm$94h;v8)<#nPeamLOV9y>yhI@v&Pw!EMhq zMBtkZxsKZu2ZV}o6%aE-M55=BVpb-xoHyUP zBId=0B2O2Hs07%mw~@qJw}+IEb%T!B7MY7J?smG`f%H3jL}6w}gRc3;3Np1NKPnK5 z=40~~)mX@2Tp=A~6?S{_h!qy=0YCn?AG1IA(eF7r{PG-!<-v>Jea^2_{NwfKFasR& zYUuOl+>8I8yywrvSUF)(JlQA4r~gl=cNq7pmFUGe%?3(n;2x?a{i-g)ow2!Zngr*a z;Z8tdIHs)E1MK|i;Pet?17nn;{d|&544c4tbi3!?JFP5*DWIJNS;yxhVSb)$#sf!D zwmTC`jsMHGJg4ETtv%l%BxY#76ykeGfWabC1D~7x9AeQ*A=AIf~JTBsLf>&N%Dl(R6q!UVqtUp5Fs=PpWAL`nz_y$71Y2*ZAT7XmbhV?z5G~N;E>LEKj}*ToK#kZa$F~Hg zB2t)>(`28n2vEUOL@8+jfl!`9cX@qN?N00uIcp*OfqU;?KQB!O_g>S<`&|7{R~g*Q z)aEMF^#-I+SNTKmO0{PZ16IrF6=6;1^SWY5)G(`#w9xB>7rY`_Pu3Ij_|c=#nm9UE zh9lOX)$c93id|_i>cj&Fq(M*Whe?h<6+}|hA;EES5>w4%s8vLeZJi0-MwHp7kjL5d z*8ITS$e>EHuz*@bBx@=-<&4MBH;;oVkk+Jhui!r*?ea_`` z)d*W@s-L0d$Y8;(H!(I&Zty{?zE{7@H6zDngIrwwvj=DxHyXLH|Mh^SF>uyx74LlX zy4`)xUF!;mW7~4x(@#B{F4xlNGk*bN*_PWao?IUcIUAJ;Gu(&>js}m4ayy2eIwcy` zi_r{>H8y>y3*{3mb zdG}4{Jp8i=etF)mU4P&(*4zF6ef*cu-Z0u~V#&2@55!@>hW#pHW&~*D8yb~$vYa77KJ;@t zU+2&Sy<+T0YnC^s`;%p*gT3zFhi&rjwd0W6Y!+)2@X3iy=yI%JhQ>kk!yAtRyWXsdWlfnVoPNaKjx#Rv zhSE1AR(T}KuPPUZa*$8u@ez_1sLaGRBhcKHj+L{y0m|aOS3j`y3hcLEc-G2OWeGon zDL6+EBbd}=Tt1bn7@B39X5XI^i5-V`4*xOTZ6LQ2~tm~STwqL0r(sknq5sEdYLuhxQU>(0569EC4vlbl+ z56k3ltBD$T;;!C$S`O@b7|@Vz4$D1Op%>>xL5CWQ8$v(4XsdQ!6!a% z8>b2Y3U6C5mT78sbV?(dlwnJi%fT(0oG>!i#zYM~$Q;v^5JCx1k~`&eO68S>k(O>H zH$52HgExy&Fp$?IF=_;5&M1U#G-@TCqs=jF-M9vqfZrWKhytbMP-Y_uy~g{@3x*Wo3G@R%qM8giuq=6|JpvFtgT0Vysme+wr{i*H!z*(Et+DcU5dha02>&Kel=bCSMP+rLVU@JA@7`hxH_xhF8dvLJ|>S z4ke`xLjQ_#Q_-SZ1{~wJ*4iyGn-2|i0BuY@gv14+ih%!%QJ%de(#~-8AM6zEFAPphMFG*t&Z+1kE9q+bWK2%kvWc@b|vw%-boJ z)e$SbR9A8K_|Jd(Oyb}B&0ilSzGNl0>u-9E|BFxl@bb^bzaQ~`@#Nw2lRx7B{P6i3 z-gzxqKVLRu^9gobeZ|imBkHC3zn^`|wQH{_brJvuKt#NZG6g$Jm0SOhmop0QGCgml z$?_bCyZM05#3n)N@A{ti*tr`e;`U0m@B8o{bJajDf%y?-zcX%|krz`d;!OmoWy3-W(A zG)GEsW2n^FP|gwT<}}y`ID*`Zhqg`TgKKAoNt#_{DMvP7kOe{E`Oolh&^)ScplR`+ z-64Jx;vHE~2W!ZP0ut}`WbRZf2$$<3+4wMqb~Ljh#2fSTJ$K!2_rCf8iYO@Ef%L|! z5MC~3@Y9H%?OWwh#OFBb|KMZ(YH2zg{=sX#zXngb)A#F7W?t|p_YY&v%V7xz2}n`A>}#T{50jk_yj8Po%*)LIkyusjL-%aFXEb zCdF%GjFTB2YOuU);&Dd(uT)Q;qs}SA+Zi4jIbsxARk@ra`lYAj4uld=Nr<)9Fn04I z0T~hVRmSr}#z7If(W@$jqc3v(RWOeidrH+hPEG}7{q9{HG1KGv^3eUSu{S*UI`CS6 zZe0w*i?I@LvA&saAP+7jn6Us6>yBbr!AjP5B$&7Pd1{O&?jJj#8xMGC?c^{jFdbkh zk|vYWQ1w8(lvVx)Q+}6IYdQxpo9ED&oebLn-5CG9QiRCg;ygoc%d-a+NSbSWiAZ-n;LM0|X!uB^bS+PQ8W zt(v1Rjf1la(;xW3KV)ZZ%gTee$W{OHGJpY))Z^>cZ4$&f8LXK^O zlF!|i)e?XAr@r4FzJ5RIwAG&$I)3OQfB4K_r&zY7*^m&GSx-*_834FfSH!q!J~awb zGljq`CR(P9{B36y|4nkrXs(=)JYs+qj^ZyvjHb$vS;c=N?rao2oobaiasF&5AKRFY zuScBhZ`o&m`{_f|;r95oE6W1kihoCET1J`kfef0VBr*QiVe5Igb(C_}&jjv_oP5p# zs9*1(z$NlrnVipY!Sf-?Novi_NHn9%q#7!o4VFMytQ;Sdm&~^Y9tkpGvO1zvI`*$R z*)_EkGGSpxVmE`HPnbay2K+hVMQDBzO?^!1KnHRfQl*e?YuAXN*7CR>JO zr24Co<6@ctUNYrE`cmU#ageP3F~-rfoqjdG_5OqIF5eGb-218r;_y!>v0SC%8cXSK z#D82r_Ix+PSz;(PTJfT~S#Z`3f|T`dAdUO96sCR^Ywn|K??Qfv^^`OxASSRn!#u zJ!Mhx-^@CAWsoqd^eiE7r7`}0*8U~tw(Lq1LdV$Wk8{GWup`2b2s z-m6=;Q@V60gj66T1T+v5jiSLr2$V=j2s&f|RUHIKJVYxCs;Wg&RUnmUkx2<53aE7Q zs+1rj>~z_Vu)}sb9glPNVDB}@_ZV~U6LzN9cAWqJ*P3h2@%+9q=bCHn!TIZ9I0iGv{;6ydQ(p(?pbf^wK%Lz@QA_Gbc#JPvyuQq=o%nz2Df8( z8%|=2*}MKx=4e|wBAND}4UDB@FKUa0m96XOY*}Q1<#Waf{pod10ZCwM>zD195~YQc z)@NN%sK`oY_F`)G*)8DTB{&}oN-cs0Y)U_*G1-!!ME z_}U}jMPFC+2Aq{3v^H6@4n!LMW!0RU{X_YK1sCQ^Fj6;gZ1DoOQ5c04o~DH^`R)#d zd((b#Rh(PUx-BI}Oc6?_AoH;^R@zL70=dlG^H+tc#r3V~a;MNnGd}IeB!w849z|~%uBxMtV5rm0Z@(37VPN{A`*GC@yg@5T!*^%B=g)BnsT|WQC zU;Z2GF^0raEhUZbUnbFCyG%^)Jv#BybH1YTH~#DYHNO7#yUcA`$=vc+|H|KpU;4X# z_U78_1oOZ8jeqU>{)hZe|NL(pZQp$B)%b`1u|M9=`rrRt-xpD3zGoUe=Tn9yO_&r8 z4F0^&@^CLmG6$~e*M)%p@~`}l@jw5~cjBcleCpWw@Dm@UIC}39``@ac ze95)n|MqYGnfR@X9k1_XxW?Bn-FdWQ|NO;Y{p+1G#>Iw>88II3JPr z$*I<=%X!Hzy!OW|I2ifAFaZ~j(I zutEY#Ptj@rLh^KimH;3uuW%HBBNX6a?YtD^a$|VP%Qy)X2 zPG^mcIV$G$xk@>3iWd1 zATHLzfhY;ZpwA4n!6D5&1J^S6VnelAT@i+>zeXj@=Dbf)=7f^M0tT#%DswR<#$>6u z;!c8c#oM$+HiRj9!RL)vUq4{@o9}%qf}}$rZgRT65~L)yb8t&5A6CFuGcz?6-`ESH zu(-HZx-)$updfddngD%_Jz4H1j%U{LVhLXr| zdIOZ0$ah%mP;o4*5NU96bCwlHt?LqkKsf{jMd{H46m14h1q@`})cy7I@X3XsX9-`wF+Eat7~usT(t>QwxeI%Qo%J@f=_r z0rMjW{S^*aCC332klR7*Kzv)bn)yh5z00CuiO{nUs?Y7&<+P6Y(DuSR$;66;DmTV2 zcaVTPv|RE~{)r_!gJxB%uwKI`b}}+Wc%8q=yFCL7_E1=tN6iHt*rQxuI*!#|)>esi zQq1TJF(fqqNuRG?Ci7ptGocTcx<7CK&UY@03cu3@O!RhBE`nUYlJUCWknvM~{=%>R zx(YCoZ`-m*zV`VK|091qE_eNJuD>oiTwg}{NiU@I&-I-U$5(*LQ~nsuPxXP{0sWtN z@u3QqcE$e}IWCj<_j-rM{m*u8EDk>RldNSa>tcN7dHz(&US;mb;4tK0xGd`Y^S}J} z$Mfa=V*HbT`u`t);7^MR{*Q>CI(~kdMFxDXzW+=A>2Kic{1P=YAMjRU*;ZIgvwJZ( zn&fiwe-$X%wCSG%$H`SH;{ZFG>YV2b6AkxTHWDI&I3v8`W*%L8IB^0f>{%ykwodjG zLG@$WMDHxR9)0@k~btq z&&Q^GF+5eOaiH6ZLF0c+;+5rV(9`O#-KIGWWrA&kz6phJ-YmveGAbcAC+i{pKljyv zT_$Pc!M*T_LOC{P$hP1->Kj&+U~;k+_llm6vZ)knMb%LwQV>U4iBQnR<}fUTz5Ll% zjxc!ty6A9&U9QBMf}sAO2@?0fpxo-cc(!G{CG$Ch?a%-5(J3A-7rpjyj#=5pC>@SP zhbL>%p${^yINmbUs{f7mqE{9IG?8>Pl*aOlBN@D=ny(B1^F#Sr}coCZ9>L z&N)CI(8|%OT;BNNYw_h*Un?u}3IMR@YHi8Xg?(W{F-G-ZLSbenS2Cc)?1QJwP~@#X zPno&|b{J+TlZVEziTf_LjL3{hpnG8k7lCDaUXiAjkxa&@8aVI8CqM=aB~mbf_K#aCw>#iC$y`{ z|0yOEg`i@npCEG}3y)a+5B}Z1R(}{DTtycjqm^J)Zopu4$7|I}TV+;gHl72Mpg{?%i z(FXk!T*4B+<;0()xHJ$^Q|@14Q+&fuvT34Cc0CgxKmG9fBFQ}0v(^{Ioa`=Q2Ro!UlV*?ai6N zJRA!wX%o!St6^Ga#hMautzCTKGq1*HUi@79Y9jzXMTz{yC)aNRXsT|f46aIr zRiJjT=_py~T;?FBodEW^6#S8fXI7Dwmrk?(H;|_pmyZkSTqyCPy<@J9=KmlN%R69% z5x&Wd4*1)wDQvv?lqpU$!h%DE>R<9uCW8@+7_sW)4m6C0%{%CT8b*ve>S^;j_>G43 zTB04tZm{$;rbL#55t@>iVNCngM%Sk=O}0}ul-;c!a7<_L<LhFbRP>TwnZO9=DdveKD%MIe+TsFC(Y`MB1`tCxn{h!ZU0GH0${>!l zn8#nGeym@=W)&f9UQDJY@_=(Pyx>AH$=@MDlD#>Lr>T^OX}X@!nG(B7|>!XhUiKE^e5Xe0~@ydA2w>7%Em5V4LEMWnBa!P9J|b&QUsMQChK#&RhI&aHialzEALy`6gv4h)sC`?iDD(01h1s~#_67hfM$GU8>6kp$a z|3~!~fA!bvr|GBP`5@sC{at-lJMXH-Z~o2SsXz56|I8nHvU$DkpZ?STVSoMREMz8Z z-+o%bRGo1+4)Ij+37ZBEnmR)7tjFIvZT{@P{-4!veZr#^dq;_k{R!5sf$7_gG3578 z|Dkby@Pi-cKl`WujlH?s4_c*0afs$L1G9#q%|`0(Q&*Y(>g&g=Ge5E5atB?SmU zzlV2(ed%WmbCfJHz43p)qhT>wQQ|RyrOUw-b5qmOB7OMP#i{!&@hd{ge{z;q{s9AoJ}H3uW~;+bt#-)QqZ1-D3d2QqHH-WZXz~1 zWpH6(CP-cpvF&~^EKS;Mqj&B^UDxLg*J?aoxGKO>85X(4i%4mOYf0-hrmDVT{VDU5 z-wor~&i@!!U9A04t8K-XKL193_QlUhSFfp!|BXAlX7_q9!Z<&HC6dLksRuc0<{j?0 z-~Q-Pe(TwZbHM&zqh4W0=dlywtrwn_hId?NOX}Iv;NPR^?zY}*}&2tNK9x%TJS3~8zko{Lr+Rpauz05;RQBI<<$IN zXVUP4N4coMw%y<9;rbefDy|Sm%5*>yIjpx*VRC{(zh=R(VEomWzw|m@Bw2Db6^@7z6479t z+b}#`jus1ywU4T{zSyVo|M>63i9?ZQF|k-hy*-0&UYj3BeQ&8~(`+jFbL40XXEtFX zrw&4iu`|F@6h%-wpxlMfrL@w;$vUEF812r-6ffCK(ybzkHB+q&)J_V=4_q3Vm+)Os3jP4NqNQ|c$B@*nKeS(h3Xaea*USO45yqqzGid^vJvBz+AKd%o(`cZ*xk70Z`P|I5GfKg2)r zkN!J9)xyuU%|G}j|IPYu{_FqklN(mVAcaqE8vnt+_t)aj{_DRMKh5VV!)1}A{wx+L zj63(VIq`9~F!WXaNAPjT7N)|M!P{KD_|O2bY&Ux=FVtG+6k-txO${u1>jEKhI)}NP zfVvI-wYeMb396W-p86=?Op}9=p;!5E3+D2pk3YJJ;nC{!s8SRj#OL5mvn+I3+t(GAtJn036&0R2VtZd$ zu*V8A*>9Ujf7gVZaq;mvl}%4#)GWu}h;zok4QE77r2w;GR81QjX*Z;yli*DruDIcf zN~BPAy~B`0eD&vx*F}dNM&BCQgtH}$2QH^sm zQZY}hu4pNi1}jd2%Y{PqxQzeCtFP6UzxaAUIz;5^cIdH8*T~oMj=t$?^i^Y~=2D{P4+neV6sSUd!t*93v_jSj;?;p+=ACJV~vV8+dEb4pJ=5s*Es6=@l> zqHWM!Qj}dNH7X+ZDgbCX+Vv=%Y$OPT=<1(xwf$F)-%NrjBJ+P1BMX9e|8Lbw6Q}+N z+9G6!Ovq-}=hjOZ@0-;^R?(S@jpwgDWShJxPxbBSjt?Rc^pf)f)fa38v8)-IN5()<@{&<^nXpr*mt zI#EAi9jdsW{gm_DbuJ4<_4oYoe>MK%pZ{;}J}Pnb$)Ej|UyHx{kNtA|^-C=L#82B- zG5nJ+_;Y{e*W&;Ecl~nwrHc&rK0i2iLi}3%zy8=S*I)Yc+k#GovvjQW)zR$&RarUGWz|614mJT@kze?;>`}XJ1HA45@eT?hM_0?< zO$=I(m}U||rv?`PTR462(U0TZAAHLnMIZ~nQ-y9QNE*Oya8i9_%z_uq$PI?TDm*bD%9e6%&AdA3z;A?7qXikpI2L8-S zJe?_TUMI^y7by|GXyA`L^xWA^lwF%7Cxrct8!=;M39EU3_G28$T_H=~^^FxfzO0b! zSX}aX9b>%46fu5X225?SltAN9Q*5uoM2&1=nHPezB-f&e)yS%h*5BBdjvTmI>x(ab z?#uPrPrt+j8ufY#STKB9nw8Zd_xWFjl=^ojIiW-U+eZ)a`*rFqgG44ylYupFJv@uI z9-pUOtSk~h7PzoI)&_6f(v)fURQeJO=MyP4V&Kd8Bx+wI&2#kS?Ey7uSUJA&&mo9S zdXAfviSCEk;QxTev2IX#{cm{EbI;{^l)GWIA15mjHpwR#!0MWn{!hR5<3I7w{K~)a zU&&Nyw}ks|>fNQ36(|O)nPx2m&cquxGw8fy!ZX@O3e1*YTOnoEW6xpPwD z4MpQLk_5P269zYr5|4&SkA&(_hWlx%#W?mxf!JGs+ac^)1Mi_ z*gKTGjq4l+z0tA%7Ux|5xyA%uyt9%$+`+AA4f(?0Gc88VGSim&edd4A>tU!q^Zy17 zD1L6vhvWVC;-bSelwi~x>G^+ua8{o~IuMod#w?09zXZ-{bwIwckTawU0hA=DO?TlK z6%8g~5$oljpnGe?*A0G)3%u8q{AMNVH{9oU0AREklyh{v{wZWizDwZ{z=+nI{*S1UM8t_;JmXhKdS+m)cR>xrE6*P7^m`t{#Yo}_w}iU53EZ15?>KFb zb*tSfM*S3V168x8+4!Fd>ZQD&eetDw?elL)U<|s)a^Q~09+rq}2cu(zV?R3`+jE}a zR(OzBatrUuV=QuX((A_kbGOM z8XNz!8Y={}R zz;p)KwXbu7|9L6nd^!LgFntpcK=#F)&Q3-?>)hekv(Ze{zUWY4UU27V<*f3Lyz%C7 z?z=zu9-Kf+dc95#Zg(AICtdKFY|BcA4S2c7-?4U22eT}+o*U+i(^DX0MCnO!dRb%~`%^r-`5YV*U zcMKi|$Gi{4%CZ53E;1w0V|Bg20nh+KhENBqaV5nGBQa)2P@5TXH0G{!PoqlgAP-cU z`8kvE+TU7OK!588Uc9yXDZMp(xjPjOee>oJq1dnsblj=heIFhA^rO%JnF_NUwORk@ zMm_r^+=@!}sq%$H9q#rs7kimG5qz8{(w{xG@qyQxC+cyE!(SPkU}jjjRp-)5Lc0UC zx=3=G#x09mQtW;A3!fKy4rHTfczGAkRFhnT1DfBNPL<3sKQ$Ju+fEIjUHoN;fR}>6 zk@e?cFKru5v$k&;4_ZrHRD{_IuU8^~o2BWO+&tw+;`Ym28h_4=0{AYBf@H4iI}lD5 zqyow7;=YrPE-y`%06)Qy1Z41TEq;Rh~Los@V27I*uLxk|3m zj8EEvRw&s53t;qroZ^jF-i*Kfz00D* z#~%VNGF4MYD3|(oA>bS{!udZ`d*a`loQ{}${`8{Z*FJctufF&!KXdAybonSm-+Fj< zT=dSzkDzONq)pinS}Gz|C!w1>i>yTV21Kqb#O0^8F$h8P48(Ev~`b2K1NyZaA0q(!7?Qz zQMj^LfVFGB0I&b=Y>_rNj8Sy{DF2tSy&#SC^_cW@VVrfSi=i^D8M;f(Q4MpY6%)i1 zGK2@-ZI%FW@LXe`X+mJ}d-?H4zWi3a^3uz!59AJ@@3LagUgT;Ytz}9ph&KlVs)neL zLD((W&Aw>jj#Xs*iA2*m8~HeivViqU$9h4|{=H^l3n4-z>ey`>DHEEUY4L88hEW_| z{x_)WiA`B6e$K_oRZ6{xyTwfF)uWh+frdadcX%)4*i0F=lv%VqdG^{|Er};B%#gmm{v#rpGKacCxnnhE9*Y73b5Y! zP0@R@!#_fpu?7bXLW_)GHN*+$IyXqOz~viSwNnh)cmjB`o|&8>V^HMiN&C9K5ylzx zPtDi`J`;PGN$|kN0azOq`R*;SsN+bRV$TA8YZ*nAFJ<^VotIf z&V+B@&f6B`TCvA&>~6zMtgVw&C%EQBm_p{Tdo6Zv{IBXlHkpXCahLF9iw^Jo@Y}&c9`mdf zKOJIyd`$=XKcMj~2rX#Cgg(2Um>F$?6v2_(_zUA&-mUQO`U^>s-dA*rAn?eA2Qn9~ zujq+*Dy0MgS!U;&IJ0Ey)Xtz%y(n|k203z0;IeiZTz7h(@WM-K27|`(L)o}-f|j83 z=A2?+nFV~MK4{O3v>ehvHFtkR&rA<(Pf#+u%!m+9_J3E|3g+v1DQXV(Ta1&Y)>-?? zb8UheNlf<7_J{o3MC3Zjf5Cfjy}N_HUdJAt9>p6kzZs8Tc+%EkeSZTiUQ>B8770Jd z|J^>eU!W3`R&lXTUSA9OwGSS}hiAVeiR3tV{r#;M&iU30&&WeVroKs#gwsf^KrM4b zmwgU=H769V2wl-&Kv+hTya6wYHUwwwO}mEq4NO9&bF}a_9AW@tDnEEg9KAB%Y+iTx zpIkNutf`sRt~hf#b~pgZqH16+;YE0yP1M*?=saRNMxKLkiSmcWNiArw35q zkB+cHCI!l>wguTa*tZ+AXeo@nbUIn|^WSMh(jpBxi?F%|@z1{TX1(&#E2VP|1TD6Q zov#BBU@}I({WD6roQNEBv$n5xLDBH= zp+RsZ0y~|L0wLhpX)73PXBBJEhcs7(?vT$~4gK5{PZWH9iaHe+ZqhG6!e@vStnMqR z00lATIX06~M)Lt>U@%P(%c-|zjO%Sl&*(@68RjsYD5bWNVOoXs!H~k+8nOpb)c%MY z+#6V3u%EzUS!&jbRDc&IGg6S8P3Muk1;^vr`seZo47YI#3*s=qy8b?E_RgOjb`|C7 zW?nWNn`WBoLCiITVNI|K&BDq*O;&gC&%rLGv}^@u)K7&)I92MUV6%uDk|FDwel7KR z2nI>fvZzP1OAJ=A!Mj5m6ndSQS&b!^@=b82*&yHzH{K_b%GIdtCg)19pd*^hxu-Ob_$DRcM7BsTMr(~clJ0+riRDA#U-;eM8 z=-sxc-)TM?SvW?_b8QR%OK}r3bAuV)LqqSL^j=Nh_wsB)UbUO0e6?X!+7(eMSZ4lH z0lm5-dd!0|JEcJVdi0>ApMqf7BZno+vPij|wxB(XaQ!l;@bG9`0ghmYT4QnIp3pRF zL#GbOVsbPd_5uf~1adi+vupg?_VWtrtRk=ft1bQIyVzp{7AH@Y&U27nWC>2y$e)RC zu-N8;TbdF?6N@n8?3yPp-Ioood3(x7_4>@hyI+1idb{g2TMQP_|* zD4<|O!20#F=ult#@UrM&P=cWC@{7But}l|jEIb7C>e6yG=kWN-3I}}xn5(tq1EN|` zkN8z7;9wV<@^^nnA)KF7|8tI-{C%@+Y~rxUhR_LS$R58GRL&(~bBzeA|9AX1)vUcA z!VU+;ps=F?vELA7^Qs7OU$Evkd*bfDT^1q1!6``CQqd9a;bHV+2pA-`;=|4%=rTqt8pkrwS3!9GTKoBx!O>pP`-j3XUR&d#!kXBao z=6!W2FK?!JlvxM;f?+1HyJ4l{F|M3#V^$EFoC~P0yl%BE^7t^V3#a0gGuK#}T_ui}T z{vN&_)h4>F*(tT_&lMW<9}}fA$uoohuSf8*(?kLsQg)N`7-PXcUwLrcxh}wo2Jr3w z!w0gQVkIDazmXP||$D>E>v4mddG{$AD$x|ei z@PawHTVu%^X8Yr+bIkf5-&AqN;zhW5I?MsD>$;Q52Y5XAjU+S`J8H+Ak&uVT)eDvB zaw24p9SHU~M3C`SS9E@sErfMc3+7R-B_OfK;`kb;`7$4!PWjpwz8o(+dH^y+kd>j@ zA_h@;S^g{iVFIg#LYPrEwOo>GJ4G&^4=>{V<_8b)0l!g%sL2FJc)#_+v-tAEv#`=V zg#3YrUvBDu6GTOUr#ATCnO-nbI}F{0C4JawMNyQ-p&W>=$;$+9WtL5x#X49} zXme%qxC`vcQ+(=_>4AD9dl{6fSarLFJee#qq8(Ec9%!KxoxcWMiw=nnFUc9d@Yc`g zr(gV3w-Vkj5P}D_LS}I=OwZ%Re0FF~&ybZf(3jjW`dxtn8{oM*i#kiP-Ix$q4H${^ zT?Y2#ajD#fuW%O1R7poa^&mN}s!2#u({jrP2>|TEO*RYy5`PzGnSfJXV+x&~<|Vsu zOR#{y!DyZBJIhr=1;SXMtFU4dvWAYgvTA@yTg5(y4BqiZv1+GG1eoadw0AaY6Cgs3 zyB3QOaG-`nV=X^4f0$YtjN4MC~;rZwJFU|yDGj>P( zuFu&QpE@|97p5690Ap_4dMsH()?rYJe8V~_>jsVKx(!Ne;4ek*>;Y0jcK}AmgMUy( zXNJX5o2jZS|5=O#!EqXTXnb60Fm$&O&!wbHYgQ&(XzVbh?&i13H2gQQziq2XLBmsbg> zy2t-AM?RPTYw&->z4O;UuR9#R_QAt-@gZgJ6i?gd?|9)^ed*!c*PpTcqMHX$K-g~8 zlOhX=h_Fc7waNp(=L+JQ%nfKK$%fnD`>ROy2^ptm$qS`y;5{9ZC!i@r_1_a2MHAf|Ygmz%`_WZZx*ukOCUvxO z-Sk=yTbU1>>;hY3+8m<|C}7EOj&te_myNxGc^7!ka%=pL+75 ztkH>+C`M5_bbsgCYS1<*?&9GNirV;FdH^=zJlVO>(TZeb_wH|Hb*8H{bj+Fh>Br5s zF~bQ_)X|4v4OXk+YI|4eD_dw`gGMQA6<0$B-ktz4vZrNtirXT%9uE`_Mn~pMV%? zE7y@TAju?(4K%-%76Ar*4I%b`m&=;8|`#HErBiLU7l&2m~&-V7TsStB;l(J>dr61@(< zVHK!QBuzE+M_ILnc6QVMt|f)iqeyfN)=z<<8R|~F%ubb}1$&pZ?0=6#h{nt?IP_vq z6AIWjY~_+zR+NYuk^jdkPFKeU*VP<&sB^~F*cd@`rb*Kg&KJjM$1RGTZ)?_+%Wujo zrUdPzdVzz}ED|CH|J(SGH1X&J@*fU`?n5;Ui?9M#_g_}5#y*_e5))p9OImF@c;S$+s%C+zP@V)r% zkKSvZ!sc15|L08FK)%)hazKs0fTfiim_%PsoXWF->|HYHvf9@DdbFTl#Hk5&a2`DD zb)%VjOzPhACChi@aYIe{;}zrHT*~*gLDLAS$?UeM0se=|*Xyry++#7Kwny=8^Fj4) zjN}3b?gzHtV<2hfSQ2R2y%_2ZRLdq=(!XNbmAjP9_95KsHk1GH5&}F5kwUiW{u^7) zU3gpOzwr2Jed*CT*1N$NikiGS|3}7c zmbAXY?iSS_=~%;7ZCE8d4%gdqs`c9ofDwG%G zw*Vdj@sGuCK4^(5f@n(i? z@=M?@or8kgikGAq&LlRkG4m?w1HIIcp&W5k+aG@!F!6cUy-!rK*JGDOhx|p~=^$yL zj<#_I>xu5O=qbF6X{K~CsoD<}wxHt)?Ju1|k;j5!c$WbZ{@Fa_p?ds2({j5=fMHx) zp~b|sfahWiyHb>-j~&Rko(A=UZTsLuYAdzoiQo>{^a3+ttNe4yaw~IA0TfF#F&*1( zS^!Z5Dk`aI;fiJF6$7XiQ|$=45D*jA&X3USilrkHY{HLbO9|^l8j{#zT|?Z``M7gg zCI}ZKRA`PI+uhcY-**?3)99p)<5A;Zv}4Yh+}tc%JNnUQ?$ z^;|x2>Ubiz0dWW4Y3@8peS*v0?|??Awq6JH3D5@({MTFAMS+7|8>(U zqn()>c)xOk7A*(^Hb(GSqtK9K6wB4E{hI7d{>wy zghOu3xH#;{$$F1oy@mSP_MAD(52okre+HG_YY>}q+4+BX>A;t+n@16zBu*?)Abo91 ze>(s7mivxVQExP+2KpI-C$EUD{5QdqVan}mYpl!vAJ&TvJ1aW1C3Ey{jG|7At!@)O za#)z(*j!Q-%C_eJHFn#gn`pPn`serx&a(In*RpU;=YLabc1kDedLTe@=IG&+qpa!V z(Ty+8Z1_ZT>sRna|I}`W%)806eJ+a*k1mT2FaONt=L;+U!DTLE#umIr?FGN))^%+B zA2IpABUhh8x9bjvuYLHaJ}e`g@N~q%%wK%`EWY&UnfI_zEX(*mWzu3FW3jHR>&%dXM^70*r4?o*gCl!-8%lIyn{2kgkaFQVE=ZuPbV52% zO{iTr#up#+y5r~Rf$|2bjDllkDDVY|)qB_JilgJ$0w)GBwTyehAmQg5pp{_hC|Xol z0XStuqFFy27_ydcFDpenQgp`AuwI zfd_z(OyW=$@tF1?Oanhqz1`qgS>9W5bzZYVfB@TZ4eu;0!XIZKBZQ7Jy3tjSEk)uVSayxr{j4 zj11d=7KWaJj%iy902a=n{$UUQGYmJjoMC*IMT8Jo+oq*OBYI*N!bp+lgwg7l#8yK9 zhFHJ`_IFEGY7Z&bStPOGC0KbG8vHTVvS@= zn@6N?Y$2$`l(H}~LbsAD&R?0fQ*7-Esg&75JzQzc)(34x}=4Q$= zcaI${L366@8Q;j6yq1<%Cu$IrD#O(54q= z$}^d}3~_^Fcj$i>eH;HbUN`@f6Zc4GLRrPG^Wgua4PkF?e=JkOr859J&i17S-pXx! zJMzx|-9H})w{oEfuriPh7ZU(dg3|4*K)1G~0C5y{q#YB9Ge ziNy{R6j8@fsFdSX#SNti@rZoL{}i%Eux{@yzs0_;ZNGO}boky6-<5?zj}M4n#wM#{ z0zKfYCyLDze3U0S?+CZi3bn)z$@D3K!e+fRvh1+_sX%p^fwHFW;AhJ>vuizWQ09Na z=HP$(jFPa%HmTtRjA>q3DOJY*3(8KX%40YGnjLHvuh~6fi)HODk6BlGVRR^t-=~y) ztRExkIv|9PVUJ(o_}amsf4s|nAH^^-hzmGnPjjq@24$8Tuc349>U3jb#QTRmtHrT< zs<2%W)gDeS#Ml*V^Nv+b${G{sY1qJGi|iw{nNw-T@=yqT@Y!Dgg3^ z|JNKPu_n>^8=W}8e^Lt;WPYq>rNEd(U~%M-((%oi)zE#`Lz)3}jZ?1w=_&Qsv&{6u zRz+~>r=5T5tULu?azWw1*W}OOYGrHF#j$}Nl~^;Zq#VWK6%fMcK(ch?@pl+wWHEHBY z37X*<&iE5$*Ove5Fedy0o*7pLZ<4J_0ljj&5ve3=A(#8QlqBJJB%j2NJ*~sof(g6o zeFx#Vm`dNkq8X&>U1H)S7U#ro7J(fF{;(ETjH`#@Ce30{#Y|iHOukOMT#AdZgM8Q9 zOCzQc0?&J=4Ip=TeVO3Dnz>W{F9V@p?${7iY68X%7KF-wWPRJu^4GYgqoe3!OfG4! z*o)JY4ZPmx`yd)E7>v9Mr^|4_tXHbCEY>h$$|5P=?ZFD_=!6W9MKlE&)~_%$Et%={ zxxT%kGtVWN`CoQ-D8&!pe?)I7BU_t7?$9Tq`|vzZuQR9Qrj~jO?yH&P@IY}NTi&Ta~UO_3zYqO$3bFu zL0kOcfzB`C{`L10(6w;0W%YN)l8eJa>>!oBUL!19A+J;ntN({;u@*@97)m*aS0Ar! z;2etxnnDT>Tfa>CF0oNf^>*Z#t(Ao=P|@Hb`|;yt?!?S!&I?R-%O!pD$pO}vMTdIh zl{fRz=~45#=6AS0sjU_PXvhFyhB4sEGa&i3-Ff4GbVutp|M#Lpd{El4grc26xqMxJ z=aXmo>Ha3wRjXs{*lq@F_a9X&F#laL_+)UU+3_Z|a@H6+M5{q$*8eR-L+(1z_U*3D z>k{LC{BHJxz}WSa9I&8kSlolDw_TmdM}jGd04^x|^%s0g1=0)Gr{i{Qnxi?QQ=uMX zqSC&JfDcqV(71bWvv`d*?B$o!>BOYWNEJd2RT|KKj~vVA=?Vt7e$$gUsS3`kkj@#l z387B^UK665m}|t)lgBUQWziuXKRi)!Qd?Ud#p|jAcI; zS4f;UTA8aQw}E$Il0{LR#WIXmMM^rie&YaeFREdFI+E?2lAA?X7+HxQTMO(nq(H3d zr*pxyX;z)q!NN`$$A?=sLvr{^EOYfR{J9e*tq{WkL(o9Ui9=spV?w+cDw*|(%Y_F1 zN%Kh#;VpMFFeg-el*yzna2-7BeRS>1*lPeL1kogAi43?Yt_2i8oz6yKZ?de)WBop# z|K?3OGXNKT(vKlyS#})T;fJm{v-D2tgcqaN51*y4fmtHUJ0Har+@C!*r+#v7D$g_5 zcn#Keyt~5CEI)>aODQho<2rEFmj8?NPq1+lO1lO462oEz21mGbtzK%$@IaTjn^#ho z;rQx*v=*l%EM*#x{BQgz*;#gVZve@y|6rO@l5%_o0l`9P`9dq-@PF7uHo*VnVtdxz zI57uFunJNeGgOS|9r@pR7ql6$H21rgD-1yo4WZ?6R-KpVnK*^NyI_O}l#c}?uS6h@ z+KBc)iA(YRm!O0SL~>M0x5kbp>Smg}<^LnU+(EH@kTA)7!}4Z#9jteQ1>A_P@q1ZQ z+ZBTKr$6taAcmk$ZRyLkkI>|E#4rD6Wa|4hwztrxymb^!KS;N?x~@+W>Kr zs?UfDQf~jOoepp2!^1;jk&s^;17zgfWJN{Y>!{32DoK;N(|8m!iBHD=*T*aV*AE}X z$3@=gOVjGZ%!kX*ufF&+KAq=qt^h_izAqQa9*h6knh9w9e^0YOV(_9W5=k(5^)c*P z5s5xDelJ!T30pl;Zm2$+u3;F^S*qmF0We(=7}si4m30vj1B1J>;VZs0l0hwEXp2m6 zE~1m!fK-d)qeR=`HzmJ`Wy4d@egTfQD#KEpl%>w^Cqg6$wVV^zqYz=11#Wdw>#~*L z2$#gknW0;?K)x;B7cm%MPaZ$MzDV-2=bxOs$wOMJ`G?K}(7rKMA z^_TZC17(zr9(xt6S9mo&Iz;p+V;llpF>Ky4i>tOQhOa9h4ottPaYn=CIt)H`7#S0KhhvaZFe z?Od8L|eVu{l6+45Fw0gbPtyM$`5(8sb^hz9 z50_n_^l@Y+5z1q#iUZO>7}twGJ17mOT}Rjz6+|qFRly`xh=&9%B`ztW#cp?WI}LyD z)06rw2O{FeB`IR7nxTat&0uOd2?x0~jQ=xZd^H?lIU%j>5R3FlIIDh>GkDg%b2&5f zo^IfOH%wt1Vlz_GFmhzfOj+O-;a20MGBO&6X8xN^(xsuDStdlN42q4Zi(D&}m?eG7 zH&_(prcL*8)2k$B8nN@97^O#T_TQLA**J%ZzWx1g)@9KFwvCYr%J%dL9yBQwt0}A! z2d(Rtef#I?boEoZLD`uO$L0FE$2IIY$Cnn0$iwf9ha^XM-|CWE_V0Ga!aE=BwCrLG zhGRk>YyPjSZMA>F#OcVdhle|kmPT3rQW1 zv7R(tf4#my^7SwL%mtoKMi$xWqT~i7wQS&k!T*%l`G46i#bP_-i2twu{^+v4^IIQ2 z#M5(VL<>tW*Y$S$SD!qsPbXZ&0kH!*M|}+b??BAK|D6jtB-;?TZC>CCL!4XKGyN*8 z3*Uj!z-2f3nnpla*jZ_5B$?rP@DpKR*x%}ZgELjAwPCgWHEIj{TFe!Z#-*D1B5R(l=AJ=0$00q%nb_7YD3TG7yN z9mM$bgf0gzhQ~aQz|4)U!VD~U;e6GYp0I$5H5QhH8RP&Se~GvMZQD{j&mefEwLF7pyL zP>C=TfVv)I;T+`6*;N@Pl=?<6d0x3IGiG|E1(t)12)+TOvAX9EOTZjhf{;YSE&SAi z)jdw|Oopv2*(904eA;Duhlgxw#nm>LbzQ2z!ZnOAL~6_^X@z_Z@_#2yA1@YQGHv#M z)nMb6z>DEL@r5sr$F5@xgDe*`K8I6|6izJ4gc-GSfpkMV@A=;mlfsssSTTzNnT%k( zz5Ca>X)~4VcC16(&;h?2D=dGkMKXrFlPhOJNZ1JEa;7j(II!`5aVT6vU61szrDRDJ z7D(!#Wsyp416UtYTL*nzj06o&{yqi>aq>`hPWP`@AHbXfp+NbA1(cZ9)N^RT+zSW(Fr zJA$Fpotk*ph5<_JW$M_@0bd-V9Hk7kYyku`)gayn*mlcpp|{fdclaa!m(gT&iPMcDNHSc%z2fzk-(1k-{J#bo1%L;Je;Urx@DL5*Jc`ad zFw5Zhb+pT(Lw#-Sbl_+ule43T%Nogb(cwvw=vS^ZEF!Brb_ z2^3%IP)1K!Q4z z@;kbQ?JS=8Utm|1xWj(w%l-=b8rT@N0L6f>alrgeWp%nu{bbbiE&!Pce>h5c$@9k|r9oA45^v^>xKailcxFUSq=wx&q`lxNIkqr{2rctdH& zLIG0^KV{Q}@jcNCDb;-u08)E1GG|OHE_E%9x|WTP(_0AY zox(995oSXLtY-SU^nNTQhmr<>Z57Ozo_w)8)45qX#UM^p20YTQx=>OZ(EeS;mFYiwx!r<`(}B zhWQRPWeb$&#ht4i@hW}3Pz!2SULtYjzKVM}<9eE`Rl{J&8w=AUpSO)yCFEmNy5D+n zW7!V>^|+l$>3sJ1;Yq#zg*R8J$3;UdaTb;@2Isd*PT#dsP*z|0P=5aqnpqi?}2k?-MbYV21aT_}6vck3<28#`86F@R_!?Yh0bo-c&R@djyx(m7%64kTCE^UEJ zR^VAgB;nqS?QW^k6BXj@MxH)-S#-!>cKC1JbLCqbPYgQA8g%2B~%n7HBRO z$*(6F>n@Xmb2sR{)Clnsk+uuGDNK7Y$E4E9vnKV1&+#lJR0Vf5T6t0H+Zt@)yL>|D z*JPJcX`Ppu%I+vmWsd>f_d1E2_ko!ZWvF4GEr@2U*Rd z%M#d?B%1ET)eIjlVg$s^C*1}KU^QrMT^A!_k_M&Me`lWW@dIHmWNUD=dQ~8k7FTYV zBd3->f>a#PMPvj9P{^$~u25wWjT<`}IUX}vCq{cosb-2D=}#QlbPgSb z6BRL4vfmI^&1+Mw`CK77C{pFoZ=Yku*WIFrVM=*cBOEWaqF^%SEOZ|tw)D- z#)~W46R0T;IkZD12VNmzeDZI3Z^vjL+fk7uh6zfr*~*iidyas&ws($oOjOv;hHOmB z(=x*27oNmr(c!WX^k}R9<%!Pcavl13-H2gHF({$W-SYp5Ev}dT=(6tfe}4Rk1u(T; zLNNqiy!d}DI>e3;LFW1?_#ZqEL`m7b{F-6aEgwrO4`|`7Neuxssa`-$Zw#jMyh!UI zCfah=D8LI(Yh(o1L5rBa&u5Bu2o~rxXI4 zTmT-@eEAFlE7PcTJAwOuHTB`o^urG4{4F;dpt~eZ66#{T6`5!xg{QGP1a=Zhu3khv zzAQHU;+sEzeakDQ8>z0;xXjYd79cU?jl}}lp|!x!x=>Oua@vO3d!;5ByS%Y06|C6O z+7I3LqR!@T%gd={9!F$D-B{q!ld@H8b^u3sV)ax+#XvW(T*7tRv(u}HJzGMo3x=}t zE8}d>4W4~VWMtp>}Ljk8SXz3^p z3~9ZvTVw3DNyl~AB0VNqSXd*Z!*JyESAg#7E*p~pReh{W(%~Z%YnD4FP7>&Bf6v6- z{7#lgRutlnzDAtJ6@(I|^F3PoRy}OZo-0AFPR=c!RgqEXGU)P2yRV+PMsKP7V zO9=)6C@967w(s_3m2zrs!u{`F@TPKjP;E@>UEl~ zLNp)2oY(Iyt-_{fbSu8M@VyP_bkN-SzZYO)&X8l4F%Y*F|L^eYUq_VT6sRp|Qz9Vq zkuAWna`!7(?nDguAGMcTNy*#0sTfceJT-cW8w60Q72c5`{x5c?;S{zD0XB_S{F99R zy$efG6~u6ggS!2HASd%)IUwsEf1J&n92@}c}8onjc#-UG1aWqSt<3dum;bk&h%c39i34*q6WYW`y#$5i+wRz&7i8d`SfDO!r~m57J|el zk6+B!KL6!_FVeCL5R-QbN(TgDW2W(c>vNa?0eu{mzxC0h!T(5qpD?_b zz36b#T+0&HK}QqGvcN|ITj*Pi*+;f_*mcRXKS$G6v6ykkFQFvWF;({)XpOWE71Np$U1{4&AP= z8MQ$U9%LcX^cjoDVb&qZO;FofP({huNrQ1hgrc6A0-3vFZ5~4`jUlbpgq>7HcE$bp zg~#y=Kl5{OSrKI6HbcBK+4#Bb2$|D0AzI?f@|*zxWEb0zo6im_;zuSdb$s5|AtkV? z+cs3e@;o{ZD1SR3JwH0uW`$AQ9TG!GRa)&fc*}JQmB2|M8qbDc*1JO5j#E!qw}&o6 zg@g;_GUawDKFdJ`brnYyWA+HShEx7O#pm zm825@$cOD%_=4dYi}BALA1emkHUzj5(1e*W#B^|c8lPKZ5AA{SHT{mJDL^Xkuwr}s zEAl38f_bnasNejq_j^RpmYC42c*Hf~#3b~l-E&*)^BGe~PyonAei*bi@U>#F?If5p zUxe{%!Vl144AiiPVu!hOZFoN8&nl&Yr+gZQ9336p5Ke-e{q*+64sS!>l^18qO9yTF zk9x&moqAUARvs@G(8zu$?&A6_7FE9QUh#3*>Wqagep}}1tit_&+VW4!E!#F;Ly3r) zCq8&~RyRCgLKn=V%NQr)e=}Az=ONCHA1CxyYUkW#nicFVi~|3I9>o6`QUr-JNcW1!q1?#-7&l*Fv15_wci;Q^b*F)P zD?zAHRxGR?3?+XfepGKGk8rce`xFo)Uc7j@Z&%md4&z>+$6vP(!%v0owA&#ozgjD- zPk)SH^}D^VqJ@G2SS0BUpDjMjiEOK(gjxaN(XP4bo8HL@qw7Mn{>&0l}vQQ@7h)|_5Q7O$g>C@uVX)g-huzMY8U7HPX ztQ_@3W&y+ZaUy6(WOD3M1jtX_cd&*iw^Sw{vkL0B6_QNNnABC|u&{5mP|h!J275cg zp(pEk%Sb7k^%$u|%t9`eUt43pZAnD8t-Vz_hv}1rX)>{qaTZ5MmZCbqf6N8Qlg?@V zf=gz`ngqgn(Dq!00Kq(loc2t6-DG1GEW*6d?ZaZ4my@)O&YHrH!O};*)=q`O-i9=r zx6GxKj2L^G*CY527#NQ+Xk$c#0&w{cMzGj6@EA4;hdXwh;nB8&HBgaG-5 zy5W{t8kx-EExLZ7c9bXG9k{xR6UnF;0uEmRAJdLw`454Svlvb4xEVK8VutkNqWmrY z!?x^mojfyVD#D?(YIx~f6Y*!@B=Ky;C*f4!?ZuY6y7E8Lb4~nzELoQvCw-Esd`opSM#(hTCP0g=IPrp* zR#Rcp$D9C8onOaJhxgu&4?q4;PJ%7jwUR|`LZJ}AiuE74ptR#4EsEi5-gWN>T;iDE zw4$rliM{-TM(OJ6+;t>8N^AI;`fq$~Bh;Pm8_4Jth<*&f(Y5s}hb|WBB9vvjXqTDI z9$ju^KYD-$*EBp8(2onX?f9-NXzOF_bD}zkS#|W2VZF;lRyj~7edkDEQL_I>v@ob{ zR7yJOs*NvPa4{e)v;ycex67p2O0vTEiqc}RyKd%WA^<8dU~Apm!4Z(btB&NtTz&3S zpFb8II{h&lCJGdF;9{X*sX^0>%AHdZH&wjb$HYNFb42QQo}J=vefVg~-xeXvTpGT3 z`S+{Woeo_n&bd+nOlJMR(E{q4J~K^*x^if9YgtEqp{&OwO|9HV5*r&;RC!%>J%5r; z>WN&HH@}D3I?QxNuf_hupu?QXmqyZD1bGvMprmLC(?`WXQx0r1%|gSVplg^(GZ`Dx zxE;V}Uj|C{G0kOOh0>YgLl|KZNQ6f=g&ks(GW}#@eppRVjfisf>_KBMnNrwctv~hT z#lYhgC^cr8p--cvE&I+vEk<$}X4$*?2kO9EftCO>c|z9OK1|uz&Kk?NI5AjMG1;h0 za80&vgIOS>G7Z!z*}$uxQ6R2RnBt1Wh}bcaz_DthgbLhjfGM{_zhp7c4&a}-0Lt|V zST*h;kmZTchYPA^%Hc=BGX_;P$x3J>Y*!^H{L2Ri#lprWWldSF7QrrF%YU3VY$S*T zwq3U`CHWYm%1zn0y}n^(KzoK86lt8(SV?jli5*sy6FEwly{YaMRL7B0q;*+EB-ki6 zIRFhpA{~oR&6$&b?u7}NDo`+@tD?QLJ8a|8QjGFMUNrHSjaa}Pkmmxu+w8``$$4FE zMSaQK4#V@)4u?;Tw3${lh|FwSARX3?OCUyn(6HD4gu(b%wRd>qELJ~>qLzdN77|Hdo;rnLTiN|_{nv}-%Bd7t=$98wO#Hv+ZwtYkM@v8db1 zFkK9tbSs2ZOu9cgKkiYq`(x0OOonFYTNzYg+6KX=m?DR?W#^I|XTKB>CCx@R!r()i zVtmnR$4Ke&T5XuxZLyJon~8jxE=lRZwq8srSOBR#Nyf;H1IH;YG?68f_6 z5Z6aT`W+3SG)~(F8ga8gLJul4`aXPu7 znP|zvYyVX9UVQTBc_q@OHrpCaqGn@_4Y0}qiA%^*IW@)rXmPq86Ia59w5bxII1CbV zX35dR#iUQAKnT1Hu*nDDH6z%tNy^dWL@qAcDbPWI9BiBl+{Fr}2)Rd9-{`ccr1}mu zCArz;X)~>!k6pqf#w&|JL(Q^!DZ-JjJ=zmj8T}JJ5NlmJ<+|>4__?3?qaJsMeG^6! zAY^#N6h&dwLT^j*TJ{b{TcU)ISrPv7CCe3h&m;EezHh*}Sn$!@4xcF`Lx!YP=_!(@ zxu?TtQY!|jb_p`EqsE)B7>@KxBg2YQ%d%k9+MrwYuZcv*PuVzuG7Q$RumXeCWdJJB1#Vp+=lG`h14~9>yMO3% zavR$cs5AFmj8O3m9X&XRT4}h&8$dKqF_~J}GLcviwhMDIz1~EH5$XC~EI|GPd3d>7 zZ-)9-Jw#cP=n|tBBt(mULwUpA~uGB3y5m%PAU1uRmDUm%3C;v+j=}7x}BA7uftW&mU4G@GaAV6#hR{dB*sI%pv5>}(C z?+c%vpXN8-d#9d0`#9QSjZj=)vHUz$jmev4#fTaE_PuqwHE0*ooo$W`zbnu6h?1pf z1|sW7zMxKFm`W2U{1xM20oJj-yCk^_)^Uj}m0`66w)A)11|U89JCifB%ahZ?b*IA# zNoQJ|bJ#XHscyPCuK`Xh4{D3hnu`vhchP0t3puwS0$;xHoQ|2o5y|pAhBL|@sR$Sh zh^crjzpvB2V!cC=+6Y>ZsYrj)*%jlKSk6pO05Q`^Ay8VJv8Z zw9*}!VnK(sk^iv)WB1-2*Ue*U*Awr2d@3wDbc*L-r?&cwz3A}b=20*nt&B3GxuHOm z6pSO836z~wVj9DBH1tcFaDiRx=>QN)kwRpmzcgvW)89fIk-}@(SaYYqy5+|IR=Jes z4-3_vM(jF)0)P^m1gjh_R%EO))XNCu?L&~@;}!h~M4vJ)Df{$fP2E6EvsRVNR3pTu zCsU;r-WXT_wiNEARw2WpFn~QQH7SIebN&|Y#0a50lQVX;;!5!FK+#&vBWnU?r4q}9UXK!FHh=QT9Ya%rXQH` zH6sPsw1q%w%yO3&@OWYdGs{6pUmiiscx%m3uX4C_%`)p$nC{Y+2(>` zA)X^4+ccuXWk#eg>$l1h-MGNJb>!{!-=s^38xg`m1qIJmj5yXpvD}s?=<;0tZ;yoQ zir=vnxL+8XbK#7s1sVgFu^KM+gZL%P_CYNC4&0grK#>1E|C|5WY9xR%FGO3Vj?*6R z^bJ&*9%Y?ZD&{x-@B9sFnlt~s@M}Ia>6fu(H4s7c*Qg;+IGXUZ2<^fA7%4OJKd>H| zywRup&$i1NV+2Eq__BiyKYI)^M9fdY#)#LXOLOG&me?3#REw}_jozcH9?So9>%{G+ z!HvKLAOIXlwG~g-#fIN~_nlZf9V*2wE8T?sXNZZizmUAvKV=Vo%f)f`zG`mD>x;PP zP%IpOwwG+iPu0nPU3tnFSNwndeEs7`$D+gN zB?8>RVXu!@{GFFYhld*g(Av$yLBRyI!bYa9r!2Wb7l%yXx`vU7@+RtDQO3X{&Xr14 z;a;)gjD}k6#*6fE%WwkbYfZCv&6U;z!Uf+-0>=P6Qc*(z4Lrz#bmg@V$PHvkW7NPJ z=}t@dhz2&8khI^#f}!%ZKw~ZAk|&LvPuH^O#5bj5hd}XqAAAKy>@uPL&A{RVvI!hJ zq1t33$=}*yslr_MNvRdwue|iiWzpfS@E|MMTHl+Fab5bKUi?e9%bz2Iww@}2yz zaYVV&tfDJeC}j?p_DKv{%>OOik4rU8Nhj`9iw@{{VNa;yc%(=ER{nGjPEd``rA!G8 z#!K(~%z0$djgH*irTz+nakSYC9v(r?gc@i`k|ktR^Yub4Sr_H!a; z!uJS?m?CBEN(w$CqyclAQVtCoHUTGi8)$9(zc?_+Ss}9nI>tfTinEc9Zv1{y%L+w4 zWx@r?polv`cRaST0l>_EqWpvxCDmrVcI`IYs9SK52UholwovWg2Uu7i%2ZQL>Ritk z+7E%4g5pC|w2^W5{0~iv%7VHg)IM_(es^ZJ8DoBYej49=@9XjG*;BOMjn`M6(on@d3lBR+91?oD>171bSjR9sB^rGDP_Ifw%!8bfcyOJ_PV z9C-$CRsJTvDFWa2uqMi<6tg~DcRD=2{&p()JKDa-dP6#YF)WX-qFB2bbe8XG$V{L6 z?w6P3v~QhYNvyg4jegT)I#jmPVBj_`BuoZjZZCmUos40YH82}Bst#Z5;WgvWdmj{U z5n6LQ#{9x(Ud@*-iw+I|%5DM<%Rne(y85#-N9OB2kU>#p-Am@1M}C<_QlScLuA?w`yLz7NXE-y zyS%Ygs|{;FlfGP(w0&Aw-KnUV9%Kntdl9w4{g^}XdHXw=(t~(jlT_B=Nr>%Iz+bj8 zZ9iG(h&dqv`;;ajT9v?T_sUBz=UdmE4np3{^caj$Uk|lXohIVudJKyS6|`?B#~Pxd z#u|vAFJd?%VJwJKM7;2qw%85^a=u^V=2|5TF?CMkmuW@(y~VZ{~hc;%MHs7zaf7S8cMH_R(zC-)nzCfw2l0``p?vgwE@ zpJcYB1(o5Z;Y6rRAI4@FmjguuW?A-*#!Clp%l|ehdx;=Zi=hKmifdI)l|Dh6UD+dV zLf9C;^}dwtl^1%^;=qU+yJXs3pb%iEMatnP%zoBg{R-_CVavvbt(;UB z6jp0^X^R-jE1yKyGD*WObnSSPP8j6)W(ck;0U}|fusi#62eulG(7Imo@F?TaBU6_i zE!Mm(7~`^Q<-{%vzz!a@SbiX))Gh~f>jewo1Ko%~JRYB6>~Ocm*uemsBAF^2skM^CS z6L7XqL+p~oh-;95O+yUx4*kFW@k1Uv9jxjpH)db?nTy_Eeer2LWU2nAL1V=ZVw}{` zz#HlbmCuf3&-vs%&RCq)Tu^?axADqK1FJPqd4K_KMBs6kI7K^DHN^iRxY4*>AFSF} zymxwvcQ~}|x|h6lYJhLTZ>6xV(aGmHN2EUrHW39lrAF zS4O|l)=sKQ?GC?SBf8kIPZF3cF$rL9pBaZns7BV%9}P7I?YU)2^@qlYy=n;w;#ql9 z!C9vy{WU?e@0iO;Q@ziNv4RYmy+K4y;HW?OHeDAcUFQvQAQIJ@a(PV_J*Go@EWA2E zC1J&V2)~fn*uu7%FvlcS%xl|3Rmi4e4hyzB7+8K?S43s`4_t$hl&upaTKTbEztiD3 za>~?9h0S9qc?g)NOk1-Y&PJTx_z#-I*wJu;eUX=Lr$m2c-trO~2Frcog0Bo~{LUpZ z{gzX&==^8G46-W^`@G{DCs)tAvcJ|>Lv~53@wvP|p~TWo)RY0Tg4H`5QN6A>X}!u zGAW8fr+STbH^FnExKP@Su*lMfJJxTxv-wd$+{!t0>@hJgKahunoI^?2#()FztEvm% z-py6ccG=YTX&j zoK-K6ltD_@Pl=_MI>G1qQUpH21=twaxB(;s5=#Js+SjDB=2{D5a;r*mvv@?Li1KuJ zGQDjFwk1=bI1lTtp!j++;=0S>f*X%;o>NUuhS5Xt=+S7v>BnVYa{yMkUAA_(BcJfZBbcKsxLb0Ooa)Kx) zO)3^PT)J){V}` zjFm6F{H1*T<=0}+w+FgViviU-riw%<(Zysp z_-hmk%UUSVovyurR@<7TI?37dIx(%8MvBb|$xx7mjhz6CKy<$ljm4x)bX+Ze>zkh4 zJ$bw>W^>r4fEe0FPu@nH=iF0TAzxF^YS8i!U7+dFE#RkEjfp4iq~7AOWT${gnPn`yfbCmyUfTa}kfIjpW&QskUJ8Pll|a|4hGxpayF- z(?6~9($Y%^dsGDWl`TFS=Da)qWQ9^#(Hq|l?(_t z=Kk`wrQ}p@0n4OD6j6pFg1>HNZnZCLm1qHVMzV5Yxg@bo9uEb})^av&o-|`11x%{w z8H|H#F_!Blh!lVbAK-XU4v(o8@m%xrF#ea!1irS?VM0Vd8lBQ?o`_(B1?7LbmD?gw zZk|&D-Fk)>r8hu~~&jYT#x;AC1o|I&SES5(a{#C_pGEh!paH$LsFt z*w$7$6sz&W@iKb6jsN=?^M8=z#{U)K|8R_7r#^oAQGMgRxASAZ)1j-*A!NkVsc&Y- zsJHui>eZJn`XM(Rs;z~IS#vJ+%gw}6YBO3!dWv`Jw;nBK10h$lZjIy8e-q^@c4AR*Wot(bIbAE9czHzi#p>QGJ3IxYZsl;{WwL2 ze7dn;1Rt>|^94(Z_TAw;V!{$gHt%z(RJ>;ndOsoG*js|$i%9As-+Xj=jz@(x#(12Zj z=%1&)(G}XgRaRs6Iqld~at#iUGzhbaDsm&G@J*`0Xv1)BId`$}u z-Z8Ven7IXPs-Jb81!bdk*Q%H-0bdg&AC}2jjXoJ6DENDl#2Jf_v*!(|H;U&?HmCbl zSUlRPL>t$paX$v`xg1$!zsw^D(;ml-$iBN_SB@Tv+r&ij!FkQft<|^axFBoG#>5*P z_che0k9xis$;|vYvzo5h6;6~x7&ow(k(U1~eSlA)3__t8yX}JPEPNB&;0RQ4kX5`% z|7i{7C}dH*wT)MkGPaXZjp`7@@Hfxf;KKe4N&g(#3c|o-=2_DF%@dRF` zvoN!)aQDU2VsQ}$>YLm(zE)BGkPdDX4{Ti1c}(kh-X>;|_ zpa7Yj4loSQ_5kR@c0lA98zDyx1~@0e8u>d6DARGkxz)I=q6@~Zd70;+>W*h)$A)8f zc=o0JTV+`rM1WhQY|{iXK6nTBL>yx37LqSI&YI!NP^5PjMab5Y3sFFYp~#H!O;SHD zvIuwB;CtYg55pX1PF%-BrZ*D8M6}7m5F@U#fVnLM6@oVa4se&QBNeHM@+$=+BmV*X zNPc8&kmwZn(D{hT3W2I=V%$w`2Ut*n=81zJrqVb3@A~yFWPq#`t#fpNseO63-;nT0y=Rf-v@oInZma4%i;HP@}1KQBtgd$LlnPAx4g1OW{D7k{abyj*7zNTkU;v zbzGYQCKlZjwXJfOPJ!b4hNlZ!M(m||gTRWl;^f`>roih5OLI*2qXVu5NN6zZ*7~>o z-gx!(W6@zWAs8jMCAgTw6E&xD#)z(K5WJft5P*lBm{R3w*cX)_Zw;tP+hZ-FrOm!n zwm2G7wl=`n{U1!33Pdz7fmuy}G>~Df0c6Yc#GB)9lGHq1OwPT!#fGfrwK_ncQ{$&I)empCBo+cBlx+?yYt^>g6w?ynP_K!kMLvu3%TY;GYUk) zdggf3rki$zR%^5%r9;pHGY9^l!k11c09DzzCP_`{P=FjU46;DM^!z`hyYqNXSTW9H zckWOdINOhVkyEt2#u|=kutENFji97!XGSMP_-wfg#{lQ^&cBTxOIg^Q#hy^A1xu+j zClI$p%GIjj0Mj3O@sQ_C6K&&j1<7}@N7-y{K$(RKYMg4er|oxNB}pre$-^3A<~w}8 zrS2TLt#u-!Rl}7`5OS9dFC6oHcT#tFfxU{5nmWihQ_faJ&DodopBUbd4Y3{P3`-=U zL(ck<&M3#OfHM6OCra}Hw9aHGsK7`W&Bx^(p2HPss{xcp@@33aGXO}FnQ5GodDX+^ z`CohfA3D@c@E5TmV1UTY?WLOo5yoz~eDtRx`^bNl7U37slssU8P2N~ZM4rg7HkpJ; z8XrN{^^(fobV(Jv6`LA`%(!nPZ$Ey9Sg(kW3;))|guA4OxULoB)!kMQGjbTA8S)GA z$Y?BSrV@C5{OoCb{X1`8P~%L%6OZWY1Ey_GRTD%M3SleYzW&%@5;32i2y5NuQ*4GN zk!AIQ%O|ODxBt$^cL9)O_NdQ0AxoDgCR-)WZ4;j}dqHKPrRl*SPpbOx_;{y$1$VJV z`c*x+`1?jKB2jRs12nKT&aRsw=%t?N@xmA5ug6ZsZ-$5w#1=N2FGJvs#~sRi!GvLu zEXX^J1x-12N8}XDHUF=#Iq3{&U$Rcbx>YY^T`xQteaId#C}QplpME7?`phdr+Q<#z zswU{&d}jS`m~88cXs7yrIi)mxUpD?fK6;36Ul$!R%*g?+q5Z$~=p4WB_!-p$ek^kq z47ehwXwy`85uc=1uef`oz482e3*S~8!|HFN(_#qqf@lj@F(57#OHPYn5p2~7%Fa?L zfDgWgK1b55KMfqW6NDE5trW+wR04^yb;w8 zlnfX>63hibxFwy4(Rxa+)Cnhz8kw!=uel9&&nOT}(NZAm^jRW0yDT`ocKPph^tIi2 zGHhDGkybZUq?biq_mn2+D(;vH#xZ3{sX=Cav(0WLNd|r1$zHY`7h4dAitD~Gxi-`` zRrr-TQgT?u{Bp9Msks{0lGhjE7JM{aLf4Kpu72 zG2P4Z6|HK9B67dX63j2)MM#gLUT&k32_ptD$TF>9+W&%_#fmvKQfcbfj0JS5gB<&X zi?PpUmI0AFnLASX@a_P?qEsjx=YyGHx?7OMwoDerbN-L^hqhi@Oie^s8e?t85>?$@3TNoEpas(Vr!Oiy>Wn!X(=kfPrCV4Las$gf zBC@&xjEKIoox+x~vakZwv*5&R4Us#_Dja<}G(EtLwEf~3eldBy+R)!1L&szXj*4S# z`i#mYJa0I1cUK0#$8m#^d)@P3=g;7OnfD(5gL6wk>M%x=B>xLQvx1w3wKWLbKuD8g z@u6WC_`m1^_ABvFUt732grnCYKxuw>xm&`a4-GO#Y|zr-gu{J-Vl!fOM{8}Xlm z0DbR`AaDy19;*Hh4}Dg4nll6pF;*nQfUifaLYpOqVb>aP0eX4<7baSCMk7RpuHPik)45%-?j7Tr}Xq01;3@+LdW)I4{FT`jg?tjpM9YlP# z|EyX!+1!eR8;poMSlriDBXJqAH#-ZAC_OVfUi-pp_4>=NANDJ=DqO4n%WL!Pbjl_X z&zrFs>`h%zblgOm+LZeBvm|cFon4LE`QH9xm45c;K)z5X#)u3#Aa{6e!wOzlz-)q`PJoL za{Fe9t{B@)mf9Sh0WFy){OeAW{}$;YCmZFp*2X@#tKk`9IuGe>kghcDcWwXlJR>PdUZ z1{IozhAZU`@8`sVZE6eC4ChCiC__yJ2n_GbP|O?xNQlLRvU%w_}%=;?2mrD3(Z$6#HIYhal%+DW6vYA zIi|=(iE3b~MdkV%1?jZ)ke{)X`u%w6B*s72Y#5t^dkCxZjgK9j+6tz5tohG)+I3*?a{IfsA| zoc|XW0(n>~wZdf=qIOF=AuNf|8wCSnJ2-bVEz^oGx~Qnw{0P4&025J>yXi2#=aGFr z{OH5@#=E`ffab&-)_{Z{nmj3oj`zZ9Z~?*>BIXYCG*vRUJNgScvnS``|J`D1KYijQ zi){+6)(RqywN!8t;{q^t9+3p|rH@rCfWF?+W`^kNM8-yf5~s~=MG zrbJyfiROO`0@_@QHY=b@ScdHK#ZwK;BcpyOKTW?SjP=S(uVK+4dXd3a+7fJ08&JjM z{}>pOgLoOUd}j_rZ(9|(p8DS}iw@s@`bhd2csaFv>2!{teSD6_CeCZE3^CGKMzF$_ zU9Oh%_q_2+OX%_f0BfW{L^~bC9S(+J?}JNIyMVQ@4h_jNzP!X}pVr|2u;*-Iym#WH z;|v@m8;QigIlAb>???{5qX0^>*RTLY7N=_2%_pkKleI|`L}7U~Z7c<1?Vz;zBjPq# zBxGt(B3OBWjQI^Sj`*XVy7(@28!(|Yk{k#wW>Ph!or`^>Ap|bG9(&`J*Yk~+U&jD^ zLx-nLZo@J#4z@pQ3XWG2y9j zqHn==v_55+>3~-m+v8(YNn4%Jvwh{?@%tG$kPUn;fk}Z0-iU+NOQY5%u-P$&TQXRu zTl%ZoO4p$efN&tP~LC?a^ zrHgv_T*oJz6Wv4^gbHDzWj{@)lMek(`oWQIe`!aRnu(eMUX*DXuwFNO;P8iR)3kSs&Bz`$P3AdtQTda z^JpV*sfpRkbZ0C?M9u}jqodO)4Q`KPntex!h^cS8rroo`uD^Eo`uBMu06MHue8=`V z<~sc*K#7$p{N6DD(<-B{fM2nFZOLT_unsU>%8VSbrBDrLx0E%kzs)|$|ErM}za!kP zZum62;_qzZ$H-o^Q)M2WdbJILAmfkgPKV!p@9X91w9Z{s?=@G=77C9Nm|h4^-L!Y; zG`~>>O^gw^w$Pci+08{>6Y`@!QIIL#vSpcMYa*MDtwvvq#S8gy$Wk%hgGOidM4}99 z7$Fm21g0e#B}ND{@Pc#QP<@;@&!Nf^EM>klGJ5Uis|n z_30;{t&!7P8tjn7`X9kCPKBgNm01(7YJO`6{BrsCw?BFmKR7!ilv6SrzWKtlcWJ`gN(0{QT1LxjCp5x8!2T`9zNfSHh zSDL0L*CY15zYy!$%msc~e?mr1bG#%SU4hj&w0}lJawY;NR0KeuQHil|DVh<#zxMKa zr$gI&ZgVMa4{t-1YLX11_AM?e){e4n(>B-t(PB zHGui_yE(vzHqZ#KRZL^y#34bv94t-nyoH`Edd!>x z7{>mo7?X6vTH#F5fr_2zx=_)K@><(pw~q}z1xdv2z)Q7fKJ8uQ-05KHM$iDb8z{&y z1*0;=1Sb{taQRt|ynL?faOXuIC2bU>&5cDFiCt|wh7#vGdUq4B(Z=gvj|)!5|E;Xd z5(F_`O8wgaN&b<`G0_;gr1N*Oe;qBX6+}}77XUpwc-J*WdemL~f9>M{kF z5UcR=(z2#r^sisc_S&v{G(9gbuinytVEJMpbE`BH+I3W*Qb%gp=Pj0%|1|<8m;@z1 znt@>mT91g~C|qGQ8jQ0Ys!R*#{|M*X>(389{2;&ey>CK4jmXC+)+jmdU*t^Jby&vA z{eD^Rf|FEAg>KlB%h@GV2#U9+z+C0cI*DHTUo3uDz81V|+xdGU++Y7W#wcKh&49{s zhjkVZ4Dp5dKU{xC=?z0Q_qIrgE%>@_X2P_SiiqZKSAr;9dc0=! zw?J~)?u#$Ik)M6>rJm9hh;K_;{X(YEN0xBKD#-s!2)l2>bC@@Z|NoZ{AJvbr2xJv< z%pdjE!?S$rg=aA#X!}J5!@CO8GJ+i<-tVAtS{MFzMOX>52>0lz1FgGVmte`xunNQG zpwqCO5N2>)rxOK%3oD{2Tx*~5r1oWq?BwJg8D^j%d3^7bBr~>COuP2MF&9!Q`J2m|VF` z7IYSmIVVc67JBJt?mEnhxp6=L174F2uLGS>bH=1y7N(wVGyfXMbLKzshCtZAbQZ8} zfhSA4v!t|%U~o%R)t2GSX^ZXAW#^Ow>?V2#_Wq07$ISvz&p=`7m}ndbcZ0(Q00TP& zDZN1?*FfW0aZqvzs2lMrob^3dM(-1f8AcHfPvN_5Y7j)kjc@TE0Zfo}{bk)HM^k4G z#sQ*mX=4RubD9tUrZ}YynI=op<~)HRaoriaW>`7osuKbs>{k(wmsvVXh?U_Un-LQ? z2a9o;n^DWgu8ys2p5t((HN7^W@*CB3gAV=Fd;(AIH}%!J=s17x6?>o@iON-zz zieyPkxEUYv25~puEkzyCM|QTKsEgI9u^iIz!Q1kWpM5 zNIyR}ciP{$(P4M!i_U;3E+cV6Jl1p8K$)kz_jCj9UNe8N2(pHG;mN6AF2S83h1dwD zfB3Ve*^4Dnp|4+{txCHNCeD~9=Af|=9XiF#=d}Rj9>WfoUQihWF!I}uz7ZNBP|7=8 zrP>zQ5bm2H(73M&{tuQ*(WX)Nc&sIF`dI#3yGvgF?3dz&M^DPQ?PlR?f*HXft!4lO zOL@_aYl1n);QwfkJiD;m~0ZG;f|cNY7klAh`}? z1a}Kyez5fE032+0n6<|U(o0CYsPU)dgZ)x5x5l%sADPA&byh_MacPANa!mD{Sf5kdsQ-pOO1ZdW$h zY0J3C>2t6%k~!Ha!yQpj2ToZfb_wCmH)gKmg+_kf} zw)yd-rJBVyABx)RBVe?2S}F+F%^R|FbT|`;2u{WPPxI>guf!L> z_)=IL8vW>(in%@6y5IC<((n4ysWD#5u|hrwU2|~64~tD+{ zlSddY5|d%McdD*2=ZQW2Ge$UGeqG;$uy#Z&o0#&TR!;nZ*4(+VRw&lsm-U7hUOd&u zADr{tPrBjpf#Nr8u#+C3Mnuvfb^$;|7k6Bq}B&_MI+R5_&uvDir z7Bv)mKt_gV%UX(0rY~i$63v<|dXCgPZ?50AaeV9(_ zq*T9bBkE8X=nn`&oEQ|;HML$nh6-gj8)>8mM|PW0BZY( zMhkbgdp&HRW(zoIFw7BQZ@%_sy!^SBF}GJ2UWK^vBCI@?8){qdTrpZfUh7!wI-|^@ zvRL=6x!$k_rOC{_@^>%tFYmtkpY&Ds&i*4xA z#j{L{;BW<}>8k&q&8tWw7Njc@WrB4oy=)n?-=Gi7c0E$2=ICY5Qe=Cs^KMOU#_S+a zysbh*D!?l(Tn*8Z;%GY9cDeR&TGefA(SOK(Mu)K_%IY>9P%=mQvmnf2U5K62XP|GTF-E?BER9xA1p^=kkC5lCaT zx7`AA`IqTAhL)fKJg><$b_~0trqWuxQp~JjJ&ngmRRi_+&+|*O2o;3tuXC*H97(=z z&2~OA``d64;>HL$4$xeo*sTqJNBvP##|qsIVm8&S4#`42MXu)14hR0v(w{rqsApmiD3{Oq@(g;qsh7vFvJBkaR4^6|8-8HY^o3L z&_A2K`lZiN+Vh!r=4iaoL~Fa_nm73$9Wxa-KHn7NA2MJC8SjTb{z1O`{+lzN0%@?nBi|W9%hk39mgTs%MWq0Yzy#kqIg0s#Bn>JJ~IQ=|{$J ztl&NE>Oj~6z8L>L3F964mSrVtztQY6S-un^FMR667fEvCLe^&4s0n?Hk-^hF$+&}1 zFgv$M7!H?N8##W++x5iW5fiF26^WS0Gi$D05Tj(R<)0$1p?RX@3pX$z$h(+ub!>Qs3L|N)TF6r)LJ7FjN>%v zuO?vVy)Yx;;MDv7`w zWi=WiYKub4k_24jyY0-dyVK?cL>jgV*ITc@bu{|!55H^L+tMv-xX<4~A_tdU~n(r*iRb|J>RC!wtX(grD87%vwH*7Z<_4Z32eI&tNaN;MJZ zWXGK?xS&BjZ~av&ZU>66kPH9vE{~bx7hhXSrH_K~I`UZx9{RLfvh|`qA*^1xYPQr= zdyO08quV@k^sw&|Fg+^I z_)Ok~XjV1o_pkuoOtAeepvxFgIW)zIG<#T*74sI-oleR3vb1UURdOugrU|PFh#SIr z$%0w&-Q5YB8AV}lW09?M-jzkRcRG)`9#Srr;&m)2s9c5kT)+~>YQeH@W0>&8 z{DAKaz~VNZXI%B2TTNgPF=>mR87|v%`iqu@v9sh(!<4WJ_^O-nVxyd-LmrfNHJL_@ zC&Bny?HbdDCnIj1KESOp28RpWM>p-ho~qx=+jZ_bW2@dh7tp2s)cvx)247>2RArV} zQ(o17xQiKEhFHAiF7wRE1B+)mu+0y@|Ko5HDeBpxY8c4m6J=thB1%Sdu-k$OgSeM@ z$+iFQ{oePkk735EFMX*U$ERo#@ODZ~+8tRASDd||7;~de1YAZa+7{|+9aG#nAa)+o zS|j3c8{4uXBgT$_%jwf)L1f+MCVNA;=z3h!6nInl&%vC7*g_a z%^*0b9w=BQZ-ji>m+R^_E*BTtTrw5>On>`w)+syx*A55qA>%GfaGNqI?scsoy(~K9 zb*IDM{{A=O>C+Fx>bHoIc)2Z#n4>5&@W$@M11*Uq$2?TlYDR*-&n^uwiw^NiPoCxz z12c{#0H`+~o*l9I_Q$7)FdL-WA^}5LrpW1Pi>`2XQ}hr?QsaHwJ+hY*Q~-?MDNP1n0jmzu@7ij6{L z8o*tYbN!a&5jZ8_9rbgsyksXJSu5xlSg161+mQj*6*GYM2&(If_VooyvT?h1pOLJ- z(i*J*>3mgju@i|t78gchWn@m(+rSem9U&yK7&kOj~4$_6%QASu%Lup&A9~```Ofy#M}>;OAjE;T2QUET@DC z&g@4~*e+sZ4Abve1E;2VRF;l70<8Zc3Ray zFEVd%Aggchs7*4C9cHZka3lQ4I1=`e{}Yj2cXp(}7_7=Us%)KRvMR?7e_V0ou~>Fs zPAkEC6@6VR&ta4{-QIY|_+QGhPFM?pr&QKRA6#Ts9dd<&#uhO-E#8{f(39LI`cdr_ zK0_!O;rjox3>9VsXvi7_{GW;sEOxl=z?nA5{3fcJ2tY0!B5=^>{R|?Ig!>@mMuCCRZmqvW`3YwF;3!?yS4fJF=zSpy?+k z%uFK!Hhu_g9BRC&wWHDdtWy0iZ}ifDhq(1q94lt3gyVCXkvgupf4^%N*1gA~4LtDV zQ+Zi*sQ%Un)Ouw)g?WoN9$M^W@)csWVc5OT!CHi~g8GLAlCrnVDSq0^6~6%*VT&#! z{KvvYULVa3>}*7hJ3wn*djn|A|5&FzXV;(0wAq{vaEmT60vlr1xE4=+#Tw$e)8Vzx zzY*Vh{~Ph_*?0xOrq4tTfG;hPV?v&&Bhh5p^lZP2wYt1JV)rt$im!e65MO=rG@h_v zkSw16*T*Y9zI6G`XO9#IT0KJ+4;D=jM?NQ1dYJJ?#i%lv}CXhV&W?Dw417FE22N~R$ zWd$pTT8+)-tr)U_LS>WHC~ON?ms_{0*_Xnwpl`7$ahYgIy3X8a7u^zblYK_`{EOMyR6tc>(PQ>S!;1M z1`grFR*g+9M{q)7E(>=1ft2I-)L*IIL+(%yIRxM}HUGl1i|~%eVPXP+Kc*^@pT~>4 z&cc6*(IxktU!e(?tTgh!l{<8bAz8Dv^uTp((-Du5i74JaV}_uOv^hTbmJsBn zooilbu8Hwsp)Gq=&%;aybev%`p|OCvLLneSF1nlEn>TK68V0<$oi~vEa;* zXOpxcN0qwdE%DF8PSa{YK!WPA&j8NN##doVzxVUteg5j zx+LyLD(tpB-p2r|UKStg$?A0+qxY~d=T8O;4mS_wfTExh6`VbzSZ_o zzEH1!{>^%L^bnu$Ns6m@WB$VcW#o=81i#jmtp5j65abtDw3R=s>pLADE7zSBLs3lsh4pq42vhQOr)5Fbge&<+NVStQcd2JVhzsptjQy*gJq$5PA*iI%bo82-mqU9YkQ$23L6+QB;gGA;Tsffr51qy!5k@ zsV5CV|B!k!-J`1`O?p{YLFcwgj`U|hI^@()ovaz#CF8Ofam4&zQl{5&3W1{exaeto zJM+JyZabmwrbSWQIW-wuYYKQ1h~wPu6m9vhW9+WgDo=k*VzApm*s$3y(KKR4z%VW1 zR9_Bn8i0e~;C3?azUFoX1I7(&VQ~CpWR+qYP~(cMe9;c576%da@WH%>PB(xYMI!TH@;?x>eY?-R8U(>$u6RU_{70B>aa52Q!^ccs z*rNTK#^Z$e5_91A>?1%A)XOX=jL#Yq6^Mu1p3$)p8f@qPHo7N3Ls*vO-|-^KXskFT znuO`mFcFcX5L4t@esU4GgP4f0PGY7bzoG=L@<+>L90h=VO2`rwX-UtZYMI8B!o#w^ zX`2QN-n6K+!NT~z8pyDcSaB!+!FPd7w}t1CpO!iu8Q0U7MTh$C58u@#9hKGZIq1rR z`RoNqiddp-vKhX6FDN-+!1CV$IR_KqHcu%;mOOMo+8w$zN^L^+*97G4Ns~MKs>`Q-roNq4+M#o&VDoCGoRt z@!H%Jh=Enkj>kLNutiSNOFOLwD)-+yl~lO8t~?B1=P~C*93&P#%zTF|NCicE-B2eD z%|OoSFQk;d)x&Pct=jbR^WpT6uYLY!f{PAY>YK_Mw1K}y0hZ%xfn^#_NWvul_fEtf z=Es-f^lQhW!^uL1QG!*qOvuY;=B>9DgsYuh*P1je~L+(qhLB zOBo%(y+_Wml$%I@$d;*HE5$_cd`{}0kkgBWb@22wZa-ARClpaJfYEJ&W~GHi<}SOj zP-rm?tyt0!rWq`VJgv(V{vQF}DuJUU9>o=Eutdzz3&Symdnk6kbn^dV?9XFwOS9`R zZ0-BTs_O3Qp{iQVZnB$ADrR>xh$LzGbusLLHZ-IM9D}*N`R$M5@n0sO{oWVRdutQHIVF~hF9;syM533_F8-G zbAKiIR=wZ7_YB{+$F+y^opZHv0+tEn!IHPX+r3AXAi8xch*iGGd?_tM2&aj{tIR_k zc2DXPBY5r~Z(Z85-}ZrT%O~zVfdP1o1`*>H2NiA=Hkxh+7^Ek6h4`lU4uR{ByNi-A z1!*yW!TWSHCQF0uFs(V?gP@JhZ*Hm*P>g3Fhb4k@8+`w7pq8Z}MqBtF7YMM-EV zR0qWX#`X_-lQxv|^Yfkp}h7FlQ0YsA!WsjNU zAp|(?|5or*qk!MqG3>WvSxVN12UDIxiU0f)LeX7;2CBPc4-x z9pb-)9K!2~{C!0<8f_K-N0ayH$PD@D_;1FkFf(P4g)3xw_&-_nCvw#`i!>fXld;F= z2>lZq(?I5nO71^nZ+dQyW!b3YVtjpN5yjd|-|P z!%~BN_&USs|7im>uUfn-y_S=&nBFXM4r0JWHLkPm6`-2L<3IJ$XyCM?^Zy>1gu_4* zZBJ$F5gm&HIQTz0?W=F=Jv+1Ecsco8%B>g{uYT>-eYFErw4e%2Q5GIX8cutHg%*B= z+D$f!)IoeUN=D5pItv~VsWsHAAe{mbXeK=VQ{=&-hlMraGE9BrS{r#t^VKrqbY$-Q zf8Wng4SUf*fo_a2}34B$Yl-p^#jc^0sZZ(m{N-Ukr1> zue~%Kp1pmhMXzIvq9Lk%^h^gJ_uU9xs9(EQH?EDlq=MrsJJzib-Pgza==kcm!=D`xz>fCMJv^|`z6X;*lZOS#+Ej$!PC0EQY# zpPsL5%2Cjnq4`t&X#WurWx)*|W$n!9hYJRCQY+R1)AIzd5$5|%OM0+qN+FRq8)>!^ zlh1JM%A8nc;uM+kqPE$6$LSQljI{-G$aZP5EXpXg7`{&U>R{$_K{$VuL|pqnGal;> zlrDeDaUG>jXfA%68OYdnzhZUjsRFE6r~EG(^@6jG_V%u%WeGh1|RTaKNlL;SxTCax=5jtSZS0Q3GRzL(lNHU?>^=G_`p@Ytj>E*94(2_%$0xef*~ zJ(nq|1R%MlF)sgKBbTTeeL)LO33Ex}n2kvQ=Bk}lq+k~#N3M7%AKyzxu;k{vZgH*b z)ZAuzd837tue3=>x9Q_%BT;i`XBb%UpQJ`Z>1P?4?T`rAs@co`uYUbi{PNdcX1%ES zJXv%ffm;;HXT&iJK#;PslAQiOWYjAkunJuvZI;rU_jR@3ngwpQ)*m^YRILaD&*uM- zKU^`Tl7JMi0+fY3+Tr9`RqLg);a0_i zrDcd?9^1m#@#A(Do_liRE6trQO@}*KO@|Txn~&<+ctGPYp<8p(A|f|c`4By+`-DJ? zF1iMOWBqys9-O1gsAEl641D|DM|k>lCgLpq>Ag3^f4)K;GeJo2Qf}#+{WBd#A->RqJ(0yXA`HHm<)!-$>loe4lzO_uGgwQ(56K@IIyZ8q6He6R<=eWJm(rH~~9 z^}AxszW|^*Nhuu1A!Q7-^cW!H&h0z+=r?^d?%uxJsf3~ypdm?0c0ym25%@emBqk3r z6d5#39K|j}I_RffBwMscRe zwsb}_vqq5JPkwjybCkPU6K#ck1;a8QGd_;0+2(XDSLF$N6A|McMM-54fQ0)TeVe)wTH zkMuRaJXpf&qnqLJDMbO=p?OjQ13SnRDAF};4)CvBCUek9J2ISFQ_4NVelbLsR6MJy(!Au6Xq8lh(^LlB zkaNr57pxa?w2)v`NGCjGUBd}Yv>pE~I(P*)R_-muIqD6&io+xkbDR5@-G?q<#j9U^ zbv@G|y)SU`tY}1FgRSDaJBo`b?c&GHlRs6Yv zGZM2XD4iJSDxMq~+mIjW77Pz3Q71#V&y^Wj{Gj&j#alF!y+|h$%JV4y0*tbox<$n1 zDGSl`x^*N@d7#^9)wvRrK@2gn>ma0er?Aw$O!xNb4xW402XU)zuQ)mq=QlW%6W6{V z3R#+3hHKTfVTx7~c5bx9aCyCX-d8$oKbhHU)IvdMn8rVM?-8ClwY$?PDt`K{vX;2h z|6waW>=k1{nIt}kS!hsm!LZMkI~wDXl?LmMit2404+ZHJ_rt!+rg=++5(CdnPWuy^ zQME9ILikoFh)z&L(F0)a+XAbJhOo{8&_Vn_eNWQkxG%SQ<;*mBtlt`mUXSG-JwO1M zkwJz_L9@^Zb!be!b!a;IFf-1w-4+nSgCe@0U!lE0%*j;lz~qZYmKZu-7P#%XG#&Dz zANVNl-n#2ufPjr3lJ9bYbn*oGP{hvxv5q4iU{l;Uh*~UEeh&@}C|iYPUr~&efynk2 zt-B=DDx_hYldBl6b4VghnT_~0ha#=HfSAv`V7kvGV?Oj^G)<8v>%7V6I6`UwO#Q}Lg|XSDSAZ&+w{+;Z&;q#<`Cxe6HLUgXA^eo4MUMn9c&gf7it zyeu}mQM8e^kM+A-CNa8)py0Lg)Q4#+TXsV#&e^f8n8blpM5KxXF}=KB7$B(YER2pc z;(t-N5qWAb6M0oW>V$CqV3x@N&19I&5Gd08-;5@dfnxZ7gyjQ6vVtb+Igf|PMDsfS z7r~M9;Q)byoM}^L?n0&<|~`Ypuc49BLHS~+jDkzTF(Lq-1W_KL54GOcsN>_k7_|+C`QWQ*_4R(S<&3^mx?-TbQUYZW)0+>a<(Mht>EKPXmvbFe% zI06i(Pr`kNUWRPX4%*2UN$VLtZ6G{0ZQhMOyIu%kVs`w`#$ucvCmxBm%n<~NhQJjb z&it>eX30(_)27;oLB44DWJeCBmN-g{UAS?DLypB@6kP~Z@iCqo5KO4^7=VOKi@KS= zTNct11?&_FziHM0X3jbCfl_|DPzs|Z^W+k`WoU*Rl?X={Je-69vQDCm_ol-)eKhXf zzKcdOU?yNm2MZ17tirfV6Pe(rlE)&7CJ9ah*J(RQ9FT%!O$}r@RV^Z*)yR6bpY}Oh zr%ujV3T2|z7D-^kWHB3;*7#j?$Q?;I+~V5AqxVyf=)xz=P|>C@TUawMqSFAoD*R@- zad?cSIkdMPnjt4d`!CH>!g-hVNJ9@q!Nf@? zY!!sp+hHyD=&MVKg9^|n z0~~@%umO;L3B}|%Y8D583Llb0^Ps~P{!$N>1>`L2P4DE#hC?R~vYDO|CHpe%>A(su zwEVNLzpSHle|wRRFJZLy*1YMKo*fURTIrxL zc*TGD|5*i8kSOUc_upL~cnRtdibqLYB(@JFqyR!-m3ehhX9567M$RmOfL0NQzX`7( zOr-(x^LA#raZhEu%KJ5s48F&_B<%G&xOM3A`|K-+^c)v~#SEKRCd+(-%h$8w56u;&yV*$Xbx#v=|z)5>EVFV?LRS?@?2L#qJx zsp85>vQtr-%0;xebHA_TYk!{yE+hJgqRp$UwTN;Z!82e|7NbN?DHUu*DgnX@~t~~4Qeab%WTuoK2QEG zlbwkWIhK)`C9DXPhRT_~B2++85)LJmQ74io$u+&c2HS5PBija{0!GsEm$^z#qq?$z z(}~59Fl{(nG#1%=&WU)RRURfu99}E-?>`=$p2(Ke1*dQzScR_esBM0UdGem-s1=TB zbUTS>^Z!BDj9+;*rfT_icrB}&_U*=x#DMLH{>YBBQd0yCd7xpL zcINP77&d3gFoq99A|H_;j)e5F29q*BWmRQ6#go-WNVN^yhH6w}u?uKppk)SkPFkPT zkOrbq6^tYTya;dr;+3`(`^^g@xM{$AQvAX9UR-9 zVL4d?hC2)M;g0_?gP^-+>o9us{T4rte{8xi$vPV(l^gd({m!R$3QxwEhnh6EA@Q64 zp3D43I4Sw30ebJs)EQh|=;Y~qgRbfSbT-d@Z>~WA;cwYbrUBs$NchYI^=er`}S-B8F8f*5m)xSi>p9+ zLFd{SfZv)`1t^-d1xj27p9(%Sv!FdnLeZHQrkv-;+y&pfr)~?X^n#*I0G5}^`chZ# z2L;7f9=4TyPOBh9^lbuJdH zU91O55*u4swWxq*ujG9H^@_F9frCdo%>*(im#Ns#A~|A)rhV7hSMG)j%|9~!vs8R- zyS?JgJKL4~pnB3`6km5vtLd=yt`ukcJzYN*i~dL1q0Bqs^1Q)$ z3*T5N0&(#Fvt)XOL?&5~!py5#1lD1`T-z2jCF5~9O=xsttWj@X9r9rEcf{fAcW@{J z;c%=-J7!Tg;HUk>kihv|F>|^6Yk!bkQ?H49q^zP5+O9byVk!|BcCzMIdj$aQSoLqH+`Pc(n)H0eccLmL7nJ z(`A|~12|dykFJT=11XzJZ+3!)7t0lrayrPpS*A-x`+qqC2%3v&*#Hi*=Ab4B%NiIS zV)(y%%5g-QWLx?E;v?TshJDlNW(VP+r3uf{D~?|CPmljSrMF5n!KLXCUw`da8UDP< zfZ?*y(q00uf|O*I`2-<#y+yNR;Go+CVkDbn8TL6*p&N-fn)@w#?7g_Tu@{6E;_aX#f3;d&-slw6}r+iaZ#NHz}7 z^x#MVYo6q4K83-f;=fIgySMM**>`@^`oRGS6gSlhw5>x-moGKGiG!Ifte*^8|4jrC zhT*l`9wfP~bci^*f0B>Ozpd%;@p}*R-l8}G)tcjK!V&L=olPfd{Nx7D(~t+AmrYi| zkPN3Jw4@@5FanYZv7$hk18f*eDDVAOD&BnSt^7y-_1CX>zC^mSwskj0bRQPR-jj6eJb;QX>NCTF>an%%NJdCl3X~|0ArL zpvNXxOsz;D+L&#e(~yTJ6|t>N1+=4LY2o{GP_moieCAHuV;Dw&^ArNo@`gb6qjb4H zrxwDzk(N;3W!41Iz0oWMTp<7*%0wN)6v_^;3rDogw|Oc4k8pj23}TV)!brfHF|-O? z$A1{64Q8U#m>khGWT^uD%lDUl^`(6Ctp^3diiNs8*9?$Mm-M}%u)A|AtRzeo<7`VO z&XIk^KI`8aZw(vW6j+OwF#I2B{x$RepiJWi|JMbiShr4e0>dDy;&$*)dZ-YY?iveP zU{~E2jQV5yu%*y<@1e!hB{rj?`G2@clOIxP$7fR-Jhxv37coC)VecY=@LjAeF)VW=Thrkme+P02r?NjF4xmg6SP#TG)aYFv5ZE`h?c#3@}NZYbFZaK z9T!(VM7QKVI$#{=h)T)`((BhNe$7X5D{kS2mo3*`nu&%+T|tbJ<06lb_jN}eeoufr z>d&4wW6?xnK*^3Q2YCdul3*byqe@r;SO*z+7U6ZiZ}WhG2AU?w@}@kHNVd6DeCfk- z9{0fJ!T$FC%odm@v|)a&{9H1a@H)SQt+Z%#N(&%Ku%wLu)Bh#cLjimxL%MpqT#GPZ zx8fAXG?g`Ut+a4ZOsloRq$!ch{g|vl_uW}Eg59h zoNQzFK<$}TyY$j)44xX@1D@D3(q$iDvOzB^Ko=u29uH#euYlr&H?X3U0~w^9m@-u+ z8FiXs2&oFkf#yVRFm=n2F6s2k7%m1+kp~}=uXU0ESg}PL>@0@4WOxTmvJoK%*rrj@ z@S=l%smYL=fdf65#>$)gDZu1WPUxmyD`QeIa5#O_&I&;O-!qZUrm#*zCq$gu4jvO_ zi-F2KV);aXX|%&2>0crKA#-D_al-8!3|tA-ZaG7H5*Z&3#@5-SMBeYEji;y;cEz^{^I!i1Dfe+`*<8z%xB0eTYc zGaL;|M5Iw=@R-g=x@@rFPhhx7Ek5jXGA(2^GCn>(#us0H5pOpq_a~bT*k8j0i-nu17x-tA; zj^E7ZJMTTh-6alz5_McUX!zUX|LO;G-m7u1_>vfqlfy!Vwtf_*&;0*pjJyFAwv6J0;YOc$B-e=p605_c4S-{av7Wz&OLn`QPBq#W2yXk(Y zR!MnqB}W{1)~#8c43#g}=+|~l`IJ#&KyaEZ^<~K2;UU?z5A?-l2}N{Q@$LAWM5R)G znqZ@;;Xv!@og!I&PO|K6I4Y!mBdTjRC;z&NXt+Sz+lzO0KTe`Rw z=C^Wo8iZA0Qt}BMNU@A4khY_7OO;A13F}`lh2fT|7pupb~y6-_7gJ|^Wh0#i<%M6(ts!0|AGE# z$+$9k_nYAe=>erw8!cu^){jwO$uSsWfD)Avhm%D|9`tFxW%Nq4 z7+fa57oOP#9U!X{8fiN`mSe?Xa$E|8-+B!=1}}!D-V=A7*ubsJNLF{I-F3h9eKFk zP_~{VB}fuYQ$L*?c!>el?R)OxRd)lDkDtVm>J)yXk0C=0T89_^R^>wp>b=`M@|x1!8`^fA9WU z>992&q8>z70YJp5F!auIG$552Rbzy^BM!lNk(xzEYojFvbW-1VsVf;mz{UqslERH> z_bwn^w6!EHSF3_y%$9;*bP{Fj-OiR|#7rm-+Hc`xXWc_UEa(8gQtL~2%Srs=U~?EF zgjirWL>Bo^)s<~ZF^&RSFl|*}He<_|(RUv^nx)v9d^6!r3`rG;)gkEN%KOjRKX(~r zO;ia%r*S6p3SErL6=>SJ%XwS?T$+3k-Y!q$!`~^~HFoBlxW0yY6+A?+a$Fi!^+B60 zdAD7qR}Sfv52r0Z>)2MbD3|k7iw>>M33<5>oMX8a(N8gD6+viv)5ZnUd&)nV1RGxz z{l4K8jnirGNAgqEQVI)8r$m1Ve0-YYiArk_$D~(ymT;|86KzCIoG>z^A-k*_q{Z?aPDt=``V!2Rh=p zdpN?HEQ{Sv77DfW9q27Y=yL_W8~|#NGQ9>x|2?vViwD2j1)3rnWa6&W8Z>`WtV=r#}1HsM{-`gg9a#OaeV|ZEzYHT=;MyqUT9fB)`mI$&g~oEf>UFvD}hS~|Zb zF?LB~WPdBNs-P(k&qEoG5k%5_5^iEJXOutcnA%P=QIdmTG3XLZ2xwC%7OnwvC_qaS z+geHCF@q~&O66fELCH@s!vV&rAYQi~>v$dN4;(xo#1Sy;8fwTU%jWD#8!2+{WC%NY zESFtYq&d(@{|!DZG}is;5`!gOp}%WCR}vK=S`NxmLFm{1f|COPCQ*tmq4Rp`gVtgR zh$q4jG#Zl*IaxJwmhCBcYw~jWc5VjZ0nwWFAb*p1x?|_DF%l8earrqRiw{CEg)LDe z2n+}RH=i|g>&iIi!KzvMVVof`X!$WEXf0EB8$jc@u|XcZi!`yxUiey8yioiVzl zDkf-__Wv7}7l*B00X+7E*^)dJH^u*Dj~pXAM7e+>ghdQl!(<1_!1&VVU>ZRHX|-Lm zrTE{`$;I8+__YW zwbH?Bh%6J7mzH^&ku3%mU)f-fqb)MU5cFDL${6l{qcQQ>6m@?1aS1g(Dxawn_atTM z#f&r$t2h{b=~UbC=fdHRr@1#8B4zYNT0NZBuRXN{lSxK38tLy0{ji#hM7`tw)A^ov zJXZmz0SAi7L84iwh~29g284=e8m5Vmmi(*;#(&)0ce+7obBJ%?G+E} z_6kxmUs8c3vPX3vUPpSfd90uPY-VTv8L;?2CMu)O>k=dsj1>R3*IMD=(V~WX?e#bC zk3atlWj#IKDLNJ&rf8rmQD{sqsnbYRrwSwu@2GH0hS!Lho(v*v-etT<1;Vi8qpzB6 z`_%uqeuWL^Jle6@0_}pq%rSg<*?vMr(dnFMp1=|YfC)D#@6Myq%h=OmX$7xTs9%$( zA?6x?1>yp&bSJ$u9rDA^eYnM%S8@p@cWA#43_r`O7!omzSHXXn=8Z2oS_y6jnMwl4 zFk_qBiXZEoFxR#dNt=C8Yt9i}OA~QrxShn10F9M~#D2ot&?tX}(umTVPSb}tHPe>p zuX9|=bCLxV1~3g^u;xR^|AmaI#0=aUig3mM_VH}XL2`g4Y1K~7r251d*!Vrm|NTlD za|Y^cCA6xlhyUxU`oOG~OYLeQv|+^I;$_Ri#oEZtz4HI7OFT^cOoyFaG#;c9^(xAn zfEa^yupbh(AhXC#6$>L?S@!RkCVSCNwEM%#x@m2sFa#*XtR*FW=BbNArx+02L>vp7 zmbGOGWe$r+pzWd=X&qW2L1JiEW|?Wd#uZ#!xB_P2cqMZAUnRi9@gv>;6NtF-1qk{e zq4a6z`mirH6OM2@hZ=QtHo;a?9)vaWJAI(D zu(`TR(QaE3Mxx_c!sCAfBASMfAlKMQh&9iPqf(Wu7bs7MvG^}pQ5faznH@n?HL_JJ zvF1p6?Qh)zm!^pFEmx8!#AzYN<5y4C5ls^+j)pr>bf`GurTbV;aB5H*6XxWWG@XEc@BU2!EE*!Tr;Fa!4-yk6xJKJjPYl zv&Ox14|~&LQKg&m6E`(CS+onoaqxeJi&|ZBg76-ddJTi*FFB8JDHpYtEQX|lfj->_C)9?a&0^8Xfb7+~#3j9T6250gcWcbbIELi}sr z_y#`v{0p#J-LYIKP}4IpyY|jvNCg0VHby3Ggf=%kD@hpnrr76&lTN4-O{fIwcNGx0jEXGn-gk08HV;#^g3W?F# zB>7)|c%C+~gaj8m98nY)DH$lfVK}lqPRk=t?R0rKZGtNkj2nE;WHV$$TZ$XDRbb&2 zIIdV3F~0H!n<$1Z5|frvd1yFs&WUdjkG>oKGwadm_AOGpg_3ojPo}P-s5AfKAX;_7 zynAu&yUIYx!D+8H+L zwf`5`=--qb1*>Kqv5C^@I7$C8Aq8{`U>{Sy8@i>0WKV}Gd0uVJF1uDzX81>bn#sbL zfC_FOK3Ze|hG~01(Bbs6ZRT?x+$D!5%2*WtjrzrOGrx{KouYwsfQ~rn z%j;Y2c81dZcsX)CkdjF``94O{Y`M^!2s27WPi+w$Nk;ym26K^W{zut>w=bmU9PNX{ zCr$?>bkHg{fGjj&z#nG41^ouAArm(tEbKLdm(y~;%m~S!M~7=_*}|pS@YdFJh)dI< zB^#9?pi^AJWFHY4LX*GR;EnEMA^t{Oi-19)NIQ@I~mc#>=;K3YpZ6s&Ntv}Y2XY6$d$0>2sQSW zrUVrdRRE_YodgAFuD}G6m|SWK6FM{o^VNyoF_slpfDS_<8-1Je-A}zIKX_?6a4xY{ zxKYQg0$piD{Za)h#q3&Sa;JN_0}c6;MTUAPvS25f}uLveYK3$zq$A*RX z`q!XdVQSFhBEEKQ+Gk~up#kj(OJL2OJ1lwPAb|)^nXrv9NBDK)*?uO-g$Q(Ev;2Ub z*U~9?Ge4D-!f9@q>vOY>6X(wccy^`j?F_>tFd??G6JZ zmt1GK*^!Px#TdvE7HwR1<+3e|V5Tgzssc2~lX-G|AFkUvXkr!n2Jr&;3TRjMIQ&1Z zqEw?k5ew*=k^EBnJgNLDA;(j6?&n5a+1zr38*nNOal_+Z_&{y8x|voE#ANWmyo|~w zNi*!sp0xo02m6>CVoEuVye9nT0$m*d9K-)V<28;N@wS>8DX#=E+byq!?f{w=XIj=gDIxAt>5DNMG7-1R zb=rPed|TmwFTMQYw&LLs1`fY40EH_9OV#-P%&meaMDuD>5A;BtpV? zW-Z}g!-PW3*Hsf9L_1Nm}eYxlg#)2cVoe*+H$ECDde-#btVYTBB5MfBW9{ zFv(g0Pz9(*8ZWrl?H&O)(W51X{j_IsXtdHl2vMya$|4XJ|HJ0#IWxn{v>I3|N$Scv zxZ)ricB?k+l@M?ftJ_(a`^0#LNE&1vA5t2SeChe(QMg4IGXn-yvC_Y-;qb0Y<6&(T zbSQisk`)Z^bEw9Zxr9xJ<(}&|i3`JdcE_Fzp)WkVm3z}6;iZNWmC6Y4;1Hxr+aQfu>lYiy8z**R{oXOC(`Fe(F;yEm15IFY(f= zznq_W{(1BrNO73TFZwXPh*imf6{(b3VDH4oqGVj5D3NqTE1{>zWT|xu#Fdu@y6GHk zAvJ^&uXH6wJ2Y%!`8!OYWhgV*UB0KAzU_>vP?E~YWcYMXGh@obv|1{co!Mn4jJhJ! z*br(@3%Cy)jMsbL@g98e*$?{ebcaJ5{eeBI#S6z90t<%o9EnKWw2@xWCq@O|0-~@H z75v!(K?4j0UzWK2q+W8{Iv}KfBGceqIkAPTK{n-0CoBm~2eQzaBFnNtKt1Znr( z{y&km!ZPlyM@4waiq&+G{HF!4lgn5!ZhdGA5XQwJvY_w-N90%dT|$}ePhcfrCOU}2 zacJ5rv@$=ZG1g({RE~=5EJ$LI{~vJb2KTS{GxoNsNH-*>z>K-at#Y8Q#*-0Go;gWotR8aZFQcVm#I>1}30`G<54#H{sBkOt>w2 z{W{(9VmsQYp$xTIuG}X%rHEhS|<_F-dY;f})3a{ivakxdx($HK- z@t;`APG^zs`g5Q09?tR*-IsZ;WuWd_xvd2c*ZvgU)V{6qImZ;joC` zWzP!IRY2CIXfh`i^}#ev5Wp%w%&qD0;#Xe8!-sEiZ|QbK=>m^&*7wI?ES_&-C95lvuQzCu;ywxGfiMniEPL&^_xO!TE-Z zbbP1tdbT!5hP%U>=IKk*;hp#2s|!-wt8Q7(Hk_*2$`|PA>oaM&j{jm}kME~QK7%kB zKjc^?NyLkfZsEm;r?B(sNTEY7pPxGA_LG@;izX5n`9E@MwFAMSPwcigaz$Hx9mY@P zuS-6|<%g?xrs=rL-5440X-bU2pq61;a(8Ju;PYSnV)NBjnQ6hYkmUf*ZCM1bV7*vG z6BkLd_{nBQIk~o&bn-yQAqv9iDML!!fFYK<%AvcigO(2-jtz5~7XRrKrdJVPAtu$u z$R&feMYOTPJH}2Y0bHR%51=yR_5@5JRu&cmD@gsm<-PBCFFx?z4?yB=8mSRt>OvXN zco9eW-ymg*h!Mkr<2XpN?Xg-J@IVE{u#SAORCP{1+{$wH(q-9uWdH0$Urm$LP&!{% zFT#>&rX3Zi(9sX(A21;|dQP5sfh*xjQ-Th!5%D>fX==#5$}J z{57E=K=Zc)lZwKF>q(Tf5oRBzroR0}01z;{P%*dte}+JEh=V?M&awIm1)Ta^;%C`_CNMWiVF!2Ou0 z?ZJaP-cUUnEe!xvzYb1y#bNip!q#hYjCe|;d2KI)9Ht-(Z4Gfy`Vd1!PlNC^K|S~* z`}i8%_!^l-6WCCiT>hPnxo%}r5&Fb3`|KsW!$DRyP>wG9Abs<-(fh8+)B zZybtQR7h4=Ce;X=4)ok;qm=}`Sf-*pp)uRfHuBC}D(QzwuuM$Cvs#OB)5SuJb+w z-tFo5&&bk}UwOyLd^S51TKX)fE~8EjySDcudjLlQxkO0SNnR;fWy`%tlKyaD0ruu( zb`HuzlAtR)Tuisl!=KF%Q^MpU1#)!$n0RJ7T8d1aDhh2(x4B-Koe-0CGYYQgs`Jvu zE7HhfR17aV`mp`DN9Tul;iVVz;loGc)_@*;ZaOh(>>?Q9DSag(3mcDq$<+nYL>70^ zRS7SI%{!rCSF%gL08<5cjM8cKp)blAQ$l>LJLXFXKHfRF!eoD$P--G zs)l;VD(*dT%G-Ae7TU~o>&fC}U5O9f!r%)taf~et?BMMK2Fz_4>BPG>26Ngni7KOdhUEXzmFH)$~L;1O&Y(ir(de&T?+3}j0Rw(44 zpXhC(4vo%SO{K%pv({}Zmp$)$*E4wT-S20t2lEsuCxA}=;$Zl4%UA{A5y2V~tk4bM z7y$bO0YN6ayftilK-P^@6)=|0tJnxxX|z=~V0H8>Q8A{jMME^ffQ~^!mlP9ZcAoU*Cx>?gjUeF^@f^fMO!;HRG~HB zGK9e>ZKU#*wxdoywLxZ6y$tIV!La%u$vSuHuY=;mvZPThN2Y?nC(FZhCMj37O>9w> z9{pFmR$g8hF>-^MD=N@wcpL+ML=1f|4&rdk{&%~VvG~h{6-$_5wmN+#aE(t|snPVB z|1aoGJI1OPtM^feGy@n};kNti*9<((5~$VEJDo{)aatYmB5G zmBS<~{%a~ZW(@al8I~EX&pc*YUV&=4e@i3;d?Ws&X=Q*IuCoa3&t*pY*YnyCMq^3a z;}`hI5Xvp&ER}mmG1DSrX(|Sn<%!MojQ=%$CsIvUSgOKRVMB79f#wG#yHR;zhbbGk z4frTFbU)cmv+chN=$O5bB#jWbQbm0Y$~;T~#BHzkhtEm7J<>a0V~x7Kb7s^t9iGQq zm!`uK(uCKm5uqn1BE1?}!X^9tfKwIJtLQcCr=Jx*^*e4{If0^$c2Y$&<-d*|<{N== z#dF2l{ZkU7h!s8`-JI~!yk`xY^hvEuSQ^?FQA_W80bZR6qSw8r0=Mslxd>M`qzk#m z@kK6Cb9Nss4S;j%W%?}2 zD9BTJwSi{G|J{N-^Mk83MOYn_=WsTcft;iB^mTa1xK?wfnhrR;jP^3LXhzm}9sg4< z?eU*=Bmap!CR$k$QuwmX^~LR(4iDGu71Xb>uGYhLd&RfjeH@HwGu?U{UJkF!yxwBr z!}!`?HjwnZFuxm`08_$H{6{ArBmSRk%XGjN7CK*y_~KW7>C$xgN=G0R$>+0|u2Ef) z6u1YJth7BRJn6sYkQ_1T;^0oAJ_)(ljWLPvYQsvDtApVMlIn!ru+JSJZ+I!GF#e0I zAO{{06h-T62NdNMU{I=TTT?AMPhlI3^S<(uhP)A?%gJluncw43*ct8n_V>U0IXwIB z_cQtMJOq|VH29)}qTKRe<3&&srj(c^@;Ygk4EOB~oPA|5aUi^HFQ{-jgCQMFkeR~* zCjgzysrJk(Ya5A%IAh-23Xk@qy5fChA7U`diF+R#B{mNWUOFetha8}Fy8F}&u_Ug6 zfk4e8^q```6QezR!n7yRO8`r5SD=`O4LLWi9c^D7$j)vy(?3hDWsl;bD+1YcG^`3& zpweeaYte1`3s_dnm>z9Ib$VFXb^VqCn>hi-fYD;jmp$+1eL98vDCoqp&EeepyNPq+ zs{=PVv!+MNS770yK&Rb5=^nZakwa8v$nx{4T`Op!6HupB6+==hGXh+Ra@nYSYxgr< zi6~wJ=mOk`gLR5DU$(4k<>OFIofDdT;Xhc0u}h&j zB`#pf`6w_)VuDohB28aqBR+_n-i(`X$yEe+ozNA@~nq#DCfk8c-F3?0g5SYIMqDx_Z#IY^faMKT`JO zP*Muwd!0SCUV>|}N86GKV)}onqK7jpTg0?T1es;ZFm!C!s)Uqu&-mZ(diIWpA3##m z5lPxai9bbK=^>(jldy;q=+b;wB8?Uvc(ve6eZwUP#sA@rBq7{dX@jzl8NUG9W{uj8 zTJayU)jrUKrK8O$s29^FQDy)8@X@3A;xD~Wxl{%Y5AlPZVX%#%TN$9|4WOTGkn$n& zU;fzBVWllv_|XL7D8Bl776_J~3=M>x!)cbD(jpWkyYv)o=(WURx1q?6GJ+53CbA^Y;NHCWgq3iYXqm2K?P@Wnna*chSW)Z=nVwo-r_ z;=ix*;2nV7)KS=3CpA<-@Dly7P61#jsB+8}WYNr@#-y7^4Mr$ms~<>h$lgjzwJj?t zspu2*$z1U{!fn=s_^v13m)3Mh{ac_i#5e0fjl&DAZH!C# zqXsR@|It1KyQQLX?8u|nkJz&&|KeA^f)_6TtN=mhAUz&A&I&S|BaCOW2~Hs_QU!K^ zW+gJ^D5-iAECQ0Uv~%<~PMr`I{h}&{Ti)>8lpfZd}J0WD&Re|`%S64Gp!j@%OKj8g_+k@l=;fa!d6icc z0taSTknS*m=smGkG*nz0VWYC; zL#`qdh#Lwm*F>U2Xha+wkVB?iG=?o`C8OeWQ_j(GvO-j`YKETh`R434t_)p3qT>@8d_ub)TR2-ALtmg5Qi9=!lN`RY7!~&^=5gb`B_Bkn67Do2NE!b zv&ywrBj@5zr#L`R!b9Jhrz#AiFs|mI*rqe(@XyQ^3ymwMjuXUDYrcdj=G4KYiH>6| zcjcuVLm6;EqoEz#NS3J&cPm29jbrHe4`Fne@=?Y@`ny7%zO~MLd4| z7!k*g127>khs{LTsuTC202~@y^68F7q9bslyH#!ySNT7(mrO9TG^NSep<4^6fymZ% zKQtlwVm8Iwd7z}3Z2(#*>8(a`t7i`kAc*=Y$oo&;%G-CZI6~cGa)bE$A&ki)UFy#L zb{E1~i0RRIa3e(evl=mE3aGIIx!+l})j}NL?OueD}N zsDV>{)cL) zCq@00{htR`tpz*Fwm$#X2`@iBnI4y@l|$5!&)#~R-+uQI6>ARU@-HIcU*g)60IM$# z5Bx>8ScvSIGoNVppIt6b6iPVT*Se*G-JPj0wGn`=E8Q1g3)o}9nELDKyx@dJX>m5@B>o-C+h1;lze3gxq0DnW>o&qLp8sfg_)y{_SYnC_CZLnXFYG7Mr)`IZaNIJE!n&#{Ws1c`6FC(ONBRA)lBplF-<( zW*h!b41&dfik@ONnN>c3N$}A>VA1q#;{U)~gO`*Fq5z#hV!spfG^eNy5u*uSN|Iyu?%9G8VLItcudX+gZjTH^qF=_dM_qF(30bGf(*i62!EA$NWrxXnA zURJ4#iD#8p8TT$thtsXzZZeK5_Tiw{D?Qj`NRXd2%ndroAt;m{YHFBc9$ys-_!xez zRv}NT{%N$QKeoIV45dP0$)?JaM%%uJLO7eY3g!q-e9pr@VbrDfb=!ssim|AIftxk2 zV=vKfO^0{fduM}cF)wR2V%SVs=r>0A03v~>=1N-*&uw9W&9atun`i?YWP}y5ydr$e zxP}JyA?V1e0nP7OZ;}|s4nb+SefLDf>`=;=7<4cl=sdn*Zc?C*ybN}whr%v- zGMGl6=NSMx7=s8R@}GV8b9nAOzowlEZPX0@nj>`;4NTR%2~YuH$vWG|XCZU-%JTE@ z;yklgdh}2|zX^?YQ_pqi92|~w;h;?y&Ah-VlRm!#p4=Bl2v>pze^cI)WeV3pn7j4sQMG%0bRBtv6oY zs`c_GL4q=4)-X#Sp%_x@j+eS&MPLo3e1~!ijlE;_a-ODty0fkLf{t6e>l4R*-Qwr_!veX*u z+7?@){T-Bp+%g8vnalQfo_Zyo;8k(@W*rluixDMU`M+$Uf(`>>vT4N*f+yAFSA2t2 z5Yw%}W_c|mzx>~{*|8y-a}!}1z8r$?qomA2D_SZ62RiqEAZ-;W2nH=_;~)@WtG&e)HKcbG^N_J( zai4cdwSRFTf>lz6>^Q;jR3sM+C|8&(M#_Wobh#k^QBjRAe9gjJZ?>aZ!*G?59$nJ3L zw4F<+zS1FiVSN|$=N{h1%a2Y2)Co{YhrImv-0jEs<~xt&|A#m<;%-C-x%A|?2q1j6 zA9Hm*6eZR;!(#26!*+~gL=k?C*q)M zM$zYXb+9r@c3sJA`N8xg;AWsvRPIB{_=z)NAs;?gHX%!NUd7|Nr=QE`o_@bE*p*0@ zaH36=u$S#JIg8w)y>Mq&(u7$)Itl_Q*Hf*DR8ybH;FQgMmbk`d9+7S5W-nV-eN30iHb2-$p53=fPfrB&nyL*%TiISW}4p8 zPiA{k*#4LqolRgemXk5?5egU6=7Y##UwI>{yI)DI`-?jon`0Q8)9GdbgJ)rLy5H)| zaAjsX`jX!HFf_trc0uPa7QvOo&=#{RbvjxX8P3u2kArB`H7UK;6zz}1hB~_6;~?j> zZ@fA?3?oLq(<8`$JGNL%ND6v;ouM#cJYX4v{GX0?I`QYA1vm@h;5I|cNqC_WRRKtV zMP+eRY}L-_7!(6sEnFnJFbNa59l*~9yq%wECL7)2f1Nv)%SQk=`2_`C78&Vo6>d1F z%tm-V&V>v_)a-B3#6}N%Y%)qr?f)=tx&tJ>(+x;qP6~1L%JldT$+UAH2F~nNiNaXY z5jG!SBI=;jhjg%Q*$f{bT^&QL4_WyWEdEnSG)_)MT^#)%%;AFP`SliztEOwR_J8Gq zVT}J%!ha4?k5SXj`;3nNHw={+N?%;jhO*xUlQ#^~7t7k0F4s)gv!R?e9=1@n@vPCg zWk@AFc+!}l#kR^J zx77|F&?_bs-qmTAFe@?5o=aIr(sHx6GhDU91*0khnD1{|d+rdBG%s+e*{OMh6o!KZ z47@4A#jJ#Ekt1R*`;*&4hGugliST&W;~H27Wp^^9dtWd^^v_f#>IbxFp80od8#UV8^c=?bKonFmYEdYLhCMb3QbPpq&Ni zT`o#Q!(}}pap*LWmU~bk7H^Yal2;jpF%ICSKoGt!0NvLQ<1#GF8e0{dWkz*sgkzCx zS=wvr2r*3i$%7Kw5n*GDkms}XQZ_}J(`Vzk-Kt4fZlo&S#)L{|`1E2UB$@n`k@H+D zCWhTW5+wE+mV{a`*>caG0&rSNM=3!uV4-bqB?e8A;f>&k zbVrz9Wc`VN-S#mchxT_(U-lLMgjQwfpt8AWE*TOf-bUpCU=rtCj>LTy|G7QvRfB5( z7{XvcS<&!%ab0MZY3@I=au*ikUT7cF8{O8`IJS--s|!SiQ<2#a(ej~9COzP2WsC=g zZNQ+eOfOvCNCz8#RS_z6<(!kvdhtP3!vi1~{stK#UkXN>b++8Q(B3Gwlv!cAWovnP3cu2wa+zqGH|G5U<>eZ0 zrpoI9jhNYL3%A9l{lvCJ?^AUdn&0^2A`@R69NtYJu&|>7Pg_&|fTO$ z@|}TOx7}!%a!Tcdow|i%K|$Bzv1o5(B>tIovytI>#(FR#Ih}N+t$b6sFP_fP9Cc>_ zTn!S9|1pGzVV{+`#d=_8q{J*Xdu9E|Lkf(k>br+W~csH<;o50p&X1+T-r3CPv zr+!UtO^3LO|L`=BLsb4h`Wjx1dv3{~1<9#@{=sd$o{}k7cQAGfr@s02 zBYg9nGYn|ZaZ-7Q)4wE>Blq#CG2K6D@71^}Nn5%>Ll5d7+3}2khW?d`w48UmEYVbu z->#@6BT`Yi-CFVTFaNS*VAES7sLU&ST>0cUg@NXzhl>>)iIDajD<~kNtsZ6^#*;81 z1k4`a=THobmR4fKl0qy))IwSE<)2o~n;Xu4v_{qPvvAf8r3T<BQR4v0(zy z1b{_%`VeD{B=|F#cFH47`)PO>*)WX zRfr&%ke6^vF+H0j3N(f?iDxnWABvNZ8dm$L$)L4mD> zUX4Wqj7l9GDdf|3^;jWGR%Kl9q|8Gwy8RZ>R}s(gbZCed+^|Jm&K)Y)Fw#5=oU z6pTEwojlxvQh8j1M&n(v$M~<1mIv|+oILN78=wr68A6KW6_`B7S>#pm>6XW10M^}G@hpZ1h1G>~GxWsFkLu8x_jIZcS^V{8K z*SWz)ZVX&MybLZcAD?(ftmpn_Ur&o(SwQ}DoQTL(qT=z zqr5HL&gMhAjG7~kA@vIzXqhOU2QON66Qz^aknFg+CKa0N2u}l@x~7d2Iq}?QF3nXB zlvm>EC!fvRx9-|GVR8oS+|K_AaxvpSJvS}p5P$@~954(RYv9M1uRr(Z?R=egq4>-6 zwY@%c`%!-LoyXc{sAos(a~`%f!WX?G^H%Uz`Y+5*B`Ah+)Rtii_tq^HU_ls@C;xi3 zXjsKtoIIB2XJ2?8FTMK9VkJj>(1E6K`9psTVC2c#X#Ai6)`4tr=Rhz01-k0lsX3iG z;?~gGpPK6?z*q-W&}ThA!R4Ss<4BeJv+*1AtKswxXQA*9)vG9)g=La+ccI9N7wKJOP^!}-sy zTJzv2Y3eIJboIL!(cJsF2d{?ynyjQFHh;uS4q!tx z?q_dpuYzS?O@Cpy#ZCxoWNSks=i=k6tKStI+Q3RHG&%=rHi7^avw3ANNA8==@WQP~ z7Qd1qAWQYDY+fJtz*I=q$;UZOq>BG#{^Kyis&-KvOyC&**QC+p?;BOz;`oYMWjF7? zPpc3B^Z%O9{79COttc>n6d&2*qrTeV$#oTSjoC1tvV-89g!xS{h$hTs;FyxYu-(91 zMHFP99C>#oo|@U2HUo-?Dt;qu{dD_(2n9O#QCyRbr~fnlt1J~VneULR#<=pJFnsaY zkeagnzh`s{3HS;`@j7KlBR4&i*M^fAHpq;?gb>Dw2zdMt!=`9nNiO5R`+r)dz@~#j z=`sFeH6LtC+Ro^0eziIgRm4)6b%(*C{OIluCS#t|tzGrE^;DATL4u4aMsd)(pb?sb zOWZkxZkyl<7|=jiUU1uf1FbmlUzqTal)mKTf(vV<15TWRO%FcLV9Bm;H#lBj@Qcm9 zty4iS()pHULtH^pw%u}_=q_D)KqsGDlgBbLt@23por4o=ck7F$mC)Odj~EYo)I&J^ ziIVjp+ZS~FF78xgOgxdt6pqP;BG&Cm&%X16xP9v${h}o>hF83{@re$#BYF<{IXo4} z8UM>?>8|_1k1k(-?!oPRZ7nRx0S4Ak+GyVz4%@%sFIPddk;SmZ-t&gjIGGFinErR5 zs9c+n!DIIKlTCfJ*zt<-W3VLroHo|J>9fy&Az%LGUoMsuiw6uW=O{}J+Mz784l-_| zwWO|4TscrUZ9^{Tn4%($`5W3`&;eE7Z_t;|vHwPH9yX_=%wfBfbV!nDs0?h2?FhI^ zdEl5L&Dcdq9%)(mq__?o20mH6x@IW@Z|PlAa(R95y&ueX?<*aY5s2%E26PzaHUCTv zr;y7bj#K%@MEfed>$Xg(rp;rmO$;P24Gfejn%FqZY{}{RZb_{Gh|_0!e&Jn1g7q3C zDX5u2st~R*shJq)5SEXXSaP|g@lkAP?scYE6<1;4-h-~(Wz^*a%f+J-9RvO@J&*nb zs|2#L+M5+^v$3+-&d^U39;`7AUubSjRGX!~Ke#ijH2+UnsbhuXIHYNFyBonNj%K~^ z(u(XOzbq)+2+2W8cV%7&>`FJQ4Ax?h658>qq?gJgay?~*Qfup z+u*!1mK`h>)8xW1h$gjvmHYTA7WKQ(GbafIgVNfNM_w>xPjPyG4U(5owzFo_K_|J|E`xy$~EVF!2$ zr3|rGa@2MmWwo9PDAbBLIBYeQ@QHiK@XgGA-!A?qFyp`SD8}UR>U;#VIp>p-uKE=h z(^+D~L`4qsb=pr0F);k!;_aNS6Y_sr7P;GtuZBwL$oLx0?1a>giS?PIphFns zMacFQH7Z_Ir^t|!wyO_r8NI{gS$bf#xLNb9{nF;)xDyMKgEAi z6E@b`9`*G9(D3!2$!!@x4!S1|AzBy5bG1YDxMGr6g|TH$6$|Xlt?BU6ue>C{nr^;J za@?B%Lu`X>U3__4I|KTVa{TbpyCWUiE2M{GX7o5!81^=Vv$cQKLJ0 zibGm$kR`i_Yb9Yk%fhjg0iVWE_^_s3Osv}}GOr$|ap2u(SXNQ9sP7-AlX2u>#3_xk zr^5=Go_CFUX*%G!cYRabxqa_=w$r5B*Z@A4qlr+PbI_tyk4jF#K(4}2+x7L)W#mu3 zc{?A#R_aQ=Xzazd(&2Hg2TArp2ao7POu`-S@L|JzjR$${>9EdJ4w$R59aZ{gF>Bxy z_-9(M&Fmm(gombTS|dLD!t=4+UNN}tbCfNjG}Gcrs43D;FB$}%Sq|$hmuXp2mP?0w zvl16dN6Bw=%sLFkS03il{iBfeb3CO8hc<8vG6!!J0Oa~{05Rtea$Zw7=dRzf9OCG# z$SR1PwoVjAR>(^JtjL6(gol+&edxX4jCVivo`z&O!1#)hsh*kog*$!T%y84&Zb{rO zi(m%XVn2+KBidD5ndc78j#>L_G$w@WNhlaw_np3x?C}Ia&@_>FoBd-L^=Q$^T-(M4Ms)+gMvb_Yk8D!z}7Za z>KJ>{zBYzGgF-0HZ-(o3zFL)~gF>WxO zCf0zvbsV%7@-M^S2H}Xthv?(sl^gkKt&7TR`S%U2Rv*wCR=_dmuILXmKB3h!=cudm zWQ{rHA#p-ll>{h*Rs73pS-8m_$7sHmK?@zKicHbNumXqFn_pCOv)ij7mf#he4-J4W z5d~L^i!*;{F8fkaI^_eD;8)2SB`Q0R=!?#>m9nce`x-2n0vO9$v;O*#fA4>Q|NH;@ ze;&W<_x$<;1W?;OCWhCC4?V8*84fSuglU1eU^q97#h9V}|AycAZTNHl(f9DO~FWFU*IVjPUs1 zzU~b#dedS!6f9Xc%5H+yu{>c>L?b32fe|ViBl>(l&gMT1S)c6z*mUW2h9HFJV8n!h z$f4WfN(-fp0lCdBqexDI_Kme-CLD838e_PtZ!veRp*S<2CuFr`+180g#Uggq$_Mend|=kD_{Fny!_9dgR6+{X5Ul&Tx*A?{IWle`_bSNN{t{S9p760qQoH2Tp1HdcrYwB7pVPabw z%RJM`6%K7H9o}`x(rz8acMxRsN`up>L!n4L)MeCm>!(9upqDhrw|D*5YJ!D}hxlJ( zw_1SVcscyPqfQI2vDa3o9OX+Egl%>^P6!0DL;)FT;zr*ssoQ)qyZzj5a%{Ja-omr* z{3fvJz>JGpXn%oZOzf&=kXDUm#j=K>R!$ z5SFwHG(33l;dmD|PSYdE>=K|kx~A4TN6I*=xIwDXO0P-oyY$KSLZ3YEw_>Epy5;5b zDO!X8-k5fpYnUjyC(ZTNi%Ts>L<3YwmLdKF@A*Ky`PLix=EFBfa#_z;9OEk}R$MdU z>aVW^S)@|dt9a)PVgZK&MVUU9bc9RKi%p($q66pP7ox#P+~=Izmbrems8+#Hm^`qY-$?)PBEM*d9P zYx1HtC-|6UQs>tGmK6#dlKRblC{Y+F3p*U}VG=Ekk}t>Q-X_6LY`{Qa@)-_?j@Js% z#+Qqg1eL|1c~B12$=85Y=z*lAJtjU?pz`WMj^ZkUx}Lrh_Bn~!6=6VO)xGze`iUp* z;`KY?%g$g_C%*>~*+zW&++{QaN#EI$3oFX81^zNY)8qY)yTuhzqQB6W5QgS?RD zUc^bwAwtUDSVZhL7gAo^38s%p_8yZen^1`ni!|SiVg*RS*Fekfw_zl15 zqu7sm@;<)fV;_uv@b^DY%LwCe*qiB)YRt8IhW^;J!%8*caXJq`T!HxTQ&e!X?8W0; zR30#5VV9PSzXx|ibVI_fKnrgOR3(STvzGnhooCUh_Skch0}uWN!kG*zORFY?|vVq+629O z3}!lMXtLOtAwFD!vh9O>QB{}F2>yGPy({%IieWSjE!Dm=D2lKv+%;#mFZC60=Db^O zc!|P!3cDh{G+%sY4V=T39ni^J*=T0_7ge_3*RaWITj}uHujbZ(iUT&mR|7=Y!yM-I zfx>@GTqfBjQ{41&$4|dqgN+(dU2>{}nPf@D1+VD?lU9Z=Yb*&8`xzEc{10yuhox$= zwl?1JQy0=RFfh?vcHQo#2Tm5uY)yw}-tlYj^4EV6j~+k7(e~+b<<}(&qBMyQc>bRw z|8KwEKRM*E5@Eo(e17xtal5_Zzj^;r+(kFtOfHIVTf^burPKM9$G41k<*Wc^!=3vr zTQFD|$(_d1XBvEPjAFv$e@Xk+{^!YI zdKd28xnmYcsbDOp>dr|UZad1DCm@iDC5!1c0|^=E(zn}(w4xD{$LQ_opmN3WH34?s zQdSV?1T@P~)_sn=|1Q!2n3;BXvw_3J08C1xz6;$VEJT9V+|e@HwqtWPqQtlLnsd0$Rn zK|5TVvdji9oxG#&se%))Vx2;^aga&TCM4~+=2XM8dlRr`o;!&KRwc*53_~hhXHR6ojG#V^yEx6mF_Pj6-eDx6S#f?RfZ#B1$uQdDn-bcGm_7KPp!@&@Ldfa^ zDTLE5j4ZUU4z!zT%6Lrj&2CAG_)sxQKBNS??d8C0?c19jo-@X>VIFGME}07^u60+$ zID2Y(@}?02E<&$ zN|WGLp#ICh|2M_I_9uQXzUw!A8$MhOhwa}teek{buHX3W_}#zn*Y5}a{HMNDnhujm z7ok2jT+jAhjfa*S#~bQnq7ZL`9|ejre5{1lb!9uf1S$Ynd7O)iWFFP}`s)w!<(I#{ zHDKZ||JdKfSAX?&bSP*&Mw`@lH-5_6(mg~*&&!|EVZS~Biae4&jJTSVMB{jI-RCpNL2D4 zP1s`Q;01cDwxgZSq-Fju>-MRv=}-T^LIBc0uUJvs!fx@*=e?tv zah?B%V5!4OCN&9JLMsX}pAQWjdwk*Bv)OI~wj37ne}0dO%b_4AM3f#wIuW>NZ5n zIO_794yu7p?f;EkQS=OD(N`8SfyU3~lJU~E6hrP5sQjBKi6AUwv#}&5*i{2c68+l!|M6wxFF!uvy|*%N z#X&wZzree1B_3R6c|B)M)FdBq3OQAym_B6WIkT5|P;8L1(y;dTS6}}-KfHgqedk|3 z?%0ASaA~}E|w#Wz(ElmHM+xZnVMY@fLO~p$WAIX%nn~$tr;mtt+_&7a>}%l6SsNN zu=Zpg9*&vmprfsrA&sPEJrx}>`8^(q4iX3H1sx;0Qd^{st4vKEY{f(KO&{g6!Ujz( zZ$*TJ*@Cx4o7?p4|M;Rv-Iv2s1{_@FAVyQ5VORa}X@!Z^?Jk z!M~k8kFRL@MTPtyzDlbFur(Y0@R3GDs%lqmx>=-`@vamQ{R=d={`p13;zWcX*41epVK83&V zXa9y)dhBy}?8Ee;mY>sp7{6?r`AtsMUE_wv%pAKY$Kk%kzwF|M_|G{CsAwx3*O89A z*mjFW#w!%LfGc0dm4A)+k3MJ2orCX)Yd)QxwL$_8(|M!+r~PqE89IG?_s57$3t{E| z3Lc=J9M7~I@eqW}R_&tO3RWS%2=JMP+X*Mx&om-fvT`tcOiP{dzlbdUPH~WBjG>#W zBK^Rt#pr%tblepGpLzHD@|kx(qgKJhuiS5@SN2ZHcfOFJtK#$LBO|PxMS2x}fMd{A ze3qVgRs6u`@KPt`NZS-}A$jwsd~n~n<}eI3>P+a1o)~R_=C2%~ZE9$I|6!MS<7zIjPE4zXw@7Gx#7#kx+Yr-{Mlr%IV}D=Q9#}p|JU4W(E;_@`P5hx);K$D z7eLyc*kzpvU9DtIkMAI(%64qD;@Bj zcRh_ex9^OT*+bG-*o=zO6p^;$rq^N`GlB>#lUP>KMprVTF{FbG4c=9JaK{=J>2`-s za7BAqLKx1d!51j&XeW{JUdx^io6&HL5f@_+3!7e;9<6Lzp(iA1D$tc39CSPLl(Lx1 z+q<89H@@-4H}LrUm_TQTaYmB}lYvfn4RvDBEpgcXBDpo{0MNWTT1qTT6gq-rxRZdq zmCz+d%7(0m_)`uR^)mJBpZ!Wt++@%Z{kKItlY+y^G0vV|R(wY2GmG;Wr^qBkS!+GS z1B{;v66-S&l@1`iiYNOVrp?4b4)lf_WE0|oW>FjlZn)~d_F6ICQ4%W<+#o+k-kG?& zA2_hsX-0Ppo^dq+|0*4c1pti+*+xLwi_(IDkfdj9_hs!|CwiZ|(++*5#E<>w_{?X%oL~OMUyWB@{@VWer+?~`c;%(9$H%|(L;H${r=Glz|MGGL z9XRTlSGUFrHDNExG6r9QZmn&?QaE;!JZH`rF|7B(5oS3yp9W<5n}l9!x=3Rv;IjY6g!Mc+O^ zT9YN`qKIy8(oD<$(Kc0NtPt-VEsGbGpfw`MD8sn<8#$kTd z*e0$`)(VW#md&Os8aZI$(s$xId>NAFiDZbC!dd(C%;m zX~`rEm&*Ly7G!;eM`rl2E3y-Zo3(fzp&eEo_4)xWeC!vBx|%TM9& z|Gm#$uEKvD-~HP^j*or(Lzl6CY#W=FhNqso7uziw+cD47vm&;+|MuVf6n^@rKE3n# zr~l9Y<6Y+e`ycwTeD&q8g=BkqfAUG5|FO&YPw(fy@P(J~lmF>I#7|$w*pB))|LyO; z?0YBv^#9@ivlr*vyc;b)_{V?8PQ{=2pZ-Vrp@vRf1zVrJ@B`8 zI;8Ub)4zV<@moIp4F2NIxD18dg1v~JMV5@ z+u!$H==k6M@4j#UzRh#dAAaZW`E~f6zxUVew2=P4{#SqYa{kW)4k=|u$M}ztnUiddK*aGuZr>NKCz&|My_~7yhD=X z$Dsny71X5B9Te>zyE1)6h)0_100Cli-)^8106RHF`rpFN+BnZa4Rx3#*@b_cM6rJ^sGrGz%~ zgx;g8`rYT~1)gDfbRN3F7`J}_j~@fCfAuU)_45q!iVnT3+T$uT6^4sTljD4i>=`a| z@?>1XN*u-Unx{T{-dy94RdM7uk22;@n%-D*@b@#YSV&T$!nOAoCGJB_ zD@J7AZAHVMJR+LU57;HRErp^H`cO;`xpMc^Zp~; zMb4|!8ov4XOq_c?s*+rAz5@80bt7|;z{$Dmq-g@7Onx}>rKi3Vj0umVeB zZ9|49t!ru(seBnjZb&tZ(VC-NXu=Pm&8z6hUTe3EYbNOu?>-7`$N-?v8)AYBFAoX4 z#GCzP>8=Z79GDnx*GYPJ|JB{moJ5~p;M;1JkG%g|@r7UdJl=ZvR-*N=tI(1lzY>A@ ziYu^b-MgcMU>04Yh|zg=n4W@5tZT7I+K_aJhJAw;-W{OZIFDWuHj$6CIR8 z&QTM#;=&e`U>NR5a1Q`bw(Fts!i6vsqQulQm01jc2 z>dG{f>czj5S0z$&8LPZNw^|6wfkTr^*=EY^Opk{Sw)vM)3QsO0j?UN6();|Dq$RvO z>Z4o*R45%kD8Jy`Ng#^0aSYv?{7Vj$eZ;&ysvfZt`wv3U|LS%l8_b#H()%4yw?ccH zdRxKp=}&#B_;;<4t7Xf7@BjbV{PZWk7$5t@hw!~W@XzB%KKWxBczclHRv>ThKlsOf z=U&8{)TNRSf8@DKGvNEGP;K6~X2ACEJ1%4Y`9J$NVk^W443<8&=SpnnZ*zJ5u@%pM z^wLcD1D6KEzxBWVfA0H9Pi7}3Y;ZjL+`HmWUYZhH@&Eca9^mDdzP2|^zN6^aj@zEq z;8^w4h30Mk?Hs=NaLs?#i^=^nM!&yy`Y(-wKk)s(1^?Fn=KmF2BW07plkZq_ZSrDs zg5O!}Q&Uv+I?m(&lJhgwI9U7FwyoK)jq@EJ|EB%lZ}^QL#b5Yy|Jh~xn~?uq{yqEL zJ9iscV|?%azO8`S{%uW|O?Ln4MeiHkf9c2mZWw@W7@l1qT5_2O%*%x59UUu_5Tdhz zwYk&4ga5nnH<&8+s#qNm5QCmRC;LiULA8gjtoR>6wilVg;q>^=%Bp-gMlC}c)U+IF z{Q)}_|6%?gJQ}o!Fn2cWGa;knR8|7kVoUQg!>#MoiFiBWe?ZcbxbqMr`OS4F{&+At zL{fK^?xy64e-^CsUc{7eY+BmN-mhT0($|=wnA09$~+Pu49L+} z;7^O5tcFdUC!GZgN-*_Yadi8BxyF0z_N6iX^a-zBnhx7@B*EfbGC4LI*yL~-N_r)N zb1(a#OS#<9QjdNpXQ)}Ut`9p8jkzW$|roR7^{3|QquxXS+ti&NU( ze~u+YnyhMzGQ$EtO6ko@GwJ8vyuCFYwg*Yxod4GV-*N8|F30BU%=wpahyP0!0-TV1 zC0nzsR1v*sQ?3kVsI9{7bz74)Z3>X9z>$)zK=!LqSAc~khk5B@>dm(vQYkYB_=(@3=nQyoh>Ah~t3<$L zAV&)_`cxY7RV=f1pydd~tHmA$ZBt_zX$K@IEUjS(;Jv)6-g9)uw)+sz@`N+E z&`S6CVH7&_2WA784RNp=(7rngiB1*-kh^*G)v{Stk%wG2*S%Q0Bjox@k19HT61A z&9PyNeXwSw&@stpd&)cyD%gwkV4^W{eGfbBXjReXb#Z{Ux5f0x1mvh;T$t&sa7L2& zD>%Zzpi0PVH>;MZQBO7ch_fP8Pl2^_#yfzVFh=*oy9&x&64}#lKls{@if9PNN9(>p3>i_qC z|8L!R$e;i8mtr-{8yF+n%>Re~{Xd<=WYW6n^FRDEe`Kfgul<#O*uWD|vti@;ColB> zw@2{WyD?f|B^*29-KX{@0yDm+EzyC9z$6x%v z{uB&}t|A8%iW5&haW5~;hFFb)uU?u8e*@3|!Ye!Po9wq+HU8kg^4R{6)D`cgND z&8S&_QJ?%Z1Ni`XE_p3Ed;GWi;L-kHp-q-pfq`Brp9zb>9Dvf>=Qt;uqHTb2xH!^k zVIhUkgM4}(j)mr(CKA3n4;KG*lzO)?@)45J;+)x&Madkd6GIxx)mHo`bTBqw^H*ai z&J2t&8JOi+aczxaia*oyYMs+aSBmbmz~aB6FU3aq4&@K9;HGpk!#si0xd~mz|8>Us zszLM0ue`E95dPiocp5joiiCt30cLY1+YS};im+pp#)OFovhg?sh-ip%8^~f>?h!dd zw(BmK$}AgZ1Ez}FCc5%gbdv)!Siu?uUcm0%1n40K$}RTHFwA=||DCGo@QtsYnKy#| zZ~mBW0u)tcT`P7sM7roLjsj3lm#TD^5-Vd-CSa3r=uE&diKilD2Q@V7h`s56g)FiG z89Z?CDAHc!fGJA%+G6Hc5l8vfI^@mEu1~*tD?f2*DBM<7h2ur6%f7_c zm{8No!Xfi41<;4qA7B06v^5UuwS z0=x%rt(6X!<^z+$JQn<&Du$0;-;Y&_y`pU^N0bOKphZv;D1o`xg^Qqx@(#ikWvNtR z9*bdrQR5qPYZ*L|07U16LT9=x`};W$;VBP7n6y`ErSzsSp~%U@+3cQFFz$`(PckI2 z&oU=&0T#t~x0Mc;ro)}vcb3r>I2YN;GXpkN2kL`{rvW#DP2l8*?1Ai6Mp^cBUhGuf zOg;rP9pT&iYm`Y^gq4Wwexx{X-^iXpt0U5fA=cO&4&XqiS2^<6dN{;LG?tQ9Cz4XP zly%xm#N>~eCjl&VOxcadsiL+L=0&^&9h?$}S5858RwRd_NJAMa^<-qjy)5VWu#4?C{SFr3VdxOBaFS9uZHVF-(Y!%}b(>M1d&Uj~#4AN(Z@;eQq-QEBoB*OG5hyNdl zL9&GIA!-W2QiES8YtV5`Wub!Uu)vJ-CINS%vqVRMXX-th2UMPB{;vj01f*B{2;}tr zn$w-}GQ>x|_5EUUE2^X2-cF~*b%1$(zdd2CXn6Lyr!fozYo)?=Tg8w3@Q>!DArL?P zQ=i(dg75Ty@1+^A6}(%s;YWVx$8sx7_hS39Z+rjSfAdqh-Kz23zx@+NxG2cqc4;VZ zWy7EPcYb`kl8!gud>FK&?RJ1a^+P{~Z~4||*UE;ncXs@|Y4qAR9$X6cpT-++yd~g! z<sbzV;WNnRU;MxQltlU6-_y5{Y_~i7r62vf zQX19ow&G0JtGF=mPO~ z{k~tfuNv8!4ci<)|EVw4DhBKi2mRYW^{M9c6oMx4J-kG4O5`x*__kU(m&%SvoD>14F{RsX|9MG~hb^w;ov# zMw@QX%TiIYQ@AKlD@??I(6zCCHZzN~HHn#Sz;lj9hz?27@NY(1G-frhOFTJ1CyBf; z@kCQs+bSjEcs!rHmZky@AJGGjcayx3Cl7f`b|%47Sr z=-+vK_7r7(*&^7Q4WIhlXYuBPx011tQN(jh@+Hn7e5!+H7@(T#tVW)cV=|IT6WNSM z%2RTT3&+HRDeTF?^m-vX;aZdd=%8J}cPB2!@XoL$*az!dBX)$Ddg+_H_+ZfNyn@0H#O6QKUNfFl!jP*|=l0&J*jj z5SSG~*kslo7}fxc_EYo2$P^=bh`<8k`4l9+pv{9?qd;5x>n$T{JFIstkj^Zy1v@s^EYEuj__eX~q)*9TF8 zc0Hnsk^-|h5|dMBIKIO8g)V!v|DVq-l9>BScd6vPRAV7Vb{Zb`%W|UAlaMbN^^mVL zu?;~a=iq;!+9Wrpl@gW*ZyUFQe4B*@Y{I}&UX)7zsJhp_{-%b1^2xizAx*QbY}i&F z433KC?dtjV`b$6hclN?}&bFL(EBgQT-~1$u1uel{w`l}^>azd&FT6~4blmp-$}3yb z;IHquKa}k3)zI^kJB{XHg}a+Pwr5Ffr)`BdoI+d~Q`ors7~3rwT%oZw6?n`>=6C=0 zRfunmk>{U(WkOOx{VOkhb^G;+zFop`_xPf#TE;VX6Bdx$^CGs_)}+~PgK(K~5oHr()ZOP{(|fEnXf5LM`mO6DwXfN{i7R3Y@suY4I_{l>3`~<3FGW2362mT}dY~h{(?%qKQEnFcF9qY>$S2-;boma&fL}idx+A32^u3eh{w_*%njFm6x1) z@kYUC#WC^Ow6NEegPC@FpR;Mv1`d6~oqXn8-wlPE}TONrUUgSA$2vcx5(R)0n2Z7r;s1KQa<3sfk^6srW_{jS|8nDG=RPvf1)6zx;YSi;~oXyVFXva^e7S-?;0sq;!<)%D0 z9gG)fcqZeoc7d_^kiA6=ku=}}ov2k}KV*BVrM^-t9HCm)rAxmT&TKy&S*K7(atGS& zwO2*VeusRx*t5#dLYJ0wqnQrxCTC7^D9GuyPHb!QV1YhHWA2szABJjHvJpD-Y?Uyo zfN^(#BR~&a4Nh-5r14me2HEK#{nQ0yA`e+o%v(t=1+5h;I0&*@!V!ja3RP23#SYKg zRxR9wsn0(9bg+nC%>vUwW7;m&?N$fZ3d#76kAL(2y&r5yZgce7w^bO@42&b2Xg?;& zPzk+a-pjA76$5;J!nC2AUW=9Oc@En{DYw^8{OI4!D(rXj*!cX8YGC}WzxipvC@k#J zXwSd!%Jl>{RT^tgLd~qW!IWcP+29YS+~-XkV$#yY_Q22W!?%3o8Oh9#+8!=hG5Kny zS6=xB-q!tLfwNxn|87VWtFTldbGisD{`)BOY$0_?9%j{RYZXB7h`<9{5}prfubKl1 z%xax@#INUb<5gM=Ad^XNCbX~9gOFhHAKlZS5QXnZ;iWi2Vb z4_o`im$#XuOua^5cXk+;_#$M#GIJUY0B%9;|&?Gs|V1>;^g+7$=Nt8SXE9ibaz zw72y)8xBM_=3V6zK{*TvM`Jx(fLCohLH_+s!Pzx z!-{p*JS_xGYX%BSQj(_IewSvitUXA80*i=J^hi?$FmrWzsAVrAlIamtqkv0(_Aj?j zck){=O^3U8?jD*KIe-!+{o-NVr+P@Z{G{DM`8)yY&!Z=w5cZ=Rq~L~n}Im~ z(PxbOE8JamE~Og>NP&{NI0Olc{!71Q|Kah`JP7WbwLN-mWaF1Ffiw}g+_HVm`!-X} zBad7%1>6Bw1TVtm=!Icqm;;Bbqh=}JGNTTY%X6pJ3n*!&y`Q$MdM2(zQr%>*hIs;0J!o ze#^wR%41u_kuA!@B|^xK#Zp%~`T95B)G7p>AlSNk(GPD}i@WwbyXmZ6+scY1r|JLX z^NrWu+SysRe#BuS?9ZMcPkD&{+ru|$#BNJNbA?4|HpTegBlSjY3CXaMg20r_I%*PxF}a`buqDa%mCVE3NvN$ZKcb3 zY(WB!VNBY8z!&Z5jLK?H@j{o%k%fDZG<)wV{!GjwbaHMBD&6o4?*-orc2WyaA`V>IV184#awW)-`c=JerU;qetEUsI+0UYS3F|r z&{i^#{`Fi7i{-0A$Y_i2=Ecy78a2oCqi*GB#!~NAxRU=hbl=}IeMpa25bryACrggP z52Qd?6|5B=_io+CGw)cpSF~J~XXJV`0kT0WyQV3EdBR@3&_D{e8f6*y@OJUP(0c#* z%U^iw))f=}X?wpk8@A^@%<<-=sIdYA%Vk>iB$?(66+G2F zE89KDwQS3t#K&pVWXS0p6FaZ92G7vXG*6Py)X_Yd8S&2eP2 z0(n92Zd|W#a0_D?(MV{hF+#cU4s$W^>rFH;1>;oSWh4cfLhI0Cv=f{h?T*!HuTXqFGnGWD|*m_72a zQKw&$NVD96ENa0--_%<$HOXO!_p)u>b;D$G`-#zy?>}?7$>q=gxxZmPc?g812a*y# z{&J3;f+vf9hxE9LKXQ!FAAeO6Q%wTNKGo+zX1d$2C_RTidVhOb!~LLX9OYZdV;mSs zjLfR3*QSI;fM|o8nMMqc>i8e%_>Z_2)9SVDLxojcsuC-2SaHwh@^{iHJCS+914se< z@(H6!91H7;j*tM9f)>w;G<&m=Xz9NnrUsb3AZGLT04DmBX zin6X%u%edzmu$Mv2GC%x>$LUU;>}Ah;`+Bz3$$Rxc`n5T(&vD zX5HSg)a45{WfC5_*M^gx9}{C7$r)Go)(^*L2-+Re7Y?rwF=0o(w-@etRVdvQ|9f>o zTWoJT#WkvxU(Qv{%QM0ap&`a%?1CGoE1bTi$Hbjm_wc@_-rv|^q0`)I08?}ZzHUvE z`x7Zr*reoggr#r{6>ZyeFFm@IpLuXAhXiuUWIOf#Y5Q5thjBNA2^wb(&HSHO+6iaX z86zf_&MmQDyH47>EH14u)jiM$+ccq)MkY#_`SBoNVqzux`%w?xdWfI@{O9_KpC;Qn zb{{|K31NY^!Q(0g;aD?st`jT65WF)_RbjJSUA`3^peOE*`g4v6T+E#0eH_E8*JpdbZ3T6Ms6e_L?tEpq5_S?dn=aa|Hyhz#lj7oiEGH+D2Z*z$Mz8JLUO_&>^y;z&#JjIboqA(6^W zWm3A5-^8Sa15Q7aQ#pM3jj*eX)8*1e23FewfSCB}jSUeDC5^zSJ?d2O^n_Wp=FqK>3|!pA5&sIpJ#x&;<1E7sxDX2^Z8#` z%j>s?Il38DVKbqvzU{|eUfZn`Wt~GcvR*K=S!C5ORqU_rp^h%C#rs+OZViwgtJSxz z`X|2S!_S7zmGYX(UA9{r_zVXowxcfrz$`=YKNfa^b_I?|)JpLcBiqk!j`%NzmvBD(k@xLq zzVHP;V`7FlLdN>#j}i=g`Vk6_F9tQhFp%-W_~Owi^ckrLI+2NJyu!e=`l`?sGnKE7RHKX-Hlmiywr)+-PG&rui@rr7*r_FsQ&j&gdB{|IH;uU1SuLLM%p10?8*jd%l6Z8G=ecP2ouYObUQ~h9>^^1nFTnD z@->#{rS&cnhuZG(aFrU|KsEoTBrC5Y;!qRNwk5B=tFA&)NQ1tMc?vaXWJWv z+==sEAO^=j1ReGR^kOWdNe;Q}ywFIq43l`KQInBDjR`GrHanc+$E1J?DclZWNQ*g| zr>3`g!W{Ajtw;1N2gc+6=lS9uJ0|qG#4BJBPhsA2 zk@|YI%0S_92T23)+Dr=R28h%6r$Mlj8r5s0o zUBsC#7qd**z*jH&J-Vk93RGzYQqNyL(?W9p53@c#BfR7%k({Y~CRiTwRP@LMMB z>MI;^!+ix;FXHa&-*^z)uTpHU^$QYx6=|1Y)Oy{^mf!h%e*M1xh59v;t1-(obPL!T zXZTaQXpxV$XdA?N;V%yeIT^F$eYFD~9|`D(;mQ>H>TnTJydv{@=;cH0_XY3fRe4wf z&0J;ziN}9}T@GLZgOyF5|z@Q`*Qw)E2VMw zoV&s@WiNyjXQ+xqM-IV-+5cc0~V# zDAlfJQs@B=x`n09Z#7gp6@%>-Lk6r98~Asv@H!Q|Y`grxki@yY3j8p8DB@MyI@`9mYy26zoCbF6=1k!w?@1JMi>?xrJ0NnqX+#}BW+ z@g{zrO$SsEfg+uf2_|+bhQomw9X>lif>{}52Q#zmev+Lw==Zs73fq^kCCd^A&&%F3 zFcN*9Je%ExVDm^#h_rz*g*w8M(P_uEAFGx)j4?n2Rxcg4&yS1{*IkuFvgokWs zLq98^-_GSqU6kV*J2?z*ejW$P1)`T+)+s8`dXl4=F7~$h)~}0uXhh;rmc#5uV`tG9 z7zeI>igcl3$dY7^L)dJ1Nw+e9t@;i&i@vZ2*ItR|Iz|MJ{-17_4K{J~`Z*%Wy*fxb z1`DFJX@Zu}{%>r?jnlClFs#H8J4(cUWhx~8GHDnjiG`~Pqwl}ozI^&qFXG4llht(C znhD>xuU=@H+5CO-sr&dtf8@8}d%yp;?z?|t|CNca%OUe>zK|^1G=ZP4Vto6xiSMlj zhvDu1ahoUGa_EtJEa1Z;Klbqtf<^gx#I@LedUJa?~sFfme=z3kY2kCc;Q8Ds`dZ6UD zeE3-*fy8wKep0l5=|bD~>0h`s9De`z|5nt|Qr)(q;*ai)lXvd7+H5N|%-*^#6Vahn zY;E3s>yUhpd$L7%2yVN;ON||vQqOw=uKXGfem<0VW~?#%Eg1qgbSrU+Tni8GN-f^5z7cGKRfxgf_;QTBEFh5$t zQHILE(3J)wg`zso)R+wTWLru~ps$8bX)(q#o9tNP`FdFVmtZV+ZQ3mUx4&l_Y3CCj z|3yqszEYhc|IztTzW7UD#KT7q0q73MHD%;{CKe}XMMy{Tv_#@MQKtQm?=4q>mijG?dLNnY9B?GUi`@wNkAsb~Dp@FE*6T>#TQJ^ly7bZIf-Xa>~b64L#r z0=m5dnE8J-LXvW+d0KYuP&YbD%9svTT&oeHOi9ki1_XbBVrU^Iev%eG-y>!np>#<8 z9kN%1Qm)Cjdt9U|s*l@NZOUL;H3c_0R+%hYNq0s*dtx16s1~_39p3%qbJVQLOjfp4Mbc6g4cI1&Gz8crhwem31U)d|i9PW|19Reu z27&+!umJ<)L?R3h48zt$CTPP$+JkaQ0A)+`sIsb3)nsMgL}Z^C8OwEX?wf5TQ zzCT61i2r-<-R7L#uHD>o?^9cV!c{3S!mV(((c^*JWt)%5Nax79O@xp3JRbB@*zEev zHl9*}MUvaS^iITW6+j)SB&GUkS8r}lcmSf zjZ9iZXF;hNWtQFS;#FRf={D@yWAwbb_iK$Fu~tBF#5!ml(zbAGI(+`^FXC(Od{wUF zh15h73e2FA;#&9fnWM!&?sn@B$r-6Q_Ljpo?N{odj$Y`8wS*mGq}0gM0^OU+5=SwT`F% zf>M%(I9}N0jWrf5iUu2y?xTZ8d2*B0J3Mw5kX)xtaUL_EM!Ej6me!H^Y`RQJ%sw~$ zN47BiIkEYFnPN~ga)oI6OGH~j7GoTq$|LvbY6y^WgLGR!C zTYn{f?{~j^+^X>MD^KxPAL#t8-~Ph!vzTmXlxVEVGHAwH%_a9Mjt1cJJWpn8b?aMi zzm^a496N4&{15*pe>EDl!-}~?4Z$1?NzxTU;m_K;u zr*WhIul@DEcr+Vs&w%*5b&EzO4D*ry3`sKEHQ8@Jk}n`?1ea}<8;g|7rdPPpX9CXG{um?JjgM7oa%97@JyPhdc|Ra zS#+>du2n?1u0)v>N9nQz4+YMi+(cRw&e_`LXE`Nf95z2J+ymLS@;wC_q6V6M@(D756)CyW0`Tg{-=4Pl=#_T@+k zE@>XM;(tAya-H0D=%V>zbH%uYg3DcA5hH(2y<6*IQSvWW4oTUjO zLbOnYJvB!7?G?uViWMuNTZc{e57nu(fhEEHI%eMcY%s}v0R5Zw5SvJah1oU+!Vm^Cf$;3j=D^Fj$StWk_-n$rVf~zxHhI{^BgeL1GYb5lAXG%NP?QWOY zF5*`lqQQLg*{#%nhA%v^TgE60BkuOA6}Mln`0@vjD0k>K?m3cHgytf04DTAp|yK~$JNhp-ebsrMuOw@)1UtwfBMa@ z<1c>xi%Ye8hOZM-+xIbS0<~TfQuK2E0KKgAsD@Q_v=!%00mX{rL-?^k{fL!HsEx_E z5Yc!RAc_d_^qhdUlNK_3)7#CsuILqXN|F?^>d!d^r+I4pT)7ffD^51}1# z13F4A+XBn5#+CK#K}wIyU?^L$&fFPLL6~m*WN6aHwP(JOk4UkDHjWtPG2csu^_7(K zhq*<6+7Ipo3fr>N-&koxw4(Av2ESI$SoUQ)30Ugt*g#xj<~9IeB+{k!>+xW;1HU7O zK6wPz9<%Z8f0SR;X$8J;p%2b7>HjpOVE+rJ_aY&{A!Tljbm0I>#A)7_P3x@o-F3=U zP27n4H1EMXCl*WRLkAMu?beEaj(5KQlcV8qd;Y=g_JD`t7Y(-$1@-TL^Jq5QRz+Yy z!S)3Z&V`Gl6#Reu5B^#F;^7MV?Y42y8=&d+Q0&L8fWPg3p#L^%J{0)JvnFmUBzW9yWx+rGNB<1}$?yK*T1~Rg8(2-3 zhcRx?jJQ3I;fwXWi+}td{J*e~u3C&xag*IU4|Mz+4-JRg-2dj^8!K9lCeuT+A^+%s z-UA*+{I|gv-IhdG-FNN6P?pJuv8MR|;9wa#w6@D>#qk>YLcCWSAVfL~qcoom>m?s; zlfq-}RXijT&_s{3>RF~t3|p4y8q6>wD3QgP{I~Lc`DOiLh2hjnz%Ini%B#vIZ~q^^ zUJxq^uEIue+?Gi?Spdyuq>5-*B~fv`HNqI4<}6?Vm<77bb2k6Kr`u&fCb3G~8i37M z+rIi+IFM5{y6D8XJ+v^07%#>sK=Hq0GqW4goeH7-O2vP43#60KF=2E=7HG;TxR9*lTR%m3T;@WRWtW3KW3&yk%6 z79UIIga7D4yn;e1LZ!}A4ZN9Wx-g10+6Co@mc1aMWF`id?2@;WXt)@1TzKGiCSjZZ zLpH7NZgE-IvlZI9R>b2fRov)VRyO;aPt9gD3F}d!tXj zs<6<_2u-K_zs|^!KRYUR`vqZ)F#S&3OBhZ{jx} znhv9oZg>(Co>XQ|21juj2=CMZ$|R5N*A*UyZ;hlznrPmK9TD6|!tT=rrE$~iRmeMzrGj_qv2{LP&BJJt zG;abJcfV^$VC#ji$EmtsYgy}BJ z*p7io*8Xy*Tz^{^;|jMDY6S1ETp=N5a=ep9v-SkWjKw49`4xU}xKrG-K`5aI0MjvM zGa@Bblcff@dsc2M&53>IOG*wcww{dTT|n={>m4QqWkvx!-w;}_UG@$d+)t}jQ4-}kN*B~ z;@|(b{!b5A+kc{%k~QwF*>Jncf4e$=+xBow{EPqJpW?k=et1mu*M8?W=lf&ENU!f9a6H@BQwVhj%aiET6pngy(Pn_UGgF^P2zSKmRiw^;^IFxqP5I z{;kXf~|pJPd9Qg}?mrvHIc|=Rf)X{1Ik2Y4g3=%!54ei(h<@ z|NsB|&tgYI#>x6j`yDI45;Jx-02l(;4x)a;3Rr+E{?msb6h@wct#Rxb%fPgbG53P) z=KqaqBmQ4cvHOfg3=dgXb3E`a5p0OS{G_j9!t;zuy9VyWiSJD&1**|dI}!?Oo>nnY z(_T}Z2G15?+G_;|rMKfrZPnPYtR$TG(szu+6iAc*#E!5FaZSg_|7(M#Hny6mQuFur(cSG{67e!@r*&H;*QpJp9Z_ zhnd0b8BYKCHRT<5;(uRYO1s!W<#f8!x=HeTuaLsY-fa7nYtgh)Xf0)jjT`iUrhfy0 zL9jfnuSTzVJLQ+2jDB;icxX7}&p!B3kdJ%9_4>7O#4c9OI)|m-$QKI^b9g(4H{QPR z_*vXmI)pc6`an6wFRt;>ba;$sx#4SgJU9|af9mkcgx!Z`6^8Zrw@KSDq|!c&?I zB)~L-^AYAJGoTjW&Y&H4>bg0x9ioi?E@A-{8%DhaV_|L6WCmmRT1Sr$uV#0Vb^&nm z)-~T+M&kh*%=RicxokMzL(>7@`O&v*u(16Wo1gQVCI}@stf?ol5R>LW0`b#at^!5= z+?F}reYH*GIf&mm{A}l^@n$aS{I5g~dPYT*aj+Q?HUN_v+$DOO+loG)Zynk8LYr`# zTgN(QW>|?+0!!YA+ zRSDby6x>s9^E!*@%AIJSjwvHMxA&HTjyngd;r<=jtizt8@!YcKG3WpWN0QxVwuZt! z=SeHt>mUMMNVdLPCk8I8ok!0g+7wTiv44g&&Ep=z*r8B%MlOikHf>Jl{^D=Eo&Vnd z{(pXa{$Kqs{?T#ezx``dS$)2`ZcJp?doem$eYGrQCHLaLmK%+jb54kU6&jvj=LS}Z z;%@#?SzBG{cc1EyX8>@2BleNn8ULHNI|^+UZQ3!@cHkgl7LDqKIv)Qj!JP_uw@_iP zuxInBoZ>YZRJ^dH-jj+Al#Vg3y255fHk5Mkm_w@3zM@eaACF@(8wxNM(;KAF{y~}L z9RSRYJ0`5{jvqwP#;RFK*_+Wa(|7tmp6~r;6NTJ}a5$ZfaGzvegyI~TEy67fL^YNm z-ING=J1Gx%HMqrxWhl?h|Mxh)?VH76asTAWouu!P z>CZAh{N*(|&1%8+EgA=sQvMbXe+7n1PG&;x041BN7y4%6%P&2>Mn0#JLz%z#u=mR!Jb7q3w9lpa zm+?Mli1i8uHMEFPzk9{&z_aLrfmlg zk8lw7Zs+KHI`*wuXM)b8(8e}-^b((gG9D*zU1#e{`W4L0!!$xYr=e%*M2Nf&9j)Z? zjaS~pXFl<3q@M}kR&?j-Lw(J%)!erF!9uyT{qhxvzUdMAE1@6%F45T!;T|Su?J`j< zT_*_!h1&EsClQ15%-!f(3CrlN^q|EjlOg8ivMKDXXJ>Ye;gOy>PUl6;df5h?geuvq zw6vjG@qe@`1eXm^UCe3K+yZj%pXX+TM zWs68#B~<4vT@@dmSQOf%RZ?|6ssS`Qa}@jVg)G{xOn!Cr)RPrG@;yM+CMfz@)!ozd zk|OUnH!bb4LIifuiT}a>_`iey>won3@o)b-e~)x1{20~wr7x|Y*}6T5@uAs}Oo%Pn zEks@c`r2_hqj_onum36=^9D0^20UEVp`E-6z{t`43?L@Dn5PnY1#QT+(1w%&&o$G4tM!7LAIn(n2HPZRFb$ z2ZT3T;8wO~CYBedL5pX*r3zidJ?&v%8*1Pkqc#qj4^;;$Wxqj|!> z3mCMQ|M#<>i87wCC%t9TFh5aW&Gt10!A48#t{M^#^S}IB#M2kY6kHLFeg?!vD=>g* zm!U9mc$|cjYBrP=bkHKdI;QFGrqZGG!s&#@E4Vie7v1lX(5bH~BRT>BwZlaEf^kEdbhlZKES- zte|-WNd2z8>=|yo`(7RApNI|H|d|Ooxx~IMRGBHtZ?@2nnL)<2eWT zD;0(!=P60PZ!L28ia^P7UQuevqzx z#){}HBWFIn4pMFdRI#@PkMKRK2DW5BD1(WUqww+S6-Cn5Z{bsKd?sqp z*tCwej~oy*GO&JY?PEA#@)QOtrs6eiv_a)oPr!6wpFxm`%B?buzZKvaT!&1YcJ>LX zjzlGIeb{hBCfw1DkGNg=2T>u1O9yKc4wfSuBS?kmssx~#loGINB$}L-e>D$ly5u=C zA1tSG3zn&Ml>}gOZ5}z)5;&E8CjeM@(@D%6JG4ho)kjRnOg2xD?Zb6S@61VNu%ou;hS>YYxv1EsEczu>el- zUruN-Y9v4wWwUKB7=umzVd|H~P@j$mRc|&f8JmU6f)$^mAl8R=^T@e9J=h%I>*qWR z;x8e;k($=q)nieNCJWAvr9-pK0g@dozcZk$VUI4t?Wn8eKsVZMO@}}K*4Oai#~-aZ zdue-i|Fdj2(ai` zfw+J9j5NFkPa`1)Wv+hPuF7M-KGw9o{Q3n?Uy|E1I1%*=Vqw@(ay$+S3$0AqZ$qcm z1`0uxdz87zJ`%8cvF05%b6V|z9&~fOpl<563Dbeaq(a| zBlPCO)*zGp`a(Riowue#zW(ATjq{L9f=e?%3=$yZwS(9}Vb2DwSmK2bEbkBU$pBWl zP!LRR2eavb7I5LHCq=;Ru^_+k^vdB6X*rJR^aca#4zL@tEbh^<_tAgj-zibcQx91) z%h(35V3Jk9PA_QMkJI>jc;-hwRxo(9zy)S<$J-n~{l(9Zy|2Ies&Uw3XwE2{h3;2g zZh`d64(nsE1Q&+yHH*bR=l}&_%S?_ra=Q{AgCF?R)EqD|#_IA7erlL8l57&eOgA)T z%n7A7n*Tr@Nm|2&r|LLKGSk_oe)TDBI- zvN)kHm$H%C_KH6V$Pg4m7{SP=WtD+bag+{>3@icp*F8(?v)vzJfuM5HkpIJ$W2WDaQ%P*VoLwjOz*1Tat89CVu}gNG zvMUZjNl3$E31aGe9b5dGgSgGPy`irFM*nMC`d!n|jyP8p0w;NY^wG2U@WYSs-}-O= z`q6Z_J@ergzj*&RFzbIYAPhB-3FJjMTEv9_hoPcvQsG29j}S1kT8LX6k*0DlTh26C?pr5@JIix*gfcd05=8 zesD)iG&H%$pwdAHW>u4@do@Dcj3T2Th76ed#kjYh?`blV>}LFDt;A*ODDPqlF$8|CwG% zWOZ<8?BS!FfB5m(br&mS9iS}x!IRrA^B;;{+^o1(@!x$=IqH;q2y!~EbrQAJZOSWZ z!wZjJI?nyz*?WgsnvfJfdVG+VcI8uC4y)5W&IHEykb#*~0YAN7;_-u2UwgEgL>yP| zMZ;~S!|mrXfAH*LG35kna2N^99OMV@{ipx#@kP&YSn?A>cjuvvz4PGO$4+x#t8-C< zVRI7><25NPDCa3hR3h@Q@w1=$On&Y&e}OV=^T>hT3z_qL|9f`FwJj;1M{-rsLY+9> zGu}Sx!dZiNIMR?*W*xgMi84%^pRzsAl?sq^fA}GT8zvfOIfNf=0XX-uQe-u6{dn7( z?yoITPfpG$#nKYJ%ga|OFmq~7Dt7#g;rqzhzcd>)Az(1jC9 z@|BqMcg*y}-7lM|v2MMkDh*=O#e#e}h^yQp$uAke^u1FzB!D#?Xm1NwL z9%4a%HwTTO`!k7M{OqQ@ju}_h?(nTCpr$CsOXUc*pAv%G)n+=7JD~wJ? zyMT{@8c@5b2XvirZ9Y}PJ|lkRLV2)k^8yS{TJwyiDc$*OE?)8k!R zD@rAgVQbb0ykh|;^6$FLI3tZG(~(PWG!qi%q7W9hoQd5>`1-s5(|;}f*BSQL*S`7= z{=xs@|9L!ovT#XD-{G0VfO8dyt+DhRMR-#mNX?4J@24w<=CbZ14Lt*^qW zGA3&(=psU$X}(jolqTgV))w^v&9`wcr}*FK9ahHJ`2#a@Yh30DQ=DIH@z@(6jQ_!v zXSo-AZDWhHYvvvMYT|uhl%ze2a4>F8ykdbL_i2)z%C+Q-V#l@Hy)%bMm`$ zp3m$!wL$80Y|7??BEy6V*tUKjl8+4rCKV=-hqsqrcoDz;xi39jlerX!Yaff{VYg8Y zgpm*7IZ|cu3Ehel1GcGtFGSnL%i0){OJtX7V2p;8L{~d>+mP8myfD2~9#}X6Xaxkv zTo0$@++jaaX|A&H!kWR)wXT5l^@|@}@!MvX@+h8MxsG?@AS6h`xtF2fVjt#ant`G3Z^<%rEI8f9)P zL^!HUtu2lHFA?;!4~}O#kYmi4(jKh+s;!i_p&iW6Lz8RiO7zq`5$$roUw-;AKK1D1 zV(ahH@XW)>MrR(KlmHRGat=FpWW4db;{;yke12SU zz76sD&wM66_vv4wbq)chy$51il&H6$RTikccgwb^7AAU&0t1m1V5vG!m%8p=2cFpO z;9QAR4;g}fY*3Ar!1MV^B^7mRMStRsq*s!0t>T}-R6%2l38AJ&clAIgFf?95u=5DP z1{81sXWz%WKmDG$h|43zLs(^-xjQl7jRgADFrIzT*!ZoTrRv!+ zb14@H-B(hG=qMJ(_(%}KlAA;)@B^VrbwfO6jQ5h+3A9@$ z_MT_2V@s`c8H!H>dxItK7=cGk0Kl&T8(?H?K)!m&0&&I;@ef$zRf-9^2-4fIqyj$?H&1 ze1ubvL7oWj>u^Ng?w4+bp%Rl`gcTdjV^qhBz;l3yVw_E*4QnjwTNY9E8QyyPwc9U7 z+g!xxVX*B0rS0*PJNa?#qRa~x{2oc9Q^gUazjU_^9%*TV`07| zdrwZr>+DYww`qpExZUj9mKgtM>@q~y@!K)18mEkJh8-k;S=DXR_4yAUbl!-a?f-Xz z%mf7sS#qgmMGGS*#(;2!U+Mqk`4q#a+2!tz&+(P9JvATm`i{Y6x=}Mqqs`Qb1`0Yk za^*C?I{tg*3ct*a83-M_o*R;PX^6Cgxb%kIo%Z>QPhZS0eeR3#`10teSPSTF_z*rM zMg*-7R`lTx*lhE~xcY8I^BxNQ9E&gdUS9^(tmjdnRo>U#C_fii#KoEl(f)5MA}Sdo z>ej&P-1dpG*Vqeh42!vb9QpGfeH_o8HMEw}i`MA|aH8PF`f7?C3d#PA8Y`UtsKyCW zH4U`tW1xHwjXQkco@#1g587ve@UR;&JnwNYEG29IW!jJz(eliD@n1wA(u&aJ7XM?D zUy9cs{qpF@*{j&`1h%!FTGdG{Z#wMdVj{+*L{cd%{wpPvd}W2a5LFY!7l3}sDn&wI_LL+2BBYPwkrG0D#6m5BfgaG{22ayb3u z>6CJsKaFG7yyHrW_T2tl^H(++2KzYs7#w_LdDF&hZW~Gw{cSCHcfjDUR>^Foyu9^_5V)G=_z8(Om$ zh7k6h8zb?y{`OX<18Vctb7U$x`AkId%3!-sJQ``3vfP8GPe7a_v{F29kVT;~6 zy|=n;R^n#3JmThv=Pmo=mln31D_e0U#}ZcIMi+ydoLX@1@rYqhWjJamHRC|X6c`3i zneUo``M;sfDjb%`JT48N@p&2lFMWU?C;#h8Mj*UyMJ#PPqqDvoz?xf^B4T=JcOn_r zC7ZUPiT1PbuuE?{uhWn>S3FB*-=;j%>AC&ArsvW3&New>Ha4iWYC`BZVBqMfIf0ok zZB8=de@h!P|DUq!0w`_X65ER}ycl2l?3eP<#Vu-GZ5~inV;MfC7w6~wD5P3N@Q_@@ zh6=2$wcA~DhnHlBq29X4z7#fUsIEx~U6SM4Ub+r7AArrLmK4CI19ldp9ogf*=B-A^ zQ6N8DTK?G&GoL-X#*i^~>!SYK@TtdRzUxNB1ON#Om~j|;PEj2Ol~fs>u8dQruJ?%+ zz16(ooivt;6+UQ=&XN45LbqWPYVfQX9DKYCT;I>}-t8%Teh|)n^xpUI-iJRcVyz*# z=3Digj0PPGF|irg7cCnGAI1{{oZ6pfeesu`KEtOTU$Oi9kjcaA8y`KwH$J*xh^vrm z`9EvfzSj7acmF}~p^>xLUPW@Y=wcLt1!AIK*t0M`S_7_)=e=Sa-;UL}Y66Pc$NUeU zzxn;|<+s20U5p}b9T9sx@PdiMp|kHkhSKa&(do zF&#F4&F$DUM2()L??dKjl-H+T|4h8~+NVg0$Tn`Rh$`{lE=!v#1_`9OkctT`4PRFj z%3$i(;0D0nP1NqrhGuq|Sr(=3m32%fy+^ypuWn)>oJ~=4-uJO6JwOvp8!Hrb07$g| zcQndI-ENlkG_rFuy6AnLpft_puNd`k>*XZ98a3x8DXQp;;UC2VM4GI$RDtF9ODLC1 zTP+=?O*;6bA|t%3F-F!@=QH~5|&EJu$DdIa%CY#mL5Q-M;+L(dBZ26IqQ8d>K@z?X<0t5P^m zo78aOL$sp3M@Lo9u^IDl`8bCfT3TXwXEe%&0x$)lVY97fnNi6jp{UVufIirg3=CLb z10J(qE)6m=Z)4&Nj;SZrmOW)>Pld7W9UN);zm0eon<6k`QP}87k&{OiGcpd^r`RZR zJ%1XM31ra$y`x3P|EOj|4{vkBp7#O2JQ`55K{iBaqR=CegWymwyN`J(2aQc|bb{8U z?4{(25s0xc*o&-~$li>ieJ4S$t1E4w_uIrKR*F^vyB&3PDXtl*)-o;zUNs5}GxB72 zQvDi|jzfQKgTTx?GSOLB`{Qzv#wDV6db24NEJ6kfk71`*;yJGX+?Nb8ik_C`!gKIS z-XSeBlFetg_}|bFcjEszZdTgEmQZK)24d_C)peX%9$YYCE8yBRmJ2?7djEs>@y+ji zLuJ+?;@U}eI$W^;jA>Jhdga$s7O9xH&WlQ|IKs^~QX(objo1+;uEK%!nd2))9KH~ zebFZ31?7Z6?3hq=t|mzP={nr%`zXQ>DO9825X;h2J(B@-J4Xrul5%O0soB5{S6Jd~ zFakpmT>AoXc6PJkYl_R2|9fxld~K+Cj|p4NI@IT=EaACuv!E4)}eE1kY{n+f31l#u;Jzse83}1NiakCB8{^8+L zAM4Y_q>|D_Aps*o!{G9az%aJ#CIME^jdI`;K7lX8%(Ja!E0l8z&=7q+QfV#jB z^H!5ial1K_eHy}FK^Z=NA3_vw$FR@ex%Se{ft z01NnuK>>G)js^2&=RM8E3#!ntAf&HfX}FETUv9we|Ix6J<|o{I`%@2lQvk^gev<;t z0n8mF4AJEUrQca&Z?-*CImh6IcQs}#tWLUQU?^{3{Z6}&jEYN!CG7OmhIt&sAj}JL z;3o&(c)I(l0ytAhn-~_lK%s)VD;Y~yrPNgNAhl4|0uk8GpqWM68+glvl8~;^Jiw-) zvRpLHjMd=k-cGZUTEW#IP}>4H-Ku5huU*B{)FF8sUXJ-?BEUIDr*H%X#08R}_i}I2 z6z6%slyTb=ToOS&o7trk$UI1N)W4v>JN<};q>}%zjf($=xGteNEJd9~X{JH4){k8z z`z+~an|8g^*gD|NKt<&xFqC8tJ{qKT&dHgW6NDVDwld$P$fjG)`0r?Dufji)ih;ix z%MR}ROh)V|R-gM6Zr=q{v9pRQ{QQ^i<+r}~o%93b-`LmlMr|tZS1O@gs%&e&({EL^ zladgWgP1zP!X=vxZ*nZMvW_H{twD8tAO@PP7N^TK-Em?AfMt*MJPMx{!^h07Fj+Hr zT0E`-{b)LT@(~_Cp>h}N=uVsscWetYz!QS>bTd{Q=N`6~>o)E%8&xP%6D`*93_-UY zx92J3{+yW@)|t7Q_C zO|4tQ;o)B@P3<9fKheI6vsL>}XV)?2IRGPkbnACeW$YXHsI3SqE4q$^Uff!;zR1<1hizA<^lF3%k`5{HrVN&PpCY-$_``g0Q7n zO*q7JZmWTlTnyKolp)0h^S9DXTD?2hie)EKmVOR{Lg=bZ2kHn{&eAgSXf~paeJBjLrYEnWyO)m1)i1a!*k3$<8Ekv&>BXQ10TiuNa1H1pdu3Lgykv5oF?6$G8)~c}H}P*JP7J?-Swjz|D?1fdx;YY_m{r84UD6lZ=8Daj z*g^UE+`Xp@Z`HB{fS@nsWLs?dm1@ut6i*x|=!rSiuck%YW}iUnr0yaqyuB4HsCdMZ zKj@!45cV?n+|APr&NA(j`#1lC$>IMe?f zGcA^V)(7&MIQu_3KW&t4L}UJ$I(7j->w5S$JKDSBI7axcY$-%^fav&NVVS}W*fB?RKasO*3#QUih650Tpp|66gZiBD=?AMI$<`ot_>!S$4QdWd2Z^uHp`Jy z{3#9-;KM3sW6rZv9UEy`L$0tg;{V{PJScc!x%sFEW3D+03am-B1Q?_4>-@i0$-u`f zsT73Pc$YLA%Qs&7R6cq1LK>~I9uKk1+=yM2ca98)@xPc5A18x0^HC8JA3Y?-U;f|; z-n+(@C!!&swm&o+;`5JtrNexs{_yn6n0oznt7G@$peKlL=wOyYa*?f@XPWV~>-PD2 z9n0%2VA+Rg_RA}EH8hxAp_l)E^&4Nu(R7G0tfKH5H!CsF1auQI3^-giXsES92dM6|lDMQvvXgG2?j^h&-s zD9tw~cV3prgcK1l7a1(bFRRhOQwfatwKu=;&~*5OPZ4e0jSZHEMTfvrZJ@?qhqzKW zWTK71jf*yT%qAPSs>bM&znRONkw@-)*RE>UOIVb(W203Ac}yrvm`V zLJ2THI+>0i-o1#9k zPLgDw6LZRxy*~C2UZ|e*MUhta#T?jQRU9(%4V%j0CpD$nx-h!tqHzX>p)R{(eDI0s zN9#2z5E#%adx&Mz&99+|NKDRWyraCoG(J`wm|GbA8hNM)PJNx5<|mS9ptCW`Ds$Qz zNK^UE;0yBaozG-w0vj@AwZWj@@L3FRn1i7OjeGmt@jqbpnH{BaZZV)tVXvjX$_^W7 z1Z4rJBxxIjOW(u4vb$izU&bK}YYS>kIyn_<%xC5$)uoNX4)=eIXO?8?!A_H>_?5zP z;3+%ve#a1*th@FJi=Bpmh;0DL8YvfehIAYrI3(t#9Yw1WWzFw8D2-Rb?=Ix4FEnx$ zZ)3GwBp5qs0`mXNHZ8^#8hZ?LrCBkGN6Q74moPRJ0;Jdv7lFyu?Nb*l0bskL*i3eO zA$}K!(4wi5Rc6?jDU(I7N=~?eoK|-NUA?2QK-;6x780s3*G)ByXC+i=`F|tL9#8P& zpZ*x%{{FXxmi1m31i#>xQ(7r`rpP!353*Wx*Sp;fW#mNotrlyUKID2B5rkL7a{xDn z|EJm!{e77b(k{ic%uX6exBUC`&z{#>6YbKPi30~)1n>s)U#*~PvEH(`)~ z!UDQSc;u+gM#$4+HENclg~bM^Eip}GZKs{x_S{xfz5U8(@z8V-yoWl8S6%(At!j({ z?T(%Q5Ceh{%br<*5n^pv0?y&{&mK1Z{`-&fz4RCt(s?2OvFod|2f>F0-wIy2e;IK8~`kQ zV6s9(bjEP@K4ynPCw#p)jz_egHJ%Kij+?bsn2}u|%9#Y8w zy3ye>`L$1c9&fz#M)MTbR78^#lPo$_F!2~r7wQIy-}G#95Z%S6&W<=aS_4H|lfzin z!trn?CjBYHTv|)Zw(1xwD&w@;Ag0d%b}}OhNi1U8ft#O-q9^}9KqiLzM?#Q;yv$YL zSmC6Eul-*NnDmyPdH#b*4O}0ccxC%FXs>NZrA0a|+C-M{mi*V>YHGx0yo7}1K&ot3 zr>IbYDBKKeE-}0ya8j}tCkX>JIwwZ9z!^daBKjmBieGq;y8|I-p~`5yBXQ=Cuiz;J zRXIUu07VB6gkely`R+hka!TQ}O|_eOV(*o(&=Dr5MuOC^x%AjcVQEOSH|f@6RXE4T zTo?Ihb`B}C2;u-sjGPu$m*IkiUMPT-ABR($I&yn8hV+v3RAw$XXgpezO;3{EV>l~f zxY`uaXo!X#TM*EOk{i9boiGUL2@4;~Y@L8ohvZ6i8>P}%dQz3b;Yxbl^2F4t4RVT$qZ3_mDr{d`P|)B|0@tUdz{15Esuv~9Xsc^^GO^_`nxKW5 z);LUdN+2DqynGAzX-H$A8iz8MoNA9r(hK@r(;6_SWZJNtiUYQ>)k`L@Fz`vS{z zhW|&ikpmnpI=QXV)E0l2(145dWatlgTHJ9enz0OYlHj?KjJz!f=tWTXUTdPX@YA@! z;Y_H{&;O;sk{RI*a)(7M^Z!EK#R}oA*t%u^KmO@Y@ZER6D^f-p($GCrSKHK#r*Wsb znxdj^qhJrZo)rMeo+=I(&)TWmCDtYf#Z_BeLgj6v{-4d=MqO&T^U*3cI< z_%09D@%F2q#pBDih0``P z-m(4jkDom>9X>Wvu_OPn{X)iq6HWi97XgPluraU4exNcB0|IV z5<&}otuRRCzAF6k)^zwry!(?M!g18p({5KMtID%PV%f0qZgiO~Hm=)Y756NQ8hf*X z<#6gcd<7B`b~xN6FlGeYm8t&dAR#)L+vKQfa*!lNvF|dF9a01hHK2li#cM_lQ|U0r zaBGVg1e7pIdjjKuG%LAn$Owx#nMAv_(&6=&KC#T=x;0xwShi7 zX|-qbH<^k962Y9JU75*9@YKc-D3Y8M2#my$S4hKjF%7L%Q5g|-`yBpHzY8_i%r($5 zZP$((jgDj^$F?aXw0;+s2a==k1V%9udPX_buewBjeSfwISDMxKUul4&OH zRAVaGv+LQ#?KPE?j?eo_p&!gl%Gj>mSm#KGGhPT`|1{6xNm2gb6Bp$nWs1R2mwPX{Th7=Kl&c7Hr)6 zrA`kSqK7MAmN#BPzphmBWKxmx>UR4m3~ZG&rI2lCi_hL)!W~zo{4jnYX?9ph`UywM z#LNc{`RB-w4DUQ?O${ha?UCAdqT|2WYH+tKB4SWN9)9qnAK{%JzEd*Kaxa|of2*g% ztx!-Ljun*8!ERmkMtHHT|G*v5vpiFE^Me z0K>9k(skY9{~9ajN-GdnCcVhZy1gPFJ!uh!^I}}47R7DA5a;&}BN<$za>!(?F5%Bo ztYfMKRs1g#nM8-;;qAcV?|OdD-gK!E5@Xp)S^VAjACrl)pK4I_p)3Ahz&JAb1uT<^ z8pj$%;eCMY5Pj3dLrMPjtDk#lI=ny{!Z0?bE9UT9*cn&mH*G}B9oHxG^;G=Vs&v@X!nsz35Cfi?Ot?=hnOK(1t>p+WUyIc&d(#~x))Oy zsy9f;Q$)xl&9*)K{o1#`nZJ1dJ$^mxBBwL*0o<)TLDu?0mI_RlJ2Z>BQY(EnC8#MG zd~AuY>fyjN%xTFLrI=SXZhHk_LF+I&)^Ryf*G^#i)(f$kPIQF`muluY>B5lt@qV== ze$Qqg2u*cpL4uHq&*2`f03HZTq^W2%I_;l%Ag*DtX%yN6&QT$OpAZx% z+^GuP>bJ7s-uOZt6)*NUX}evRRR<PRWd_w8jtkbz>;QQJ|bflIhcw5DT$83Mgb z#m15Ur(f#IrVxsK0n@0HbMNKBlzx&qMIhHM5+sJCypPpyt(r2kg-E_8|iI<3G%$3^R%pVX2WX zP->S&$A6y?9hzx~+ES+3?xz?PPIfAFGpMrfs4<&6!V?c{Z%Nui%PiZz(0s^dQG~9S z?(o#vsd2+VxtS+6$%*JjE3FaBzno7p?)o|A9P9PL17~0U@JW22g+IM7!s8)s zD;@IJj%PZwQ~L>8;b7-X09YW9TXUca@P%^+pkK3rpA&@-R;R6}EoCbMR7~pN_0T=Q z@(&7}by^c@ruT5f_2X-N<*R>!U%dZIV8~7SqF*H1dyCSAs3i_|{A1*O_F)xv(IIM| zM~3C+Mj@J-`-ZPP@z(H5fJ6~mr>1W-xJi0u>7vK8zeER4`*F%wW)$FG+llLArq#c3e()M|T zt1g}32fDK+a-dtK5FaRsz^G^ayr4VQ%U`@v%E78VEzxsBjE?k|0{af(u%uYf-y*E+8`KkC^b!ixo)$( zvYm-0pIf)Q{GVhsD6gGswMp2)I~%KjGY%4-*ha`13_zCn!-Of*%N^gEA8%nUf4W}N zo)^M^l%j)!3pN<2A;oB?yQ`6f8MHU@O!qOJ)je6{5dAP-x-TKgiAm>+xnL z7hzkdwY<5v!{a|@VVkMSmGPdolIdZ1^$WmcH_fGP16|DeE@r#8E&br_-hSIvPw~AC zEEH2@VnA_51OUrR4|vPi@Hj)3#NEvoLhzOu~vS{^tpFOh`-F-7{Ij=+MjC-&Xv$xYwjY zl;(y0A7Wb*v2wqxyz7w1ZI#1A)1mzzwsOE`U>BmXVVa5#<~{ca^M77(U&Y^b*d9~E-vP@w6>X!IDeb`hWaPCVhU zQx7?wO=13jkty+mMyTIujeS2;Q8I&I}%G2LHT z!OH(33<^8sGNUw}TmEN9gAX6b|NZwL+wB!4q15V4mO=3wPd~<|AFT&TT6%u`T`L^A z@|c2Rqe-z57Cgff=E63ZLYDPc+~Tltd$>*$Y|a#3RCtn<7R5DA0g7E|jUMmW$JhMI zSN|06-I@+I-ZI)uBCc5yoKA#R802)|5{p~fRZEdMM>qD^?c` zxo1Ub4?}J&EB*!kUL*)cH)Rh?Kl{H#OVbaVbNauy0@~SXT8SbT$_&HI>@}}TZm0NP zhj}c|JlQw)j(K!~G9WBNZ7 z|6y0dBN{DDg!HCn=XhO*@%L(2or(7UXelQ!iZ*QOq5V`)^mtGG4#C`y{|K3R7`sH**x84e%pMl2IU_A10Da92E3@s@BiSPd}usyJ-R_k+zpe5 zT&5V4#3%Smt+(d7FB1=O6QPF=q`PRdYXcL{_`pDf93WWJ%5lT;cKMf$->k`<=z@Ur zz2h+9z)|8btBQ!GHM7!ZUp8(ba4E8i1w})b0_EX~EUmrrUuM~|ekr;k{!=N+lw{*Hi_n z>ocuCSk#GXo{NDDTdpGTPKAhI=<($VPy{GxZ$XeBc7JOdvdG1PdGau61ZgO~y=q!1{76lCaWBiW(a0hIBzMOq8n+%4`^}4Ne_`+Miju#%kh|{PR zs{K_m3G*1Y|0D%0$k;nV*}7R1SQzB`0*vB-%khTs(g6sHVk+}KweH*tsQO9<%6{xz zA10h>Q+Db-+UG`w0xcC!x2H^{6(0TX#eddvz)YBAlOX0bsp2EZ_Yg_$pK^dLOaI;< zp7s=e@_}e8U}{NTk4?U_E0sRL?3yJEk!&bW1gtlYcpKc>5@=`8jJFk6U=kSc!W6TQ zGRGm-I&7Ef>j7;Ym^b3>8js=c4oOKgvyv5LdI+(q4y(crFJm6p(j`Z zCK1BrG~m3AyK{&D<}xvi~#o&oxbLUvVTS&j8~9MD^L;>mMV=ey_|$m9QY~Izfuv| zLT_|(kQ#5zP$w-LEe8mzB%S;i<}~CAZc#8Lj)#0J-OfUP$miH&{+}j@+))A`tr-r# zw6E#J;j9$bivNV5<5?sv>KLHP&5~Y4^)ewruF11<0Ub&M0nBf<=)Vh}32|pa81h>? zj6lh{FTk|64b!8s!bH==0;^=SW@9TFDS2755sUQEi$>{F?M)^|@2 z85%?%QgO{)Ne0vXmz(7R7Y`>@EexUbh)=Nz8(P=0@XmEl5i=3|mcwP){ z{|y(~{q986)iug-V)S)WGC4-R2(UQc?d{R!3Eq0;w$kBAG&V1xu6+MWoT=x2 zbo`fu?xp2h{Kts@GW23rjivbDq3`(R_aEc^>-^b|P@A}?`pXYZhfhDgR#+-qtGNjY zeGhF4tztUHK#+cS1)0j3Ar?=eU zepszGW{OstfTQGIQW%no#|r9b)I^Tu;T1=)lOwn_Ue@sv*8u$V2x{z^HCsoR@SNkQ zIx+$MbWZf?;+r;_T1pDC5dNXG2wu^JQ~+K5K<0VrkOJtEaq@vC<-nDsGh~HQHxoNq z1`Hb$vyt%l(PMn>tuNup6jJ303R5k!0G`kZp>F)gi1HLLmSaLHl!Nn%8u2 zHmR411l;EfNYb($s|`BptVuS%oM`K{Q^*=6p&&nQi?m;v<3twOM*Xj?os7c#ANFt> zPP5@K?8Nh6seGjVwcl=TVuKQR)??zQX>r(zLF@fC^92Jgn%{LElWSRLE7o3NFiJ3R z8XWK$1e6`j$WL26Rm20gvh6c<3*4ZcS|f^Hua3yT?*BD(YMfzO5#yxJ_E4BnNReHT z1oQgr^>|B3Wna<$fy_IwigpomxlX{02ZHa=(&T|T{W?uL-;D_qkLP{TL4V=wfoO-y z#xMCT#R~M~Dt}pyJHSVG^bwr}xf!B$pxOp-<#J;LEFp=u=d@UaAr=({9StFPI!UXL zI$4w{(E$xtSRAKRgVJaz5j!9YlkJnve2)L$#=peKlBfSSxwVn7j(}k_K-{lSlst5d zc@1rn$CP{c#3f9}T%u`AieQu2ZKhiw%x-c)g>A}iCR}7vvVAMbqG)&nB(Z8vP2Vv@ zJq%=60*hk7^#Z>lZxL_+Z9{Wx)vHX`p}2Jdv|TD+bR6*fCop3Z$CG7*`H@MgnZ*!x zw96eMv||-j7XO7llRa!^6QIda*PRd6S*g+eT!$m!ts(*jCi5Ko<%H-)$&CNb{N4PY z2(a4)aEkvZeS7?G8hz1}W;|H_{tw^5ZMDOy9mpO!|Gx)WQQu1;g_q&%7Wqsqw%0X` z#~Lw8(4^yZ5(d0u*<>0o*dRIJD=um&e?89uv0Y7He;XHQ9K%eDtXct(9wWNyLZ>~) zT`@@-o;(e_{`O<2Tw4U+2DPi&ZCBbhn&=d5trW@i`6_q{l2+f-BEND|ne0rd6y93K z7ly@C1ObeH9>c^(z-5Uc8%R^?K+6GB(18-oyiEs^A1FVC1jYiIG0zRLu;zJaI>aYm z{%jt%S1h@8tF;6hyFXe60mc7`$vnzy2*!WaWb`1D#%+bemp^!XJkufW*p$otFFk#R zH!fG%iao<&(Ie|#9x|l7jiqS3Y82Dej8C)(jg?vgqZD%`?n?L=hOD?KNI41?Ll(fK zQjymh3i#lo5AjET{>R5VgQVpdYr<*Cm0?61d`qA~qXW`F7OyRtTP1db%}M&Sg^m&D ztQ20y@`%BJhe9PRy4{1@d*E;p79?w&1!Lhp0YiX9Vi(>Tl!aK7J~|pw=Z7w?yiyW9 zTeiNV5jCO-V~Vz@Rl0f{{N(aDzwpUl$CF1-MtbAYS+yN}O6~9PY{$#IDp8Uz6l~2? z#^tNFOHORwPz0I`vbCSCL+UClmpsdzNr_j^?Fxprv7L3b<10DENPyd5;jUNe&$U7b znAU1C*1IfQJgfn_Dhl!;A;=z7fH#0RB=KOlYzzkJhcx7*t0P=xOjP9(i4ATh1S`AY z`${Bo&YM;*C(NT^fZ@!-ozwgu&T)){7E{=bBFNZpdTWP6Je--43s^i9b?ytz>9SlZ!`uV&xuPE;1(Z8PTV zg@6*h!7ULyA|m0N-m~xPhMMKE8S^#PEiFir1(FE3!i&{9)LSkCxeCOWzt%$a8T!f3~&hVx&TtWv=mU9I;gKA51m~ zKt=HJW!;Xt?3$jKDHw17P@1#Jah;oKELT5ceYo;>F3UgC#N<;Ajv(*PmJPN*kfw(; z3HYzMtQT2Zg+lr^nRY3OS#S1PQ%kuaVD{)}P*cv33UM$KcfW{nJIHD#KR5o1rrMgy zrNZKW=fI0cX81ZQ@5O({hPt?1@>yI7pz@s`{vdwvqaQJzog94lKPI`psc2IC_t&yX zr5MTxg9gPyT^X;d`lSxRMU8YVsM>Qg&RGo$RnKXEr>@HR z(a*R@+^*Zb{`RA~$KgiTt@+~j67=m1BXTaAsF)EJaMtYuOh>L;F01%rKci_58O}lR zT?RwhG48K1kTG&;$d?#GRs$us{bue4{fuEur-rNzH6q==qLqO|Rx>Ur%&)pucN%pc zC713VT^{4@S3Vbys_B46RJSKVV9lv}MQRRcTqnNqCJSR0J$Je++;D3)=$Q@x?uY-S zkALNbXLuzHBOgEcI}4=tlgLP&3&n;dtkqqef_GnA$%H>GJv9agxBWhw$y6Ewv7zMY z^QRBXM98cKPoF%+zw)KOm@hni%0ZmXRNSi|-54Bvi-z=x@PM6L0&1RtVG*e{G^qXF z{=!NA&)ejMTaCkX?e?~QCNdP12;}@Fpls|hWsGm0$Q~OR+j&Igq&Xv)sj+rdya?76 z_xLjy27^q6%Scx$s_evbOr~V<(Z?Ug*MIQUeD?82;kk2v?(s=uI8ui4m_Zu^TKzvL zl9+rCdDbgj@1=)`aZ2fJQ;qy&;*Cj91s*eiT`ZOvkSCFa-26YL0p#XmfIFGQQ{UDB zmu`?m4|B#lfyxN}&bMzz(=!XfQ)<9HF7t+8xD(r01-eR$D4>=N8+j!YOBzH+XJWwf z+zNIMoyi<7HsXCG%rET~tD$v!knQ!_%_di4TW#r7iDjoA_HzH<=U)4GJD!=09W;+O z5zkrHMw0>Yw`>R|wnfP1{=*w`ih3rEjl(z*WtnmejhQSnyAGW0z1x+~2Nx({c!T|{ zySQ+@p5rqKpqWME<8T;teo@;?aYoaK(@wSGeaXNCUw^V`p_QhFWkz~OGy^jWXW|Njt+j z473I@=!4{9{K8RqVaQ-BfIR_($&&Qvu*@`i?&SZ|$4SRb=2~JSr$&qXHq7Tg^K1F$ z8=v5{oBkHflpUB{97sJtZj%?2=< zgG6C$fPYQA?GS!F(?NUy=4F;t zD4UHo-Uir;Y~H3*fjjYVIoQ2ysb43BItF%aaon;nlgEM^sCe&PE^HYh$~nyzR_8Dw zC-yONIaRh_&ca~{XFgbwZYqD2%uOJbv^fzxdW~#*;@+ACmQJ zQcM;g84{#->z#-S0xBudgYyigO6e`vh_iGsONi4f&&WSO$(E3gj3~>4OY_TUB zCD8fgOi{I@8hx{3iU2uPv>5?L7~PKt-srs0$d{PBh^VQIT&gsre-P@_S+XcaS*t*| zQBGJdX^J>`yb?zVK=U5Bb`#YFVMe(2m-`CYH5}AZh_t3}>t%W_{}0slxORz& zhRn_|omU!cCYA(mPkCPtW{`pvFy`rDG-OXkegR$~EOQ`6g&m?ssh>$>fQ*lg$JBl@ z!#tETEOB|tUtT8cH6)a1f)GUdhBJ?$08CWJQf+2$ObI zj$nMvP39#}L#o!@oph$~nJyvsib(>q@^EvOH0AywQW}_YgmsKXk5MtD$gl%1ik$5e zEd&zN8>9DmNo<~wh9R`+FiY$ueBv+qvv-@#P5fBlasf}+OSaYYF5bgpH#)gtAyzIu z;y;*`I8ER$V{PRdN$u~`P_WA|XZ#QI@F5%!1*i$c^*6F!DHW0K-*%P73p zgUWbZ$3NK#1Fz_>L(Gndehn^_o4_s*C0Fv9StnDI zHez?b)V7HTOvY`FA>AKSsbXYZj3}m&y72e@(}_Y5g4YE+VoxdKTi^R`{OG4Y=1HL_0*t?ehmvIP$nce;HT9BH z_H6^vs!3PoaaFx=pzQI;3c`r5nwR(W6K+e6%R!2rjNH=MrqjM>7!f&+Gcl){4Sp)0 zS&@FKuhNL!iBY(hkDmaqz4@3BIPzim^Ja4(L0Ph%k)ah07K!b9TKt!qJ;k7#9kf;| zVN!^4|8AmC1}ldNi>j#IYw{9(WMe}T)9V%!`FqrZGh=%5MAjL5F!a!=#aKa*E;R?Z zpzhZ3m*bfZpT+T@4HULT;bj^2hR=fI@c750qL(OuQt+A&cKm!Dlf8Gnt#o*jA6-=! zcIAww>+!?5AANNBor?)V2ow7xCGvC{QY#GF7|>UyLh|cq1=~LfPYF&!bW`e*C5>Jf zq^9LdNr0)~NRv964uAC3KgRpF+be)^*_#t)b$YI8VM-jgkTfwtO8miji6Xy2OFXrW z6jFOUm;z!ji?*ni13DVEjXGx3x0S*jfsUEAfj-L}$mxtyXp%+a4vKV`h;~iU939lc zt{j`ac<47-nSzP!<*Dr3V9$IkdOf_JJ|N}sAju~$GI$IdnyTSX9Hx&^@@o9NGBRXC zYa-ibssDM9oCjISv&je^K^RiP{2~n|Y*zGfd18$Rm&|~Bt~XxIQ0V;VxdIM^tO}7$ zZrRb4Ok%@arQw>b>(KV$azhG3&#;&ock9lFw?uX<=XX~=pjM>yttzX4d+`5j)gkQ1!-VZiu~hoNq*C{MomEf4;vTatWq4?S7miZKjO#a+d zYg_Ph;a3Q6gyev^l>1L+fuF_ytKTZXP*s$MGc{w+@c#*O3b_@;+iDm`WHp$0po!67 zN?FgMk5Z+cv@gt2j29y)%|n=V(sk*3f$9GwHf3~KP_JMW0xwr}7WCt(tCW$Rse^cIH=9`1_Lmer}?T3 zp)fkfsY8*u8^HMx4#8X_JC;c1Eg+{JQnPL8InMFFytp`1-e`7qd;8XRzl$IL^e4xl zVYvf38_F>ad_zAlvcxFg4#4n+$BY%_iRr1){6V<0RzBR!ijOcb(4+A!Z%kg@;7$z| zmg62?blF#4$c@sRcFcrcJ+K~>+4!YnoQ=*mfa8zj0EYB5?L>E^#G|2Q= zXme-UVxOyGU`~vx`6U~;jFaOg<&d<;Ytgep$${y07jBQXe=x$$Bq|v{Y+X%)$5r#8;sIlO zN{AMJ{K?uNvV_gaV38v^*`o^!w=AL0hd0W?sxd-3K795OzVgs?_^_G|1W;o=dN$S# z=M1tyg}JmXq6R!ThQvNy&m22g z+qTH~p_5n#@(DE>LU8SDHJ&?#D=_5Yx(Hz=0X<8ESsd_ z&^sk(hlzmetq<)DfzEYQkUM|n>QTyz@`WfLD)BN|ReL#{_Bt(#-6X_UB03B+Qz82<0kwdEK3089wivKlY+4*&ePldHP*91<(E7?o= zwA0`GC$AKs`$=VfAXzEHbaA&s-~8%-5Ra^h`VSp0N0z%iV?ht(Qu9lK;9CTsE49 zd$;e8FE1pU4vLp@e;%8Tqfz`%qh|i+F%rH)PqHRj4+rDEThrn9KX{CfCqA6c*DV!N zYDcZ?!U<_9z>=(j@NEUHJJgxP*hPWy~$gw@zhPNZt zty13j;YT0kSHAYAc>lu>J5cNaH5;_=c>HnslTowyQQ*st&^hVv!O)4m5}JdOOH74X zg6n~+^iyiDYL_dd_vqIWPc6G_GRYaJru~4|}(a*e|sp=#@G-d~o`KlSrzepK%oJ#7_ zbXqYc%#`7*We-ESn2Coq{FH4NK?)A8^KL*yOb?FOn=Yg#8j1iWjMJ8)4yTO;$;#e8 zMW+3XfHa&;`jH>3nAesFz=WA}2C6LEg<`}lsOjYnNcSn2U$H@E!|f_IDd%;+IcyP+ z0Yd52?oGBUnF;_7|E~K14KaQ^!bKW%1NyLt) z#_Q7Db!!rtKpf?p9@I(#nH=${kB-|C0^tJvIU7dNw;kC;rIglN(y^GZd6pAO@1hW3 zpjp|Y4NuGv)MhulxMSG_J-08Q5wp$vH=xdaW0bQo6rB7&8i>VJYyi`?;f`<9N^pvk zE*|N{>^#TkE&fAQ;ktv0C-(p`ZnR%`VgB!yRsl1IbEI4{p@?)7+2cm8RU=O>FXr2?e6~h4G#(LS$*}Edv-iShJDYaIps-?j z7}ACh4(0#1+bh2M(PI=0=ayC+pD)|wV1j44Xb--=MQ#by7NZI*2%L&RV$Q+=9ioDz zCod~^aC2s6HWD0BmID3?cqxNXfgsVw?e>cQ;%k4B&#oUI!L&2QQNU2N1gj)-7+Pv& zSxnBT{Gkde#R7tK(g+;Mu3khnh>%GWNU&nT^hKc(N$Jya(`$r0t8>}N;UV-SB_wNZ zI-DgvMyqbJA_%Vo(m*mt^$|_80vZd;_FwYry^~WXyu7jna6911qbK;{Cw~K%ctpM} z1>R4AvdQ!VjK(H>oYgXwW+KM!a##i9WL!ZXUA96w0oczBDhupuh0|FN#F}l&y7|~fD7=*w=Z(?2>$Z-gt*^y9wiOr_z z2g@|CNkvr6!Xz{V29S+2(Twf7BV_y?9F)dG$!Vchgs*gQ9_TT|AR#^2Xh|`@<8y`j zbSI}aG*y(&%Y@1ek^$UqxoE$)gcH%3*e-yU?{xQ;E&ymim%mv7a`T<(|Dh{kx+Hac z52%!LG@%gMGTOaHo!)#)WT=Y5$yl03rbBAxu(KY~IR`~r!7Vl;MVbsNYH_53RF`(x znP|A7uJ|nlSnx!d6UID|tme=OHwI0pq13Y5O1S!X>;=+BsmsxXEF3fccg;-uva|Vc zEW{?DEZeCECMF%Qf_jIw=+#tfr)7rOs}#WGFD!}aM9Pt!9$t{Ia2Rd3c63A-o5TML zswDTpIA;7G$C;SYump}h?FVcK79G*#R#Xg`z`|_CG&82zC7fokT~I3F4M5-p1re^K zm_gu>n-!0|Rc)A&{s+y6AAQ~u7|i=(48deC2jE)D0Vs+sI}@u$K+1h3%>i;bD4^Ju zD4XnXC&do(4h)SFDa`i}Azmh&knDPy|TZ!3^eSO#=aN6buP&3wwQbrns0 zJ?5+<`u{Ob75T^f>k7K1M2Cr|EU#3!1XVgXHpz~pTnT41G%T3qxR6kC7;;3{lOTbb!=EDLFR*2+*F^Ntm12+9t23~X4_5{n3scd8zIC; z{OH-U_{yLE$wPf|WeO8rL4)^cH$lvYoZN2w zAtkn1hhb`eY+=q4=fd)Uk2LzK6kUh3HsJAc=iahhR`k(^-cdBIWBzb{U62;-SN@dU ziWbhRYfwtJq;)+orvg}#ojUDy@6#8Kro*Lj?a9tP4)tffYn8(yz1)ETxx9?cl+I&e zE)#*=^p^^WjOD~ySo~Lt!jl+KDc&`2CkqBUl&3M998sfk`TfFy-CL5t?iSw|G~GW> z5;eTXxmAae0M0^HZmwgBGGag?=DK2_8WWM=)qM1L5F0v6UeC|r7%*E}O>9!p*#_MI+lH&&Vh)nh0Bg*0Qvo^s$2f@T z{e|NZy3$T*7Yfodv&2F9%J>7AI9Z}E3X`5VRAjKjB%b*e>#vo-YNbGfd|LB;DXtY3 z<`gOZgN}6u$SM~gUJ_``OUXAA1{5CqHS-3w9y`` zj_LnVL{OLQF);&BaAn6NGvdUKCcDJoH=*$%F-G}dIAKWL>XV|n?QTqL@xMnPCgs3? z78fE0IUKyj0d!1r?JWMyp8OYa{pkvwAB{DQq)yH zgX#BC1bs0jf(p1f>V}p7hAVNHC0H>Ai=b2tE**vj3e8eH`Y3n&Kg)&M_T1`VXuywY zCQ*u_Z@N;uNX9a;HX>6}iB-9iSF?I$PfE&US4rvz$fTRc#HwtnIfe||QLP)tIjK?AyiYYSwKT`}%<}2um+9y!Q~7AFuI0AG19?$(Y0*zm+!xS zG#wtgq#H}^q1hQ!C=Ve5hC@xrM$=HhP>*JSW;!fJ`<0~SN{;SPGk}%o3J&P5F6t&B zj0Bti9SIB&cXinHfpyF89n~Q^J&#EyO}i6M*AhwGd3#v<_1cIlf& zw{#eF+5X>D*3wST1?yNk>GI+rfkiF@M;bp)YpOhT#7EzYUeK(h3eKfX1R$r#$CY*2 zO)^jfM#iSsrY8oLHJ+MX>4!(zoHbR+!ahQ&$_ZBybo8DGMSx~XvU z`*lu=dLmggwb(QPca<`a>Sf7q#TKB4jo zeZYb^!hRP|lG%bA3?BGF{@+P-$A9rZ;8AQ^{3pYtYh9f?obtNFf+qx(zZrEmZ)fBF_S7vQkt zgywZ6?Tr6uc1vx;)XFx(9X~u_IloM4A*n%fO-vhFdaW%J_ooZGPlZiDl4-%F6%H>W zN{@Q5kX5qOzd|D`pxRln45lu-4~%PK!95e$JIUugLWL2vaGixpJS%=3dq_c1S@3n9`4M&)?OCptU`quFmAR2I1w;R@hRrSrG=F3Kx=sM% zFS@Bs`U2H6SRhd@ldZ*vF<*T0S~VSPs=RW!lX(?zs?ku^srV`6m6uz1JAqOmk9EOj z)4`{^tPOOsWRpWeU*tFag)tWLeCtS>FctOaroD>tbDnT11zsyu{9A?l( z=t;w>4C-$ID`g&#hnj2&?WLmy{OKJr%4o?lXDCI1y@YR8a9vMUIzbo+hO{t}Hd5xI zJB)7+TA)ca@u!5SAvV*_BT8|_1kZlqXgaLhE7C}7=59&PDrilhCV!|rqIeR$6r3K| z86!&^dxz^*++L%#oD2c4E**UgRIzZ=t^NCOpR)tFICb01o_h zo+w=>-T^Ljob1L+wiS$ISb17cX-aonv%v+qsN$ZXZj+ONz8p<&Doi7kRh0i@{s*evdU4C98UT!!Fis2rjISUUMqf@`BRL>%oVRXyOG?|0A0H~59NVaGHz?uJ zOdLA^oM}m#M9ve(QvS`KBn+B7y^zOHVvS89X7RlE-$F~yGUC7Kip-?BzwxzMW#k#h zat(*!k1_Ryu~gSF#FFT!;`j8*ky{8bZN6-ZoY8QPbDH~@J^qi}A-QF+a@!Vdud?GY zC$=+;+2LTZ4BjncoZgKsfDuLo6H?PL8Y-A7Af**R{b!l!b#|aMbFNEpbUXf{EbWO; zk9RB!t?1mI-_Y!=`^o#&!MHr;+Kpg>SDRTH{Pl*V$@T*_v>j7Dlnexf1t?75Yd@C% z^>|ZKoWd!y=;v7Ex(!a2u=o$93+osUb6dZu0j2`t?*DGM+rGdF6U%^R@*#25&Cq!< zY(hKYh{qSk`_yc9>sWTki^jT#96rAG?Qi0vkDnEJrnE}aYF<^2z-ifg7p1|^cGaJJ z2A}v?{_k-{@qdIp*Z{b#Zm@Xjim*9*MA25>PWdsjk6Kwl>jL{Y{@|`>A=Alo?|Jp6IG27f(yxz1IAW7H2-jBOj;yy zLPpn5(o+##euL?#djge8HwrLA&P}_>6<0?*iHKhMxU8U%!KQ-0gd8Vc;h_x^Gcl$Z zgC=0vR&?=&f>K!p%a9kIyl^xfR1jLE4NrOi1J9VV!40qtK^|W+AYFz}Dtzs|M7xYd z$8?bq8&;Yv6ylOe1U%lWaO0QMk*S%RmSBFy^8#H7s5T))M!{`)Z_5AOaBXR9%~bv} z_=!%kvt{XGj}G82P;=Di^H5m{HZ!LPI%5&A)82DTkuY?ed<~yv<~+hlb_phmry5!O z^eF~0XtzY+2@D=LY%tZ{6%0UZ!ctHnY-k0e zh20#GvNhBI09v7CGmW^y3$r5*6inNRRoSK^t%fzDGVQX!*?=HB%N+i11wzT6Q6|O+ z7(qhh28ItrLtTX5%PMg+A8lVDzD9$n<()~K;tGhu^(9erAFVRugpB_RFJ(NT_@76` z=df7$gPW>f!G`I*@W;)gEx-WXn1RK=#RUClF$LL)`)Vaoa#_a=gDv`$vb;K&yY(u5 z+8TW>UK!}E7`A@d@`hg(|I^@YU;_-5Z4TuYL7QrMm|ZKcLkBBrlSeaj)GDGL__#0x zC3^_1*ytfEI0PqXBX;&gPno`D8GTAzFq}!4P*ffATm=J9t|cu+NT%CoNOU;I|DGI@ zU?IAqd>`ZrS@I84{t&MDe}k0}jkiZp0=0e9t^Kp;q+z3v9Y#`lVndYBo_Q+mOYt*$ zq#SnVuv4@OmQq}HeBjM8*UBw6O$1`Buw{;Zd^H!8G=^`~c^`iGVSe=+Uq2oWKXQzg zNX7p{i@_`HOFFTIq%3u`!KaYjBSjh$g;{ zO|CL2IbWH7wVq29?Zs=H+e(MmUwjLyn{#i#q(ZnD(J!S&VUMmu3%up~p4!(bvi-u= zj^BxIK70J|?~yP@w^Xztha5LpD5Ruekp#uh)z+DSct4ibw&+WXGXW}$A##Rm)?r0} z8`E~(&uEWQW;QmKhwuW_8aM0s+mt{1#V_!+?|gHP-gPXxNg|Qi7#uUmMvxfkR_NIR z;0>eOlrmoP)W&ZV3WV;rg=8ZT3qekdc&4G?g~IK%er+V_(M;0A2&=Q(@U#m88fGP) zyBVm+v^eAjw!_0^7ClSTlEyXZp2z3*uLr)#=hk%i%p0HEY5}Q3;-&{>&H%i~=v1`$ zjztGjG6-9VZ){h1&eC&>NI;M&$1LG2@)C6G=s|POYr|-Cg16l#`$IcgczL^=M?dFv z%*`i8(*>hmI1O3RDSE;U2GW`kTsIc;{M<+l+FNoT4cq3N7{p2#rsRcRl9iuRG40rP zwL~@R|3VRq=3xJR_#AC0hTW3;98O>e*jU>Gl%qk9QXWETzbf*2v}jg0|F3f{-53&n z+3>7|&8@|$$Q*Y^UHj4Cl`&XfLc_YK6611*MbvqgAdf*fp$FZ`VCz&b0UU>OpqELX zhXn75zt_p?~N(DZMvRrbL-mY^j@C2_Ps2R;OGsDma#88;z z3^z)FbY^z`&tfe?uyb49646=ldK~g49MMh4wF<(smN7edIAauM!fqok0h!YMd{sWF zF$%}fXPYcyb5JU34RdX8$uXtRS)wYV61Ff>1@;$1VsqMYIvT^a5YqlX{bIt-P;!@q zRbKn83xQDlUkB$#GSxmC9zGovu{N%iPa(G_R>FOLVu1z^lMTf;9WCG>T?o(sU^2%k z7)6C?GT3|$C8BkgwA*lOJnLQHT-bZ~f9(CXa>Hi$WZDOHB~0Tc&rB62ciz^!1^u1@ z5XJAT!~&f(hySP1Wbeo8s(4!DdHfH!`>%5iQB8(44X&SW|20O3N_jqWB;@efk3RYc zU;XCS;)9PqoMKHl+f=gO9z4vkbZt7->B-t+X?-r!k5N!|78P!{egc}R;B5qTg}vEt z(o=efbTPN+kCpUQ&9bPiQ&JhqSV2~gQmL!i8HD5$wP_V)(f#r#9^s+!AYZ3P%E-qV zeVYVt4d6J_7vfI%4`D$8e{E_xjJR(YEdpp_ZJU@-nSlMAYRCUxnQ0^ry<=}Y=oSiB zdMf^d%`QX1YWzgQW|#|vlFn6%i+o}eUU~Wny!P}>2`!k#I=v(QC#3ET01_RpEnYCT z9T>0ppS&17edrq>J-Yonwq0uOb<|+Gz}2;qPH=-6B#pG3(hp_KtnLXXEXzyJ{4%l8 zYmlWT3RXf#3tSY-tS4k(`&PLZm5@C7*#FLtf0%#%t#33~mK;Pt0VAVT?juCp73M-BDN2>FY=~#Dh>8I&ESpeLPGCwRhxFvg_D|8*WVeoeC&#=z?p;4?UQkAJeyU)S9Q4iOXF0+!KF1d zldKo9xks3@7%-8mVka3-$l~eSxr$s;v)r$Irk9%^grJJPhM zRI|kh$doTk*tBsvt>juf8=z#St!Q)oo8-}`Ec$kvJG(#Ro9S|io}yt&thu_*2r^z3 zkQd7pU}jwOtg7G-CH~_z3z9AY!R|mb-IRFYY>61sMFYM52hrB&hWoSQ7&O4|)yC zj!~jC4$>_pbG~onOo`Ayb4D;o_MxWJ9{&^1iT^qAU53K^sN^qR<;>O;ryj_RdNA zuy9PQ6}%mzq7S2#6#t{*KXXNjk0x=FF6DZutNd(EbaBzJSFc;s;m^PEjoV5GF;GY+ zm?r5hv>miuHEAkn$X(}oQ8>rkU$O_8zAm`ZM%8gBMN|XIRy*j+bu}MF^gIgz&L)AalPS8V>pM4Q`i^tbL_>GF3Mhz;cb3|0bERm~Ipv8F`|}+j1cz2>gw2ey zqL_zk%t7$mpZFwxNbk&z6mD+t z1LmIsPsy^jvA*4THUP1(TU_Y7h4vwp4km+d(v=(6J#0|tSYy;-sX;0>Nhp#f&V($! z()Di`5~}8mhei5Ne)&Uu?I?HA(mt+&Ylc0ErDFkM^hOlR~-^Ta<+6IpRIlD^_i;@5<25*jY* zZ$KC^8HnNk(M7C^yHv-*IlXE-umO+x>cIv0Po6x%Z+zhkc>3gN`HoN7SF&Sc{C@n`YWE=!8I5l+Kj;_` z6GGe@*C4|?R-xSUb^OIphr##ahbQ_i0~DQj7=lZ#fM|hugFzqGgC{qctU(uFKmYL+ z@BQ>+V7No{%CZ^b&?_+z6aJ!lkms=E(2f2p(iOR?mrBzaHys$&~&FUuECOCV|rGzVQc&3>S1ve!$QUj?*&}i)uau4 zJHK&GP;`)8LEjLd1BVY*UF*zged)X%JKp{A5An6{eluk$?8swFO%mk0qh~eqyO3Vw zQ_XxYa3C&uZnGrZC)XS)E@_xd7`t!XMiT5Iw^CS|#sYrR6u>3?HSx%F!ouyAx9d}S zW)Pvt7~g$)E~cgqkGHEaMXnc*E_3AbtUKB;S9TF*qjO4qJf?c%rBB9Rc;oZ&y#2?- z_H?{Nne++zK@G|i(}ybX38p_iPk6&OMoQ2|ZcIkmlmNCUO)I+FP&{&Kn*`GtSLVt8 zVGz*ChcL^Mm3eNK)08Yqy_dK@M{d5#i=plR2RguFJKu!pXfUGW}4|W;SZEh+ojlA4y01 zN*%YrJEw5K;k`_d|EB^}=?H$ilN!MFOH$@mf*t%z$A1$VLCD-$I}Fp>&Pt&cq|6C2 zeLL1IlqI|h=&>h5srV%0rMLlKC6*h7khsf4vmCV0Ux-!&%W?XCTA*ViF#)o%D#}jo zrb9;j4}?XUplKEy8MyW*k4p>d?#x8mZnWG0^|&k5+(?roS3^l1;{Dq707Y^4bp(y5 zGecO%gg82CZDwYxZo;r5+dK+V)x0?L<^De++8Sge)aK@uZbeK}_9Hm2oM`7Xh-)(c zrXU7?W+}BBBbY2(YgpcX4myV4n8Auv)(?Qk|KK#4l3gE5NH;{y_WyR7=lH*fQT)fq zrFhI5^S09A&(=zZa+NTZbcKJNq3QUZc2PTZRo`Vnld#I(mc66G`Bb5_=drA+3oHZX zuSritUB-ZdiBi< zUVQbDsqv7&%>P|iblS0x4Up1Hdk5uIy!ITha!)=yp6eirM*J^ZjK=mnrKeUceIsZi**xdT|Ci0Z^5m0wyS<`g67(#tY`OHs`@BPR zj8Ne*uw}c^P=|WDcf9jgD!i*$NSfm+zDen%iJXzH>!y&}JA7us94Xi}B8a2}*tQIc zW=5)-8F%CnO?k({Dta$`1rjazKid?`#nY+M;;ql3g{$0CJ>P z0cTf1^Q3GQo13=W7;a&@lO5d|y3z+3F^ee69M>fBHM*?1pzWFgtgXc7qe7vv8e=YD z7#>#FFbW6mq_L&J)M}uS*UIq}AtDBCuDCcUfaV-7=s+W9Z33|%TC356WRbrD`lTe7 z3+xZJC{QM1LV=$57&v#!?HYzaF?o}I)_Y9uN@)Cg)e`0CB$~Fb0enU*mzk7CdQHt_ENvl*SafG&^iXA)Bt$;jSe1NRBfM)QztaS}u8Diy@Yn8^tLF z8Roi;mPBRH={w~&*k3Vx&fsW+0GcryJd~~*g_-a)dFg>ARBbYUMyCiUJSLK(2+K}@ z0z*2XKlObnrPRWr>^A@H{wGe({36xsuYa+N@9eWihR9|D0WS6I&uAxau%J*fG0QQe zPPUChpu%BzdQb!Fiml>*Sp28Ybo>tmEQCL7x&5C)G-EwRYuC*-mvAVXc%bL&5G-|A z*@K&W3rc_`xQOLD<&zcWQ@53%`ESc~gAUo4ilO2eMEJs*oQg^5pbmG#rxe9|$sUa= zYZvu#wYz;xu2Te?hvm?AgjsHs3{!Im4jlnvnpv@s^o3W4-zSg`xl%7JzuP5HEZp@*qNBRaKE{_j0ngA@TpVJJm=sravQg4AzB z9?x|6#@F+9dqrTHnc+M3S7=f6yn0=v9aoqa%4O&BP)DOK4jgo^f2GM1*;rabdJ-O( zc|^AU^y3)YZ!?y&s>hJye*1FnV1v@eqd2(;LI0HN^e;y6&Y4Kd{)0qu?$2Vh8!7ry6Aw$C&H6 z8-cS0VVu!$(q(gzdNPFOosYuW;s_>s1zJ{D@WN5XYcG5f5C5X!)ZDmmSI`+j^p8fr zFtX#`?O!f?x!>^{#iO|9GaLjqJxHLhO7vjq2BDM>zFIW=#%pW_NI~<3g|2>zDVl1M-28v?l}{y`4ugHd zSMip1GHgKkOcv?xfgG-aZZrT3EdWodCGn1B#wUSQ!7IHe3=`WG8@Uv1`ZT0>@(h8W z2j^7orqrM_jIyyxP%-3TvqRGXJvGwl1Gc0j^)ewDxnTh1DYEln{{UV^UamkvAHG`; zQPiX2*tl}znNCs<(JHAQ57d*ZMm;@!oTri!OLHm`vArrslYWAd8OM|rmDnOWn(G*F zZD+ZE5cg1q#snek9L(fG>7z&k0~cD)WTcZ!@Ro^nD-hbx6Uugk#oRurFY21d#dh?% z$jYpaFY6(Oq0b8&%I(F52VyB z-FA6B(E2D|Ge-hK+PZQxW4D2_gJ>3k-E^(^uZhrs!pXvTtz$CJ{%;&c&1mUIpDrYi zf?c#PQ?Ru`|0C)af-G&VihI0@vxd&%a7>)L03>vgyb03l38h9Z}D;I?(JEn zCz>nhqiQTE@NHyTrmGMf4V}_i8wA`_L%jH~(a{%lp&(|pKL>+*7N*7){~1>nO))Gv z84J*OO>xDDlI_lxPUYniogNO`g!@!_Se8^0BkQa)wc3}-Zrd-ZOq>FnVV7n>XMs9G z`*iA3`)+pd*p(u!Iod`;8l*LkHZviVXi~d#_su5Nu~4l=7!8hoJ;FKur+HUuRKB0|#*YWvE zyv!g56s4X2W5oJ(yF!fQ&G=(zSAS^CzMwZ*9mc-DZkW)85h+N|CI|;#$6fRS4u)+v zOAr7AueaT=z4Zt$vFWh#4%vsyA$S|dTG3F?vw+KLa6qNkBpv@pL!Agw&7jKvkBhG> z%@_#oKYN*{yPBE~>mx1iuv=5~lbmsOP7MXR9}1dUeEsPFpmzA%f0t!eC3|_J2|VDn zD+U!eW?y^ZO}zThctBW&;aE%Er?l1j>~YlKVm6dkOv)(BZ|>pLTJKwVyy65(bktPS zWnB`6Cr+0n@brZFEL)QM6cfN=3Jp5Bm7R_UXT`36il{r46C1;^{eE64ij&OB5TsK#U?>_RJA4=7Pccq9mPZ{sWoXkXhMaNEXb_ znpYN!=}DZtf1NmW5kom6Mb0h5v{PUS5{)Vxuuvh<!gcD8rk1<#DHvqgAG^n|Ab)* z2@Z6g;7(Hh);2edMx(S__t>!^8duT@5gH_6p}13*Kf^0NhSyp#23I4V1r&-U}Px8hv)yR*_z$=s)mK%I_~jbOar{dVOgBT z|H!tNblfUy?)x`f1!%k@{L=iYFxwQN&JO91i6*uYK}@7hWnI z4x|!;^}TL=uvoq^6J9K2X{f|GIY@o&QI3zcCSN zJe;15p(%+;=)5I0$3Zj4^6eF>i@JlIOT$iu1+73({NLUGHso!k!>bRC2h<{_id|F5 zI=2nU!Al zO*O(o-%c)=El>tYLt?_z!|yB$+k)pD(p+7QB|@tlAdiwnk5uw26ge+_W08B1a2X|T7|om#jC!8tH3}`4DaXMlU->lNdZll# zPzWbHOD;tnGcsnqW{_;&*#>xn0Yf(8V1a6zv95j>f>PX)&F(jzjI>{+oQNngglZ>b z>${B5liy@_E~wA&v`cT%>Tt`bNt2DSvYZ$&G}EATGb|aGpSV0he!^|4zzP_skg7?6 zlK=>evL^YD#7;C$d1m?{xt4rdN+s2WFjtTf=1B#s%>1ViYiY5<|^nBOwEqlFMtw7i8S+NgWM5wIbf zEUt^tbWkd$+aBPM#{HJdtO-o?yhYB6?~8jp=m+#|ni~~*B))AP=x~u4jbSEL`cT_O zOT#QSdu9Px`&T<-F`fjTJMmvka8g24N}g$Cj;HK1{P)OiRY3x?A$9~y!2Fg{FiQ-| zzGY)BV%y3O!^T5QpvV@SQ}1Ip=(ZJ_cFg@cqBc0i>c!~lTzC+-yr7O1w4vRsF^V6K z+~%rFu4Dnk;e+37Hxb;{$-x-H$vggw`-b$)WJ#-cM*Qy~&7ES%b4r(HwB*JRVO-de z>w8_^IOys4-%vq3>d;<<7k+;5!Tb2ruYXOA^0Mu_Q7n2f0;Gl(dI>WGN92Uz)${tc zBbtkPJ?nG$s)A!dKt|u$1V?~4=w0fGj>iDQdfUyigQY4tLt!szPBY)CVoxjQi%-8> z#E$X!OD?ZVsIR~E2#;TgaKWM7IK9chJivuCL>*z$W8Zg zh#`{~=4bpDu7cBcbBJ5{gErj>Fszg#$X*t{cPKDbj@O0CNM#>kM$7h>uxX4X z{3^#@igEAMiZg_V!e|e*coQA4J9#X1FXz^l(|hq;Ti$x@)3?aE(y=(!7EWBS9|k zsBy~|Q^j$#^{!@yo>kF27nq!&ykATjVd!N?I5l;0kCh`614d@%mQepXXhgtt!15ku&mUTE=;;|A9-92{h!Li|6(1U!k7*h4;80jtJaiW-{06o~ zZ)c;${VP~V+QxJp3nHm8-7-=`E>c<#ehj}|tZFloNd(|YNtO!^W2GgvK1pE4NXndM z`#x0AC-B@H3Q}I+M4aqPxwOUI6ea*ISCe^xMCLTNFl?}b45=)$OacbvEK7q~E^Wz) zY1%bakrBQtSeanMrOW}5p7mxsHtu-8kT)H-8G*|AafmwBq?6gaVseBI&iY@M_J7(n<(N5Q<3W6uKcu1RMgFR(WPX7;lhx}3G%HMq zC%2Co|J!9?w1>pJHpM)*vUr(`;=dM9nmw5_*Y?(IK#J+Bk=Z2EZ)v$7y#E3I?CW2P z+wB!1PK^#0ku^9{#rYckaB*GEhpx_p0j|C?{B@Ud#hp;CWPse=3SH%vF1>B$I9l}8 z#Nqp|k*>G3+2ViL1-yf+XqhdM&ZYwk;C1K2;zidJVxW94o>+P5LmL0)ryu2`rvVSt zByD0D8w|ZlVad81QP+gs_QaZ|roP>NKv9ea4s*zExU6?#d%?~6tr>K9;w>MFYJo9+ z{Zsxgzz(z981NqYfB1igTNCCz|5qd8BB$R8atKw2myi z+#rZ-!nFFyh`sx9y!Z%pciuLNim_cTZm&kC@~T#S^C^C0_#ughE_V>Kt1$o^_nr4> z$3u%a)l1t6Yc{*E7P6*_DI-SLAO-rvY^QNYxXIq0 z>2SNnB6|F+IZR|wl+0GxGQ<)(ZJ;xwY+5_LnB;`LYhZr!=1KW!>L@vE>dYgO%lPJb z6X)(xaRL_%bW4RQCGCuHJ!n{J(LxNuL zSNs1|R!d8MpF1Jp4H4@6a|R%(HL&m#tCifn9q{^Y`sa+ z6$eJnSi^=D#MpKZ3bV%71iig2UNJx#h;9}IVKQJQh}i=ipO%QP1G~b3uWL$3(Sdsj zz&c{-gCx3*%8hw^XI zTTMc&x%lUDB1e!_4}%~i3O%E7a- zYtceob53t2nf+Pbk({1Q0hpiaVUd*e{amT9*!S)2=R?Bv8m646uO^R!?aL#?o1a-L z9RS#MoLXEBgJIHlbtLiYBU$kuq;(y0C`KXIdIY4C0`Bn1ZQ8#*vHv zobpnQlO5V>`}A(_(glY6IJ)pm!gIe=0ElACurM-(RuK3nF--UU4##S3xuAagm zgJXvJkk`$koRfQ3)`o93)mW=>uerGpFf2SEDo)8{_!=w-3n;Hf%SuV zQ+IYFEBX|0eohD(o_NqqaHN==WLnA259ipNs$HJgvhFDQ*=&zpNh-t%uLj*0eJT$^~!{ZUC3jeq$| zDNE-}-yNxpVsVaa{@_>P>5lk4nr}23t(1DYp)Tc1oPB-3d`bRa_&BPi?Zt8A|BdcK z|EOIS|6%vquMxBW6@WMjHG0NgUE6=(*7!yN* zpZxTv`OWWqhisnis~7@bb>{N_q%Ef6e+$ov?ZP!ju)c=GnfkSf@}-OxU*E3Z;cylB>jNBG1zxfv)p;kHo zw&3M<%C${p&DmbuZZC)u<#N~P-3t{MTFP8J{)5BtAN4EVMyi$qP2UFN!2(So$x>|Q zCOI#qD(oNepD6&0%}K8rPfLlCuW!|5iN>3v<*+Hs|D&1?PhK5yms)io8=hz7rd%WC z_v<}9Ef_TS&tkG*B3M=f0IS2-QKdlx!2ZZQCv zn&h&6&eQBaJIJ{5Kmt0fWf$m*H)YYl9gN-dWP5nR!^XE?{Y<>};wMbfa8w!yMJvxr zM44Nebt}S(+>qp(rCWmDx|)l zYQINGPdZhIBSn!g?C|^pBc@hV4X{pVe-nSn6P!eyAillmFiHe@aF3whCVjTz88mdg zTY??ys*7hTnrErige90M`^>;Z0J5wJJ-L8GY7>kwxeNZpb++F$4edzWmBO-cR4XZU z;y6LuKZn^_#CAvlK#On&k!avn+_WHw!gG#_5tMxj;!GNZ)NUVqNZbI80fPFAS>ABc zaO(}TGs$;k%i0!<%qz~0LvU@sUba#G52HwY28lm01R4v?fCFAkDS~5ISB?I!bE+un ziF^E-z33BmhS4OiCkoWEWL6ADF9Au%U#|nNeTCV=+NMOIu&5mxjS6bAq4tGVx~X&N zNKfaE!9NKoh6xV+6Ot20IsvEc zRf83WP`@xc{hvZ8J_X(o24@OaeBv;<4qFLvo4t}j{&OLAPY~j;X4Ue44>yv~#9PpA z>hM^GY|p-+wRd72LupY*$uGB_9UQ;XT!q+P)YkJU*5Q1JJF;Vf%x0Ly{)(Bh*!GLg z_r#OmmB%#I>2uhmgSnVfcf3S21gy9813doI?l{ObJ^zO{T&Y%9%ZK~(HU=J@lx15> z4^A%%*GW6cAramqF!=<1vP6e$m(}7mKHQKH%GD4k`?l2vuwUX>(dwA{)~CF!ba?bQ z%54tf0<&kc`1TbdjxCC+WUXN+eHD-DDLy{Qqs&~HlBSWV04;Ed5&7U+2rU#cEKv$+2 z@DlsJ5(Lm&xxUKqvv_3nj0)(ls&a|&?Hu=rjLb?^pnTz$iZt2rJss0LuKf7)Vh0j1 zBindSwq;;cTecKF2#Jpq9nyIuw&86>#io z!$lvS*w#)4k8*RpA7O5q1nso%hA%>t7MQX+-YD zO#cC^)JSkDA5$T{{O9$)2!i`#+Gi+a%OwNVZ&wx@b`c+;BreG^5l)g=tXezml0m|a z*;x3u-~6c_CLL^F-E~ljrBgMeT|65Kr20#yEvVEGlzoosr~4b6Q-V%Shn>hq z&1V>bih0-`ylrMphqdkHcI_)!eI$UTOIX1S8@Lf+Waz%Qi{~fM+k@Q{uNg-xf>eFx zX-`j;gz>ylY;XY6a?|ghc`@8=ENlPIg~lbCJHt~OV0|+H?b#t zx3TNM)9oX8ds)cq2t-p_){e+|NmaBPsM%o9QN#ul5|gr}m)PyzleS*4=k8|)RLpAK z>yg~Zc(hl_LfANw#e9GfKzVKvZ3;l+JR22Oqc0_(&PEWrbb(2ZUfr8`9*mEa*uv&h zk1ZRGi|MFAU})fgZNGvZ)ohFy5_h#42pZ&nfEQhOm@X@BD-KBc?KWorBF7<^GUAj< z)2tssDqq-he(pw!4$W`B|2{u_m~_D8g4-Amjw~*n=dOs*1^%U>ZWAzCW~#GVZR_WV zz6_tQDJutZ&S|Nz8tA83C0qf??X%+GGiPHKTj*aqx)nq6A~gVWK#aeUnnq2k zQe_Rp9wr;&?LR!qM~}mrpA#*&2ToROOL9&Y>+`y7s@5<3oCq)3jLd3YcwS9)6x;0- z{`ic-cYJpFhiGLF{KOU-#uJrva1iru_FP88q*KwZK1@tu6+y_fnnpHGScPkNd8vQ- zYTaY3ObLd!Kv| zUw!*^GiyW)9B<#P&QQYbR0~jAL5rwjKElyeBRXTZM;Bc1K1FHOJMWXHl0}5RN3hb) zEw9NH1IcE9?8*H^+yw~1Avxk>yfQd4AxHz^#i~?rFA3&E3y>AJ8pBY}G!w!E9OYWA1O+sW$&aT|3xH_Jf?R+5xCk~4MUN9RJ;7DY!y5vYTK)0fz^;ZMT zl~J=cD~r%%Iz|iyEdn1^Sgp_kH+M;RLnTx(KvH*_z%B$QCKe!JZqyzr>v~l&>D0nO zh%jTJ_y8n4J;RpBZ?p%|mFL(}MbqkC#XHp?O5twX;jcfR5i=A-4FiKAxWge9VZX2$EDP(L!Q0kx) zNB1`LPqDb0b!-ZzO`djL3CrsL_5a@<8+M|r!ne(gfBBg zA9#5b@y>11;RzB=4FqApU8XthvMg(>`o`6M7#eaFU|rl!JCNpM(7n%du+QkMjwqbu zm44q#PY}3`LmQ?qvUmB4j|i1x`o)dHHPTqCMLc<=iZ=U2k`Se(^j*i7)jp5vonQPh z9$#KdI#TRl*Ahx0R=kLB`0u4L0BJ^UBxTQV$QBw>F(}Kprb)UCtPnbEkk;p&DY2Dk zshX3L5|-Mk5otk1CtVf_EbJ;1xz1^*C^9*06unvkU!E7jz87^RGynaQ59+J$zOF&d z6*b3q9TS^c;N>)~#U7Y`6~60r8|2ockQ^w2p{M){s+VNSYeL|6L;!r90ixMcPMfd$ z_2}3OE@;C6U=u(5!$~X*lD)t?CiZNFgJQ-_M>-Kw(Np3rq(v*fq^k{CnU3W3S^WLt_;OWSU)YFflCEfwWv7~ z?|kj5$w(-GJ9GCY>1)O8X5RKBIJ*mP?;`*VLptmAnDJq}wwx zJU9h(8Z*T0Q5Y;j4kzR=wHb|@QW=wfjH6aYN#dsYhQvo~cL5$&{d3v4cgO;nA$Kt- zB>AbD*Gxw8UkXAw`AQ8TLI96jKj@;UC+!5=?#YSkI_=NHg^1k`<9vG-l*CqZQ6DWe@w;`7g498SqnX^5~&y}j@OPyu~YKm zSqX_Py^KeOV3~@lx)~TbT<6Cw^1PI_>`nYzFNaie5UWcrt0zk|Pn78tjU9`m!&rRs ze}|2ThZCiAx};QX(q?9Wv<1TBE1E-?F>AzrhMoh>*oQC-=XPsc%SUe{AXyVTwj|}S z-y!4#kfFd=+pH)$29g8mGSX6SFhkRS=K&;b4%l{FF7=C=_0U6!C}{tP>7O72xJXpp z%@mZUbe3Qu07&A&IwICn`@^p3Q4QN6IEH!6gdO}d)5gsI!^~#I%PMh8b#^kCN-i-c z*R<*C&(U|YW<@a3)yWpl#^PAt%^{|LYUd)S=MdR zVclMFxpSLG-;#jz&~mCNr|O=sZx1ZoUxN5E*bk-T1AEVMhz2JQFzl-6RS&>zS#1

X~qkAyNsD-JO+W{n~n<|_y8xB^(rIuIDs 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 UrlOptions diff --git a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs index d441bae..2463493 100644 --- a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs @@ -9,6 +9,7 @@ using Blazorise.DataGrid; using EventHub.Admin.Organizations; using Microsoft.AspNetCore.Components.Web; using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; namespace EventHub.Admin.Web.Pages { @@ -73,7 +74,9 @@ namespace EventHub.Admin.Web.Pages { EditingOrganizationId = input.Id; Organization = await OrganizationAppService.GetAsync(EditingOrganizationId); - FillProfileImageUrl(Organization.ProfilePictureContent); + + FileEntry = new FileEntry(); + ProfileImageUrl = UrlOptions.Value.AdminApi.EnsureEndsWith('/') + "api/eventhub/admin/organization/cover-image/" + EditingOrganizationId; EditingOrganization = ObjectMapper.Map(Organization); EditOrganizationModal.Show(); @@ -88,7 +91,7 @@ namespace EventHub.Admin.Web.Pages private void OnDeleteCoverImageButtonClicked() { - EditingOrganization.ProfilePictureContent = null; + EditingOrganization.ProfilePictureStreamContent = null; FileEntry = new FileEntry(); ProfileImageUrl = null; IsLoadingProfileImage = false; @@ -110,23 +113,26 @@ namespace EventHub.Admin.Web.Pages IsLoadingProfileImage = true; - using (var stream = new MemoryStream()) + var stream = new MemoryStream(); + await FileEntry.WriteToStreamAsync(stream); + stream.Seek(0, SeekOrigin.Begin); + + EditingOrganization.ProfilePictureStreamContent = new RemoteStreamContent(stream) { - await FileEntry.WriteToStreamAsync(stream); + ContentType = FileEntry.Type, + FileName = FileEntry.Name + }; - stream.Seek(0, SeekOrigin.Begin); - EditingOrganization.ProfilePictureContent = stream.ToArray(); - FillProfileImageUrl(EditingOrganization.ProfilePictureContent); - await InvokeAsync(StateHasChanged); - } + SetProfileImageUrl(FileEntry.Type, stream.ToArray()); + await InvokeAsync(StateHasChanged); } - private void FillProfileImageUrl(byte[] content) + private void SetProfileImageUrl(string contentType, byte[] content) { if (content != null) { - var imageBase64Data = Convert.ToBase64String(content); - var imageDataUrl = $"data:image/png;base64,{imageBase64Data}"; + contentType = string.IsNullOrWhiteSpace(contentType) ? "image/png" : contentType; + var imageDataUrl = $"data:{contentType};base64,{Convert.ToBase64String(content)}"; ProfileImageUrl = imageDataUrl; } } diff --git a/src/EventHub.Application/Events/EventAppService.cs b/src/EventHub.Application/Events/EventAppService.cs index fc5ed66..17bf152 100644 --- a/src/EventHub.Application/Events/EventAppService.cs +++ b/src/EventHub.Application/Events/EventAppService.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using EventHub.Countries; using EventHub.Events.Registrations; using EventHub.Organizations; +using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Authorization; diff --git a/src/EventHub.Application/Organizations/OrganizationAppService.cs b/src/EventHub.Application/Organizations/OrganizationAppService.cs index b5a49c4..f4dc8e7 100644 --- a/src/EventHub.Application/Organizations/OrganizationAppService.cs +++ b/src/EventHub.Application/Organizations/OrganizationAppService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using EventHub.Organizations.Memberships; +using EventHub.Users; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Authorization; From 4545b4363149b7ca5f3946c542d8b5876734d900 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 6 Sep 2021 15:49:19 +0300 Subject: [PATCH 017/159] Admin: Use `IRemoteStreamContent` for event cover image --- .../Events/EventDetailDto.cs | 2 -- .../Events/IEventAppService.cs | 3 +- .../Events/UpdateEventDto.cs | 3 +- .../EventHubApplicationAutoMapperProfile.cs | 3 +- .../Events/EventAppService.cs | 23 +++++++++---- .../Controllers/Events/EventController.cs | 32 +++++++++++++++--- .../EventHubAdminHttpApiHostModule.cs | 2 ++ .../Images/eh-event.png | Bin 0 -> 188095 bytes .../Pages/EventManagement.razor | 3 ++ .../Pages/EventManagement.razor.cs | 32 ++++++++++-------- 10 files changed, 72 insertions(+), 31 deletions(-) create mode 100644 src/EventHub.Admin.HttpApi.Host/Images/eh-event.png diff --git a/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs b/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs index a0bded1..04b0c53 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/EventDetailDto.cs @@ -13,8 +13,6 @@ namespace EventHub.Admin.Events public DateTime EndTime { get; set; } - public byte[] CoverImageContent { get; set; } - public bool IsOnline { get; set; } public string OnlineLink { get; set; } diff --git a/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs b/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs index 12c2a22..da46c3b 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/IEventAppService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.Content; namespace EventHub.Admin.Events { @@ -16,6 +17,6 @@ namespace EventHub.Admin.Events Task> GetCountriesLookupAsync(); - Task GetCoverImageAsync(Guid id); + Task GetCoverImageAsync(Guid id); } } diff --git a/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs b/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs index 1b041bd..e6c9d54 100644 --- a/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs +++ b/src/EventHub.Admin.Application.Contracts/Events/UpdateEventDto.cs @@ -2,6 +2,7 @@ using System.ComponentModel.DataAnnotations; using EventHub.Events; using JetBrains.Annotations; +using Volo.Abp.Content; namespace EventHub.Admin.Events { @@ -24,7 +25,7 @@ namespace EventHub.Admin.Events public DateTime EndTime { get; set; } [CanBeNull] - public byte[] CoverImageContent { get; set; } + public RemoteStreamContent CoverImageStreamContent { get; set; } public bool IsOnline { get; set; } diff --git a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs index e3bc1de..f4a9ca2 100644 --- a/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs +++ b/src/EventHub.Admin.Application/EventHubApplicationAutoMapperProfile.cs @@ -26,8 +26,7 @@ namespace EventHub.Admin CreateMap(); - CreateMap() - .Ignore(x => x.CoverImageContent); + CreateMap(); CreateMap(); diff --git a/src/EventHub.Admin.Application/Events/EventAppService.cs b/src/EventHub.Admin.Application/Events/EventAppService.cs index daf2b16..7544238 100644 --- a/src/EventHub.Admin.Application/Events/EventAppService.cs +++ b/src/EventHub.Admin.Application/Events/EventAppService.cs @@ -9,6 +9,7 @@ using EventHub.Events; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.BlobStoring; +using Volo.Abp.Content; using Volo.Abp.Domain.Repositories; namespace EventHub.Admin.Events @@ -36,9 +37,7 @@ namespace EventHub.Admin.Events public async Task GetAsync(Guid id) { var @event = await _eventRepository.GetAsync(id); - var eventDetailDto = ObjectMapper.Map(@event); - eventDetailDto.CoverImageContent = await GetCoverImageAsync(id); return eventDetailDto; } @@ -69,16 +68,26 @@ namespace EventHub.Admin.Events @event.SetTime(input.StartTime, @event.EndTime); await _eventManager.SetCapacityAsync(@event, input.Capacity); - await SetCoverImageAsync(blobName: id.ToString(), input.CoverImageContent); + if (input.CoverImageStreamContent != null && input.CoverImageStreamContent.ContentLength > 0) + { + await SetCoverImageAsync(blobName: id.ToString(), input.CoverImageStreamContent); + } await _eventRepository.UpdateAsync(@event); } - public async Task GetCoverImageAsync(Guid id) + [AllowAnonymous] + public async Task GetCoverImageAsync(Guid id) { var blobName = id.ToString(); + var coverImageStream = await _eventBlobContainer.GetOrNullAsync(blobName); + + if (coverImageStream == null) + { + return null; + } - return await _eventBlobContainer.GetAllBytesOrNullAsync(blobName); + return new RemoteStreamContent(coverImageStream); } public async Task> GetCountriesLookupAsync() @@ -94,9 +103,9 @@ namespace EventHub.Admin.Events return ObjectMapper.Map, List>(countries); } - private async Task SetCoverImageAsync(string blobName, byte[] coverImageContent, bool overrideExisting = true) + private async Task SetCoverImageAsync(string blobName, IRemoteStreamContent streamContent, bool overrideExisting = true) { - await _eventBlobContainer.SaveAsync(blobName, coverImageContent, overrideExisting); + await _eventBlobContainer.SaveAsync(blobName, streamContent.GetStream(), overrideExisting); } } } diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs index 5cc02a3..0850679 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs @@ -2,10 +2,13 @@ using System.Collections.Generic; using System.Threading.Tasks; using EventHub.Admin.Events; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Content; +using Volo.Abp.VirtualFileSystem; namespace EventHub.Admin.Controllers.Events { @@ -17,10 +20,12 @@ namespace EventHub.Admin.Controllers.Events public class EventController : AbpController, IEventAppService { private readonly IEventAppService _eventAppService; - - public EventController(IEventAppService eventAppService) + private readonly IVirtualFileProvider _virtualFileProvider; + + public EventController(IEventAppService eventAppService, IVirtualFileProvider virtualFileProvider) { _eventAppService = eventAppService; + _virtualFileProvider = virtualFileProvider; } [HttpGet("{id}")] @@ -36,9 +41,28 @@ namespace EventHub.Admin.Controllers.Events } [HttpGet("cover-image/{id}")] - public Task GetCoverImageAsync(Guid id) + [AllowAnonymous] + public async Task GetCoverImageAsync(Guid id) { - return _eventAppService.GetCoverImageAsync(id); + var remoteStreamContent = await _eventAppService.GetCoverImageAsync(id); + if (remoteStreamContent is null) + { + var stream = _virtualFileProvider + .GetFileInfo("/Images/eh-event.png") + .CreateReadStream(); + + remoteStreamContent = new RemoteStreamContent(stream) + { + ContentType = "image/png" + }; + + await stream.FlushAsync(); + } + + Response.Headers.Add("Accept-Ranges", "bytes"); + Response.ContentType = remoteStreamContent.ContentType; + + return remoteStreamContent; } [HttpGet] diff --git a/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs b/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs index b059e42..32df968 100644 --- a/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs +++ b/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using EventHub.Admin.Events; using EventHub.Admin.Organizations; using EventHub.Admin.Utils; using EventHub.EntityFrameworkCore; @@ -69,6 +70,7 @@ namespace EventHub.Admin Configure(options => { options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(UpdateOrganizationDto)); + options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(UpdateEventDto)); }); } diff --git a/src/EventHub.Admin.HttpApi.Host/Images/eh-event.png b/src/EventHub.Admin.HttpApi.Host/Images/eh-event.png new file mode 100644 index 0000000000000000000000000000000000000000..b49547ef8d2c866796a12f92e191630eef68202f GIT binary patch literal 188095 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 Y1ArIDzqRvyjQ{`u07*qoM6N<$f;%vvLjV8( literal 0 HcmV?d00001 diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor b/src/EventHub.Admin.Web/Pages/EventManagement.razor index 64435b2..0576599 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor @@ -3,11 +3,14 @@ @using EventHub.Admin.Permissions @using EventHub.Admin.Events @using EventHub.Events +@using EventHub.Web +@using Microsoft.Extensions.Options @using Volo.Abp.AspNetCore.Components.Notifications @inherits EventHubComponentBase @attribute [Authorize(EventHubPermissions.Events.Default)] @inject IEventAppService EventAppService @inject NavigationManager NavigationManager +@inject IOptions UrlOptions diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs index a0ed087..e026c6b 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs @@ -12,6 +12,7 @@ using System.IO; using System.Globalization; using NUglify.Helpers; using Volo.Abp; +using Volo.Abp.Content; namespace EventHub.Admin.Web.Pages { @@ -92,9 +93,10 @@ namespace EventHub.Admin.Web.Pages { EditingEventId = input.Id; Event = await EventAppService.GetAsync(EditingEventId); - EditingEvent = ObjectMapper.Map(Event); - FillCoverImageUrl(EditingEvent.CoverImageContent); + + FileEntry = new FileEntry(); + CoverImageUrl = UrlOptions.Value.AdminApi.EnsureEndsWith('/') + "api/eventhub/admin/event/cover-image/" + EditingEventId; EditEventModal.Show(); } @@ -143,16 +145,15 @@ namespace EventHub.Admin.Web.Pages await GetEventsAsync(); } - private void FillCoverImageUrl(byte[] content) + private void SetCoverImageUrl(string contentType, byte[] content) { if (content.IsNullOrEmpty()) { return; } - var imageBase64Data = Convert.ToBase64String(content); - var imageDataUrl = $"data:image/png;base64,{imageBase64Data}"; - CoverImageUrl = imageDataUrl; + contentType = string.IsNullOrWhiteSpace(contentType) ? "image/png" : contentType; + CoverImageUrl = $"data:{contentType};base64,{Convert.ToBase64String(content)}"; } private async Task OnCoverImageFileChanged(FileChangedEventArgs e) @@ -163,20 +164,23 @@ namespace EventHub.Admin.Web.Pages return; } - using (var stream = new MemoryStream()) + var stream = new MemoryStream(); + await FileEntry.WriteToStreamAsync(stream); + stream.Seek(0, SeekOrigin.Begin); + + EditingEvent.CoverImageStreamContent = new RemoteStreamContent(stream) { - await FileEntry.WriteToStreamAsync(stream); + ContentType = FileEntry.Type, + FileName = FileEntry.Name + }; - stream.Seek(0, SeekOrigin.Begin); - EditingEvent.CoverImageContent = stream.ToArray(); - FillCoverImageUrl(EditingEvent.CoverImageContent); - await InvokeAsync(StateHasChanged); - } + SetCoverImageUrl(FileEntry.Type, stream.ToArray()); + await InvokeAsync(StateHasChanged); } private void OnDeleteCoverImageButtonClicked() { - EditingEvent.CoverImageContent = null; + EditingEvent.CoverImageStreamContent = null; FileEntry = new FileEntry(); CoverImageUrl = null; } From c4d7038154f5a05fbb8c1b9674d4224116ace988 Mon Sep 17 00:00:00 2001 From: "Gali T. ERDEM" Date: Thu, 16 Sep 2021 13:11:23 +0300 Subject: [PATCH 018/159] readme update for helm charts --- etc/k8s/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/k8s/README.md b/etc/k8s/README.md index 396ba56..a9456cd 100644 --- a/etc/k8s/README.md +++ b/etc/k8s/README.md @@ -2,6 +2,7 @@ * Docker Desktop with Kubernetes enabled * Install [NGINX ingress](https://kubernetes.github.io/ingress-nginx/deploy/) for k8s +* Install [Helm](https://helm.sh/docs/intro/install/) for running helm charts ### How to run? From 83a18a2b8541cc0ab5cf49be3017fd5bff995931 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 7 Oct 2021 12:12:41 +0300 Subject: [PATCH 019/159] Upgrade Eventhub to .NET 6 --- .github/workflows/dotnet.yml | 2 +- global.json | 2 +- .../EventHub.Admin.Application.csproj | 2 +- .../EventHub.Admin.HttpApi.Host.csproj | 8 ++++---- src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj | 2 +- src/EventHub.Admin.Web/EventHub.Admin.Web.csproj | 6 +++--- src/EventHub.Admin.Web/Pages/EventManagement.razor.cs | 1 - src/EventHub.Application/EventHub.Application.csproj | 2 +- .../EventHub.BackgroundServices.csproj | 6 +++--- src/EventHub.DbMigrator/EventHub.DbMigrator.csproj | 4 ++-- src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj | 2 +- src/EventHub.Domain/EventHub.Domain.csproj | 4 ++-- .../EventHub.EntityFrameworkCore.csproj | 2 +- src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj | 8 ++++---- src/EventHub.HttpApi/EventHub.HttpApi.csproj | 2 +- .../EventHub.IdentityServer.csproj | 5 ++--- src/EventHub.Web.Theme/EventHub.Web.Theme.csproj | 4 ++-- src/EventHub.Web/EventHub.Web.csproj | 5 ++--- src/EventHub.Web/Pages/Events/Edit.cshtml.cs | 1 - src/EventHub.Web/Pages/Events/Index.cshtml.cs | 1 - src/EventHub.Web/Pages/Events/New.cshtml.cs | 1 - src/EventHub.Web/Pages/Index.cshtml.cs | 1 - .../EventHub.Application.Tests.csproj | 2 +- test/EventHub.Domain.Tests/EventHub.Domain.Tests.csproj | 2 +- .../EventHub.EntityFrameworkCore.Tests.csproj | 2 +- test/EventHub.TestBase/EventHub.TestBase.csproj | 2 +- 26 files changed, 36 insertions(+), 43 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index ffcf08e..643903c 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -24,7 +24,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v1 with: - dotnet-version: 5.0.x + dotnet-version: 6.0.x - name: Restore dependencies run: dotnet restore - name: Build diff --git a/global.json b/global.json index f49d7df..5eb4fe8 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "5.0.201", + "version": "6.0.100-rc.1.21458.32", "rollForward": "latestFeature" } } diff --git a/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj b/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj index ee4b7b8..4b52b74 100644 --- a/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj +++ b/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub.Admin diff --git a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj index f67494c..91176f3 100644 --- a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj +++ b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub.Admin true EventHub-4681b4fd-151f-4221-84a4-929d86723e4c @@ -12,9 +12,9 @@ - - - + + + diff --git a/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj b/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj index 5fdd465..4b0390e 100644 --- a/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj +++ b/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub.Admin diff --git a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj index 63e7ffa..60c6ad3 100644 --- a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj +++ b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 true @@ -12,8 +12,8 @@ - - + + diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs index a0ed087..ed46b9d 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs @@ -10,7 +10,6 @@ using System.ComponentModel; using Microsoft.AspNetCore.Components.Web; using System.IO; using System.Globalization; -using NUglify.Helpers; using Volo.Abp; namespace EventHub.Admin.Web.Pages diff --git a/src/EventHub.Application/EventHub.Application.csproj b/src/EventHub.Application/EventHub.Application.csproj index 205d64a..7edbc2a 100644 --- a/src/EventHub.Application/EventHub.Application.csproj +++ b/src/EventHub.Application/EventHub.Application.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub diff --git a/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj b/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj index 4301079..0cdbd43 100644 --- a/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj +++ b/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj @@ -4,7 +4,7 @@ Exe - net5.0 + net6.0 EventHub EventHub-4681b4fd-151f-4221-84a4-929d86723e4c @@ -20,12 +20,12 @@ - + - + diff --git a/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj b/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj index 69154bc..1dbb710 100644 --- a/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj +++ b/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj @@ -4,7 +4,7 @@ Exe - net5.0 + net6.0 @@ -23,7 +23,7 @@ - + diff --git a/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj b/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj index 7edc6e8..9976b42 100644 --- a/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj +++ b/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj @@ -24,7 +24,7 @@ - + diff --git a/src/EventHub.Domain/EventHub.Domain.csproj b/src/EventHub.Domain/EventHub.Domain.csproj index 9489e77..33c4d91 100644 --- a/src/EventHub.Domain/EventHub.Domain.csproj +++ b/src/EventHub.Domain/EventHub.Domain.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub true @@ -30,7 +30,7 @@ - + diff --git a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj index f16a661..a256da2 100644 --- a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj +++ b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub diff --git a/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj b/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj index b309ad6..db0ccb4 100644 --- a/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj +++ b/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub true EventHub-4681b4fd-151f-4221-84a4-929d86723e4c @@ -12,9 +12,9 @@ - - - + + + diff --git a/src/EventHub.HttpApi/EventHub.HttpApi.csproj b/src/EventHub.HttpApi/EventHub.HttpApi.csproj index 0399411..73bd9be 100644 --- a/src/EventHub.HttpApi/EventHub.HttpApi.csproj +++ b/src/EventHub.HttpApi/EventHub.HttpApi.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub diff --git a/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj b/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj index dce5b30..e872c55 100644 --- a/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj +++ b/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj @@ -3,13 +3,12 @@ - net5.0 + net6.0 EventHub $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; true true true - true false true EventHub-4681b4fd-151f-4221-84a4-929d86723e4c @@ -38,7 +37,7 @@ - + diff --git a/src/EventHub.Web.Theme/EventHub.Web.Theme.csproj b/src/EventHub.Web.Theme/EventHub.Web.Theme.csproj index 52f5f83..26b89e3 100644 --- a/src/EventHub.Web.Theme/EventHub.Web.Theme.csproj +++ b/src/EventHub.Web.Theme/EventHub.Web.Theme.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 true $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false @@ -35,7 +35,7 @@ - + diff --git a/src/EventHub.Web/EventHub.Web.csproj b/src/EventHub.Web/EventHub.Web.csproj index c367d52..ab8d004 100644 --- a/src/EventHub.Web/EventHub.Web.csproj +++ b/src/EventHub.Web/EventHub.Web.csproj @@ -3,12 +3,11 @@ - net5.0 + net6.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; true true true - true false true EventHub-4681b4fd-151f-4221-84a4-929d86723e4c @@ -23,7 +22,7 @@ - + diff --git a/src/EventHub.Web/Pages/Events/Edit.cshtml.cs b/src/EventHub.Web/Pages/Events/Edit.cshtml.cs index d1f00f5..26758dd 100644 --- a/src/EventHub.Web/Pages/Events/Edit.cshtml.cs +++ b/src/EventHub.Web/Pages/Events/Edit.cshtml.cs @@ -13,7 +13,6 @@ using JetBrains.Annotations; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; -using NUglify.Helpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; using Volo.Abp.Users; diff --git a/src/EventHub.Web/Pages/Events/Index.cshtml.cs b/src/EventHub.Web/Pages/Events/Index.cshtml.cs index d05ac30..9071513 100644 --- a/src/EventHub.Web/Pages/Events/Index.cshtml.cs +++ b/src/EventHub.Web/Pages/Events/Index.cshtml.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Threading.Tasks; using EventHub.Events; using Microsoft.AspNetCore.Mvc; -using NUglify.Helpers; namespace EventHub.Web.Pages.Events { diff --git a/src/EventHub.Web/Pages/Events/New.cshtml.cs b/src/EventHub.Web/Pages/Events/New.cshtml.cs index da2afbf..73140d4 100644 --- a/src/EventHub.Web/Pages/Events/New.cshtml.cs +++ b/src/EventHub.Web/Pages/Events/New.cshtml.cs @@ -13,7 +13,6 @@ using JetBrains.Annotations; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; -using NUglify.Helpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; using Volo.Abp.Users; diff --git a/src/EventHub.Web/Pages/Index.cshtml.cs b/src/EventHub.Web/Pages/Index.cshtml.cs index aa0a7b7..1c272de 100644 --- a/src/EventHub.Web/Pages/Index.cshtml.cs +++ b/src/EventHub.Web/Pages/Index.cshtml.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Threading.Tasks; using EventHub.Events; using Microsoft.AspNetCore.Authentication; -using NUglify.Helpers; namespace EventHub.Web.Pages { diff --git a/test/EventHub.Application.Tests/EventHub.Application.Tests.csproj b/test/EventHub.Application.Tests/EventHub.Application.Tests.csproj index dfe1267..836bc2f 100644 --- a/test/EventHub.Application.Tests/EventHub.Application.Tests.csproj +++ b/test/EventHub.Application.Tests/EventHub.Application.Tests.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub diff --git a/test/EventHub.Domain.Tests/EventHub.Domain.Tests.csproj b/test/EventHub.Domain.Tests/EventHub.Domain.Tests.csproj index 4cc85a6..a94ba99 100644 --- a/test/EventHub.Domain.Tests/EventHub.Domain.Tests.csproj +++ b/test/EventHub.Domain.Tests/EventHub.Domain.Tests.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub diff --git a/test/EventHub.EntityFrameworkCore.Tests/EventHub.EntityFrameworkCore.Tests.csproj b/test/EventHub.EntityFrameworkCore.Tests/EventHub.EntityFrameworkCore.Tests.csproj index db42faf..de85cd9 100644 --- a/test/EventHub.EntityFrameworkCore.Tests/EventHub.EntityFrameworkCore.Tests.csproj +++ b/test/EventHub.EntityFrameworkCore.Tests/EventHub.EntityFrameworkCore.Tests.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub diff --git a/test/EventHub.TestBase/EventHub.TestBase.csproj b/test/EventHub.TestBase/EventHub.TestBase.csproj index 15d316c..c1e03ee 100644 --- a/test/EventHub.TestBase/EventHub.TestBase.csproj +++ b/test/EventHub.TestBase/EventHub.TestBase.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 EventHub From 49040bfdfe63f24cdc9455e0ce521526b610cd72 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 7 Oct 2021 13:07:28 +0300 Subject: [PATCH 020/159] Update Docker images --- src/EventHub.Admin.HttpApi.Host/Dockerfile | 4 ++-- src/EventHub.BackgroundServices/Dockerfile | 4 ++-- src/EventHub.DbMigrator/Dockerfile | 4 ++-- src/EventHub.HttpApi.Host/Dockerfile | 4 ++-- src/EventHub.IdentityServer/Dockerfile | 4 ++-- src/EventHub.Web/Dockerfile | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/EventHub.Admin.HttpApi.Host/Dockerfile b/src/EventHub.Admin.HttpApi.Host/Dockerfile index 7dda575..43a6873 100644 --- a/src/EventHub.Admin.HttpApi.Host/Dockerfile +++ b/src/EventHub.Admin.HttpApi.Host/Dockerfile @@ -1,4 +1,4 @@ - FROM mcr.microsoft.com/dotnet/aspnet:5.0 - COPY bin/Release/net5.0/publish/ app/ + FROM mcr.microsoft.com/dotnet/aspnet:6.0 + COPY bin/Release/net6.0/publish/ app/ WORKDIR /app ENTRYPOINT ["dotnet", "EventHub.Admin.HttpApi.Host.dll"] \ No newline at end of file diff --git a/src/EventHub.BackgroundServices/Dockerfile b/src/EventHub.BackgroundServices/Dockerfile index 9cf1f9e..71f5918 100644 --- a/src/EventHub.BackgroundServices/Dockerfile +++ b/src/EventHub.BackgroundServices/Dockerfile @@ -1,4 +1,4 @@ - FROM mcr.microsoft.com/dotnet/aspnet:5.0 - COPY bin/Release/net5.0/ app/ + FROM mcr.microsoft.com/dotnet/aspnet:6.0 + COPY bin/Release/net6.0/ app/ WORKDIR /app ENTRYPOINT ["dotnet", "EventHub.BackgroundServices.dll"] \ No newline at end of file diff --git a/src/EventHub.DbMigrator/Dockerfile b/src/EventHub.DbMigrator/Dockerfile index 175494f..32deed8 100644 --- a/src/EventHub.DbMigrator/Dockerfile +++ b/src/EventHub.DbMigrator/Dockerfile @@ -1,4 +1,4 @@ - FROM mcr.microsoft.com/dotnet/aspnet:5.0 - COPY bin/Release/net5.0/ app/ + FROM mcr.microsoft.com/dotnet/aspnet:6.0 + COPY bin/Release/net6.0/ app/ WORKDIR /app ENTRYPOINT ["dotnet", "EventHub.DbMigrator.dll"] \ No newline at end of file diff --git a/src/EventHub.HttpApi.Host/Dockerfile b/src/EventHub.HttpApi.Host/Dockerfile index b5bd5d9..0266484 100644 --- a/src/EventHub.HttpApi.Host/Dockerfile +++ b/src/EventHub.HttpApi.Host/Dockerfile @@ -1,4 +1,4 @@ - FROM mcr.microsoft.com/dotnet/aspnet:5.0 - COPY bin/Release/net5.0/publish/ app/ + FROM mcr.microsoft.com/dotnet/aspnet:6.0 + COPY bin/Release/net6.0/publish/ app/ WORKDIR /app ENTRYPOINT ["dotnet", "EventHub.HttpApi.Host.dll"] \ No newline at end of file diff --git a/src/EventHub.IdentityServer/Dockerfile b/src/EventHub.IdentityServer/Dockerfile index 20a0003..729e0f5 100644 --- a/src/EventHub.IdentityServer/Dockerfile +++ b/src/EventHub.IdentityServer/Dockerfile @@ -1,4 +1,4 @@ - FROM mcr.microsoft.com/dotnet/aspnet:5.0 - COPY bin/Release/net5.0/publish/ app/ + FROM mcr.microsoft.com/dotnet/aspnet:6.0 + COPY bin/Release/net6.0/publish/ app/ WORKDIR /app ENTRYPOINT ["dotnet", "EventHub.IdentityServer.dll"] \ No newline at end of file diff --git a/src/EventHub.Web/Dockerfile b/src/EventHub.Web/Dockerfile index ab31322..013dca1 100644 --- a/src/EventHub.Web/Dockerfile +++ b/src/EventHub.Web/Dockerfile @@ -1,4 +1,4 @@ - FROM mcr.microsoft.com/dotnet/aspnet:5.0 - COPY bin/Release/net5.0/publish/ app/ + FROM mcr.microsoft.com/dotnet/aspnet:6.0 + COPY bin/Release/net6.0/publish/ app/ WORKDIR /app ENTRYPOINT ["dotnet", "EventHub.Web.dll"] \ No newline at end of file From 52702c3665444a3225c7ef2698e762f3da9b09f6 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Thu, 7 Oct 2021 13:24:08 +0300 Subject: [PATCH 021/159] fix(EventHub.Admin.HttpApi.Host): error to read the request form while editing organization/event --- .../Controllers/Events/EventController.cs | 2 +- .../Controllers/Organizations/OrganizationController.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs index 0850679..6563214 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs @@ -72,7 +72,7 @@ namespace EventHub.Admin.Controllers.Events } [HttpPut] - public Task UpdateAsync(Guid id, UpdateEventDto input) + public Task UpdateAsync(Guid id, [FromForm] UpdateEventDto input) { return _eventAppService.UpdateAsync(id, input); } diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs index 72f3794..9b1db00 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs @@ -49,7 +49,7 @@ namespace EventHub.Admin.Controllers.Organizations } [HttpPut] - public Task UpdateAsync(Guid id, UpdateOrganizationDto input) + public Task UpdateAsync(Guid id, [FromForm] UpdateOrganizationDto input) { return _organizationAppService.UpdateAsync(id, input); } From 91fcfdd45cf80037100362db2ecf2eb4e01dee1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 7 Oct 2021 13:55:25 +0300 Subject: [PATCH 022/159] Added payment module initial solution. --- modules/payment/.gitattributes | 1 + modules/payment/.gitignore | 259 ++++++++++++++++++ modules/payment/.prettierrc | 5 + modules/payment/NuGet.Config | 6 + modules/payment/Payment.sln | 120 ++++++++ modules/payment/Payment.sln.DotSettings | 23 ++ modules/payment/common.props | 24 ++ modules/payment/docker-compose.migrations.yml | 13 + modules/payment/docker-compose.override.yml | 29 ++ modules/payment/docker-compose.yml | 25 ++ modules/payment/global.json | 6 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 ++ .../Payment.Application.Contracts.csproj | 16 ++ .../PaymentApplicationContractsModule.cs | 16 ++ .../PaymentRemoteServiceConsts.cs | 7 + .../PaymentPermissionDefinitionProvider.cs | 19 ++ .../Permissions/PaymentPermissions.cs | 14 + .../Samples/ISampleAppService.cs | 12 + .../Samples/SampleDto.cs | 7 + .../src/Payment.Application/FodyWeavers.xml | 3 + .../src/Payment.Application/FodyWeavers.xsd | 30 ++ .../Payment.Application.csproj | 17 ++ .../Payment.Application/PaymentAppService.cs | 14 + .../PaymentApplicationAutoMapperProfile.cs | 14 + .../PaymentApplicationModule.cs | 25 ++ .../Samples/SampleAppService.cs | 29 ++ .../src/Payment.Domain.Shared/FodyWeavers.xml | 3 + .../src/Payment.Domain.Shared/FodyWeavers.xsd | 30 ++ .../Localization/Payment/ar.json | 7 + .../Localization/Payment/cs.json | 7 + .../Localization/Payment/de-DE.json | 7 + .../Localization/Payment/en-GB.json | 7 + .../Localization/Payment/en.json | 7 + .../Localization/Payment/es.json | 7 + .../Localization/Payment/fi.json | 7 + .../Localization/Payment/fr.json | 7 + .../Localization/Payment/hi.json | 7 + .../Localization/Payment/hu.json | 7 + .../Localization/Payment/it.json | 7 + .../Localization/Payment/nl.json | 7 + .../Localization/Payment/pl-PL.json | 6 + .../Localization/Payment/pt-BR.json | 6 + .../Localization/Payment/ro-RO.json | 7 + .../Localization/Payment/sk.json | 6 + .../Localization/Payment/sl.json | 6 + .../Localization/Payment/tr.json | 7 + .../Localization/Payment/vi.json | 6 + .../Localization/Payment/zh-Hans.json | 7 + .../Localization/Payment/zh-Hant.json | 6 + .../Localization/PaymentResource.cs | 10 + .../Payment.Domain.Shared.csproj | 24 ++ .../PaymentDomainSharedModule.cs | 37 +++ .../PaymentErrorCodes.cs | 7 + .../src/Payment.Domain/FodyWeavers.xml | 3 + .../src/Payment.Domain/FodyWeavers.xsd | 30 ++ .../src/Payment.Domain/Payment.Domain.csproj | 15 + .../src/Payment.Domain/PaymentDbProperties.cs | 11 + .../src/Payment.Domain/PaymentDomainModule.cs | 14 + .../PaymentSettingDefinitionProvider.cs | 14 + .../Settings/PaymentSettings.cs | 11 + .../EntityFrameworkCore/IPaymentDbContext.cs | 13 + .../EntityFrameworkCore/PaymentDbContext.cs | 27 ++ ...PaymentDbContextModelCreatingExtensions.cs | 34 +++ .../PaymentEntityFrameworkCoreModule.cs | 23 ++ .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 ++ .../Payment.EntityFrameworkCore.csproj | 15 + .../src/Payment.HttpApi/FodyWeavers.xml | 3 + .../src/Payment.HttpApi/FodyWeavers.xsd | 30 ++ .../Payment.HttpApi/Payment.HttpApi.csproj | 15 + .../src/Payment.HttpApi/PaymentController.cs | 13 + .../Payment.HttpApi/PaymentHttpApiModule.cs | 33 +++ .../Samples/SampleController.cs | 34 +++ .../payment/src/Payment.Web/FodyWeavers.xml | 3 + .../payment/src/Payment.Web/FodyWeavers.xsd | 30 ++ .../Menus/PaymentMenuContributor.cs | 24 ++ .../src/Payment.Web/Menus/PaymentMenus.cs | 11 + .../Payment.Web/Pages/Payment/Index.cshtml | 17 ++ .../Payment.Web/Pages/Payment/Index.cshtml.cs | 9 + .../src/Payment.Web/Pages/PaymentPageModel.cs | 16 ++ .../src/Payment.Web/Pages/_ViewImports.cshtml | 4 + .../src/Payment.Web/Payment.Web.csproj | 40 +++ .../PaymentWebAutoMapperProfile.cs | 14 + .../src/Payment.Web/PaymentWebModule.cs | 59 ++++ .../Properties/launchSettings.json | 27 ++ .../wwwroot/client-proxies/Payment-proxy.js | 32 +++ .../Payment.Application.Tests/FodyWeavers.xml | 3 + .../Payment.Application.Tests/FodyWeavers.xsd | 30 ++ .../Payment.Application.Tests.csproj | 16 ++ .../PaymentApplicationTestBase.cs | 10 + .../PaymentApplicationTestModule.cs | 13 + .../Samples/SampleAppService_Tests.cs | 30 ++ .../test/Payment.Domain.Tests/FodyWeavers.xml | 3 + .../test/Payment.Domain.Tests/FodyWeavers.xsd | 30 ++ .../Payment.Domain.Tests.csproj | 15 + .../PaymentDomainTestBase.cs | 10 + .../PaymentDomainTestModule.cs | 17 ++ .../Samples/SampleManager_Tests.cs | 21 ++ .../PaymentEntityFrameworkCoreTestBase.cs | 10 + .../PaymentEntityFrameworkCoreTestModule.cs | 43 +++ .../Samples/SampleRepository_Tests.cs | 12 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 ++ .../Payment.EntityFrameworkCore.Tests.csproj | 18 ++ .../test/Payment.TestBase/FodyWeavers.xml | 3 + .../test/Payment.TestBase/FodyWeavers.xsd | 30 ++ .../Payment.TestBase/Payment.TestBase.csproj | 23 ++ .../PaymentDataSeedContributor.cs | 33 +++ .../test/Payment.TestBase/PaymentTestBase.cs | 60 ++++ .../Payment.TestBase/PaymentTestBaseModule.cs | 42 +++ .../Samples/SampleRepository_Tests.cs | 27 ++ .../Security/FakeCurrentPrincipalAccessor.cs | 43 +++ 113 files changed, 2251 insertions(+) create mode 100644 modules/payment/.gitattributes create mode 100644 modules/payment/.gitignore create mode 100644 modules/payment/.prettierrc create mode 100644 modules/payment/NuGet.Config create mode 100644 modules/payment/Payment.sln create mode 100644 modules/payment/Payment.sln.DotSettings create mode 100644 modules/payment/common.props create mode 100644 modules/payment/docker-compose.migrations.yml create mode 100644 modules/payment/docker-compose.override.yml create mode 100644 modules/payment/docker-compose.yml create mode 100644 modules/payment/global.json create mode 100644 modules/payment/src/Payment.Application.Contracts/FodyWeavers.xml create mode 100644 modules/payment/src/Payment.Application.Contracts/FodyWeavers.xsd create mode 100644 modules/payment/src/Payment.Application.Contracts/Payment.Application.Contracts.csproj create mode 100644 modules/payment/src/Payment.Application.Contracts/PaymentApplicationContractsModule.cs create mode 100644 modules/payment/src/Payment.Application.Contracts/PaymentRemoteServiceConsts.cs create mode 100644 modules/payment/src/Payment.Application.Contracts/Permissions/PaymentPermissionDefinitionProvider.cs create mode 100644 modules/payment/src/Payment.Application.Contracts/Permissions/PaymentPermissions.cs create mode 100644 modules/payment/src/Payment.Application.Contracts/Samples/ISampleAppService.cs create mode 100644 modules/payment/src/Payment.Application.Contracts/Samples/SampleDto.cs create mode 100644 modules/payment/src/Payment.Application/FodyWeavers.xml create mode 100644 modules/payment/src/Payment.Application/FodyWeavers.xsd create mode 100644 modules/payment/src/Payment.Application/Payment.Application.csproj create mode 100644 modules/payment/src/Payment.Application/PaymentAppService.cs create mode 100644 modules/payment/src/Payment.Application/PaymentApplicationAutoMapperProfile.cs create mode 100644 modules/payment/src/Payment.Application/PaymentApplicationModule.cs create mode 100644 modules/payment/src/Payment.Application/Samples/SampleAppService.cs create mode 100644 modules/payment/src/Payment.Domain.Shared/FodyWeavers.xml create mode 100644 modules/payment/src/Payment.Domain.Shared/FodyWeavers.xsd create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/ar.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/cs.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/de-DE.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/en-GB.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/en.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/es.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/fi.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/fr.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/hi.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/hu.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/it.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/nl.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/pl-PL.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/pt-BR.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/ro-RO.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/sk.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/sl.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/tr.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/vi.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/zh-Hans.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/Payment/zh-Hant.json create mode 100644 modules/payment/src/Payment.Domain.Shared/Localization/PaymentResource.cs create mode 100644 modules/payment/src/Payment.Domain.Shared/Payment.Domain.Shared.csproj create mode 100644 modules/payment/src/Payment.Domain.Shared/PaymentDomainSharedModule.cs create mode 100644 modules/payment/src/Payment.Domain.Shared/PaymentErrorCodes.cs create mode 100644 modules/payment/src/Payment.Domain/FodyWeavers.xml create mode 100644 modules/payment/src/Payment.Domain/FodyWeavers.xsd create mode 100644 modules/payment/src/Payment.Domain/Payment.Domain.csproj create mode 100644 modules/payment/src/Payment.Domain/PaymentDbProperties.cs create mode 100644 modules/payment/src/Payment.Domain/PaymentDomainModule.cs create mode 100644 modules/payment/src/Payment.Domain/Settings/PaymentSettingDefinitionProvider.cs create mode 100644 modules/payment/src/Payment.Domain/Settings/PaymentSettings.cs create mode 100644 modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/IPaymentDbContext.cs create mode 100644 modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContext.cs create mode 100644 modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs create mode 100644 modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentEntityFrameworkCoreModule.cs create mode 100644 modules/payment/src/Payment.EntityFrameworkCore/FodyWeavers.xml create mode 100644 modules/payment/src/Payment.EntityFrameworkCore/FodyWeavers.xsd create mode 100644 modules/payment/src/Payment.EntityFrameworkCore/Payment.EntityFrameworkCore.csproj create mode 100644 modules/payment/src/Payment.HttpApi/FodyWeavers.xml create mode 100644 modules/payment/src/Payment.HttpApi/FodyWeavers.xsd create mode 100644 modules/payment/src/Payment.HttpApi/Payment.HttpApi.csproj create mode 100644 modules/payment/src/Payment.HttpApi/PaymentController.cs create mode 100644 modules/payment/src/Payment.HttpApi/PaymentHttpApiModule.cs create mode 100644 modules/payment/src/Payment.HttpApi/Samples/SampleController.cs create mode 100644 modules/payment/src/Payment.Web/FodyWeavers.xml create mode 100644 modules/payment/src/Payment.Web/FodyWeavers.xsd create mode 100644 modules/payment/src/Payment.Web/Menus/PaymentMenuContributor.cs create mode 100644 modules/payment/src/Payment.Web/Menus/PaymentMenus.cs create mode 100644 modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml create mode 100644 modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml.cs create mode 100644 modules/payment/src/Payment.Web/Pages/PaymentPageModel.cs create mode 100644 modules/payment/src/Payment.Web/Pages/_ViewImports.cshtml create mode 100644 modules/payment/src/Payment.Web/Payment.Web.csproj create mode 100644 modules/payment/src/Payment.Web/PaymentWebAutoMapperProfile.cs create mode 100644 modules/payment/src/Payment.Web/PaymentWebModule.cs create mode 100644 modules/payment/src/Payment.Web/Properties/launchSettings.json create mode 100644 modules/payment/src/Payment.Web/wwwroot/client-proxies/Payment-proxy.js create mode 100644 modules/payment/test/Payment.Application.Tests/FodyWeavers.xml create mode 100644 modules/payment/test/Payment.Application.Tests/FodyWeavers.xsd create mode 100644 modules/payment/test/Payment.Application.Tests/Payment.Application.Tests.csproj create mode 100644 modules/payment/test/Payment.Application.Tests/PaymentApplicationTestBase.cs create mode 100644 modules/payment/test/Payment.Application.Tests/PaymentApplicationTestModule.cs create mode 100644 modules/payment/test/Payment.Application.Tests/Samples/SampleAppService_Tests.cs create mode 100644 modules/payment/test/Payment.Domain.Tests/FodyWeavers.xml create mode 100644 modules/payment/test/Payment.Domain.Tests/FodyWeavers.xsd create mode 100644 modules/payment/test/Payment.Domain.Tests/Payment.Domain.Tests.csproj create mode 100644 modules/payment/test/Payment.Domain.Tests/PaymentDomainTestBase.cs create mode 100644 modules/payment/test/Payment.Domain.Tests/PaymentDomainTestModule.cs create mode 100644 modules/payment/test/Payment.Domain.Tests/Samples/SampleManager_Tests.cs create mode 100644 modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/PaymentEntityFrameworkCoreTestBase.cs create mode 100644 modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/PaymentEntityFrameworkCoreTestModule.cs create mode 100644 modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepository_Tests.cs create mode 100644 modules/payment/test/Payment.EntityFrameworkCore.Tests/FodyWeavers.xml create mode 100644 modules/payment/test/Payment.EntityFrameworkCore.Tests/FodyWeavers.xsd create mode 100644 modules/payment/test/Payment.EntityFrameworkCore.Tests/Payment.EntityFrameworkCore.Tests.csproj create mode 100644 modules/payment/test/Payment.TestBase/FodyWeavers.xml create mode 100644 modules/payment/test/Payment.TestBase/FodyWeavers.xsd create mode 100644 modules/payment/test/Payment.TestBase/Payment.TestBase.csproj create mode 100644 modules/payment/test/Payment.TestBase/PaymentDataSeedContributor.cs create mode 100644 modules/payment/test/Payment.TestBase/PaymentTestBase.cs create mode 100644 modules/payment/test/Payment.TestBase/PaymentTestBaseModule.cs create mode 100644 modules/payment/test/Payment.TestBase/Samples/SampleRepository_Tests.cs create mode 100644 modules/payment/test/Payment.TestBase/Security/FakeCurrentPrincipalAccessor.cs diff --git a/modules/payment/.gitattributes b/modules/payment/.gitattributes new file mode 100644 index 0000000..c941e52 --- /dev/null +++ b/modules/payment/.gitattributes @@ -0,0 +1 @@ +**/wwwroot/libs/** linguist-vendored diff --git a/modules/payment/.gitignore b/modules/payment/.gitignore new file mode 100644 index 0000000..7127e17 --- /dev/null +++ b/modules/payment/.gitignore @@ -0,0 +1,259 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# Payment +host/Payment.IdentityServer/Logs/logs.txt +host/Payment.HttpApi.Host/Logs/logs.txt +host/Payment.Web.Host/Logs/logs.txt +host/Payment.Web.Unified/Logs/logs.txt +host/Payment.Blazor.Server.Host/Logs/logs.txt \ No newline at end of file diff --git a/modules/payment/.prettierrc b/modules/payment/.prettierrc new file mode 100644 index 0000000..56af76b --- /dev/null +++ b/modules/payment/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "useTabs": false, + "tabWidth": 4 +} diff --git a/modules/payment/NuGet.Config b/modules/payment/NuGet.Config new file mode 100644 index 0000000..be8a1ec --- /dev/null +++ b/modules/payment/NuGet.Config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/modules/payment/Payment.sln b/modules/payment/Payment.sln new file mode 100644 index 0000000..0806097 --- /dev/null +++ b/modules/payment/Payment.sln @@ -0,0 +1,120 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29001.49 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.Domain.Shared", "src\Payment.Domain.Shared\Payment.Domain.Shared.csproj", "{D64C1577-4929-4B60-939E-96DE1534891A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.Domain", "src\Payment.Domain\Payment.Domain.csproj", "{F2840BC7-0188-4606-9126-DADD0F5ABF7A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.Application.Contracts", "src\Payment.Application.Contracts\Payment.Application.Contracts.csproj", "{BD65D04F-08D5-40C1-8C24-77CA0BACB877}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.Application", "src\Payment.Application\Payment.Application.csproj", "{78040F9E-3501-4A40-82DF-00A597710F35}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{649A3FFA-182F-4E56-9717-E6A9A2BEC545}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.EntityFrameworkCore", "src\Payment.EntityFrameworkCore\Payment.EntityFrameworkCore.csproj", "{0CE86223-D31D-4315-A1F5-87BA3EE1B844}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.HttpApi", "src\Payment.HttpApi\Payment.HttpApi.csproj", "{077AA5F8-8B61-420C-A6B5-0150A66FDB34}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.TestBase", "test\Payment.TestBase\Payment.TestBase.csproj", "{C5BB573D-3030-4BCB-88B7-F6A85C32766C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.EntityFrameworkCore.Tests", "test\Payment.EntityFrameworkCore.Tests\Payment.EntityFrameworkCore.Tests.csproj", "{527F645C-C1FC-406E-8479-81386C8ECF13}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.Domain.Tests", "test\Payment.Domain.Tests\Payment.Domain.Tests.csproj", "{E60895E5-79C4-447D-88B7-85CB5BA336A4}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.Application.Tests", "test\Payment.Application.Tests\Payment.Application.Tests.csproj", "{90CB5DC4-C040-45C7-8900-9688B26405BC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.Web", "src\Payment.Web\Payment.Web.csproj", "{3B7B6317-1B85-4164-8E11-75574F80AE17}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{E46CF089-D16A-4761-BE24-1B1B1D49225A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "www", "www", "{4EF8B98A-E7A3-48A6-9C1F-10DE32001213}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "admin", "admin", "{5B39D229-146D-423E-9E50-91471851824E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{EFBC83DB-A546-471E-99E4-4948C3ADCAA1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "www", "www", "{D3FD0217-A8C7-4BAF-BF77-962F1B055515}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "admin", "admin", "{FC718EF0-43EB-4767-9578-95FA0B3727A5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D64C1577-4929-4B60-939E-96DE1534891A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D64C1577-4929-4B60-939E-96DE1534891A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D64C1577-4929-4B60-939E-96DE1534891A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D64C1577-4929-4B60-939E-96DE1534891A}.Release|Any CPU.Build.0 = Release|Any CPU + {F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Release|Any CPU.Build.0 = Release|Any CPU + {BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Release|Any CPU.Build.0 = Release|Any CPU + {78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.Build.0 = Release|Any CPU + {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.Build.0 = Release|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.Build.0 = Debug|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.ActiveCfg = Release|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.Build.0 = Release|Any CPU + {C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Release|Any CPU.Build.0 = Release|Any CPU + {527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.Build.0 = Debug|Any CPU + {527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.ActiveCfg = Release|Any CPU + {527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.Build.0 = Release|Any CPU + {E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.Build.0 = Release|Any CPU + {90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.Build.0 = Release|Any CPU + {3B7B6317-1B85-4164-8E11-75574F80AE17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B7B6317-1B85-4164-8E11-75574F80AE17}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B7B6317-1B85-4164-8E11-75574F80AE17}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B7B6317-1B85-4164-8E11-75574F80AE17}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E46CF089-D16A-4761-BE24-1B1B1D49225A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {F2840BC7-0188-4606-9126-DADD0F5ABF7A} = {E46CF089-D16A-4761-BE24-1B1B1D49225A} + {D64C1577-4929-4B60-939E-96DE1534891A} = {E46CF089-D16A-4761-BE24-1B1B1D49225A} + {0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {E46CF089-D16A-4761-BE24-1B1B1D49225A} + {4EF8B98A-E7A3-48A6-9C1F-10DE32001213} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {78040F9E-3501-4A40-82DF-00A597710F35} = {4EF8B98A-E7A3-48A6-9C1F-10DE32001213} + {BD65D04F-08D5-40C1-8C24-77CA0BACB877} = {4EF8B98A-E7A3-48A6-9C1F-10DE32001213} + {077AA5F8-8B61-420C-A6B5-0150A66FDB34} = {4EF8B98A-E7A3-48A6-9C1F-10DE32001213} + {3B7B6317-1B85-4164-8E11-75574F80AE17} = {4EF8B98A-E7A3-48A6-9C1F-10DE32001213} + {5B39D229-146D-423E-9E50-91471851824E} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {EFBC83DB-A546-471E-99E4-4948C3ADCAA1} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + {C5BB573D-3030-4BCB-88B7-F6A85C32766C} = {EFBC83DB-A546-471E-99E4-4948C3ADCAA1} + {527F645C-C1FC-406E-8479-81386C8ECF13} = {EFBC83DB-A546-471E-99E4-4948C3ADCAA1} + {E60895E5-79C4-447D-88B7-85CB5BA336A4} = {EFBC83DB-A546-471E-99E4-4948C3ADCAA1} + {D3FD0217-A8C7-4BAF-BF77-962F1B055515} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + {90CB5DC4-C040-45C7-8900-9688B26405BC} = {D3FD0217-A8C7-4BAF-BF77-962F1B055515} + {FC718EF0-43EB-4767-9578-95FA0B3727A5} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6AAFA1C6-603E-13FA-45E5-7910AA9F661D} + EndGlobalSection +EndGlobal diff --git a/modules/payment/Payment.sln.DotSettings b/modules/payment/Payment.sln.DotSettings new file mode 100644 index 0000000..cb0b2c9 --- /dev/null +++ b/modules/payment/Payment.sln.DotSettings @@ -0,0 +1,23 @@ + + True + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + Required + Required + Required + Required + False + True + False + False + True + False + False + SQL + \ No newline at end of file diff --git a/modules/payment/common.props b/modules/payment/common.props new file mode 100644 index 0000000..87cf88d --- /dev/null +++ b/modules/payment/common.props @@ -0,0 +1,24 @@ + + + latest + 0.1.0 + $(NoWarn);CS1591 + module + + + + + + All + runtime; build; native; contentfiles; analyzers + + + + + + + $(NoWarn);0436 + + + + \ No newline at end of file diff --git a/modules/payment/docker-compose.migrations.yml b/modules/payment/docker-compose.migrations.yml new file mode 100644 index 0000000..e9b751f --- /dev/null +++ b/modules/payment/docker-compose.migrations.yml @@ -0,0 +1,13 @@ +version: '3.4' + +services: + migrations: + build: + context: ../../ + dockerfile: templates/service/database/Dockerfile + depends_on: + - sqlserver + environment: + - IdentityServer_DB=Payment_Identity + - Payment_DB=Payment_ModuleDb + - SA_PASSWORD=yourStrong(!)Password diff --git a/modules/payment/docker-compose.override.yml b/modules/payment/docker-compose.override.yml new file mode 100644 index 0000000..cea9b3a --- /dev/null +++ b/modules/payment/docker-compose.override.yml @@ -0,0 +1,29 @@ +version: '3.4' + +services: + sqlserver: + environment: + - SA_PASSWORD=yourStrong(!)Password + - ACCEPT_EULA=Y + ports: + - "51599:1433" + + identity-server: + environment: + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionStrings__Default=Server=sqlserver;Database=Payment_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false + - ConnectionStrings__SqlServerCache=Server=sqlserver;Database=Payment_Cache;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false + ports: + - "51600:80" + + payment: + environment: + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionStrings__Default=Server=sqlserver;Database=Payment_ModuleDb;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false + - ConnectionStrings__AbpSettingManagement=Server=sqlserver;Database=Payment_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false + - ConnectionStrings__AbpPermissionManagement=Server=sqlserver;Database=Payment_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false + - ConnectionStrings__AbpAuditLogging=Server=sqlserver;Database=Payment_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false + - ConnectionStrings__SqlServerCache=Server=sqlserver;Database=Payment_Cache;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false + - AuthServer__Authority=http://identity-server + ports: + - "51601:80" \ No newline at end of file diff --git a/modules/payment/docker-compose.yml b/modules/payment/docker-compose.yml new file mode 100644 index 0000000..cbf2052 --- /dev/null +++ b/modules/payment/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3.4' + +services: + sqlserver: + image: mcr.microsoft.com/mssql/server + volumes: + - dbdata:/var/opt/mssql + + identity-server: + build: + context: ../../ + dockerfile: templates/service/host/IdentityServerHost/Dockerfile + depends_on: + - sqlserver + + payment: + build: + context: ../../ + dockerfile: templates/service/host/Payment.Host/Dockerfile + depends_on: + - sqlserver + - identity-server + +volumes: + dbdata: \ No newline at end of file diff --git a/modules/payment/global.json b/modules/payment/global.json new file mode 100644 index 0000000..2b7d34d --- /dev/null +++ b/modules/payment/global.json @@ -0,0 +1,6 @@ +{ + "sdk": { + "version": "6.0", + "rollForward": "latestFeature" + } +} diff --git a/modules/payment/src/Payment.Application.Contracts/FodyWeavers.xml b/modules/payment/src/Payment.Application.Contracts/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Application.Contracts/FodyWeavers.xsd b/modules/payment/src/Payment.Application.Contracts/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Application.Contracts/Payment.Application.Contracts.csproj b/modules/payment/src/Payment.Application.Contracts/Payment.Application.Contracts.csproj new file mode 100644 index 0000000..432654e --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/Payment.Application.Contracts.csproj @@ -0,0 +1,16 @@ + + + + + + netstandard2.0 + Payment + + + + + + + + + diff --git a/modules/payment/src/Payment.Application.Contracts/PaymentApplicationContractsModule.cs b/modules/payment/src/Payment.Application.Contracts/PaymentApplicationContractsModule.cs new file mode 100644 index 0000000..5db0482 --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/PaymentApplicationContractsModule.cs @@ -0,0 +1,16 @@ +using Volo.Abp.Application; +using Volo.Abp.Modularity; +using Volo.Abp.Authorization; + +namespace Payment +{ + [DependsOn( + typeof(PaymentDomainSharedModule), + typeof(AbpDddApplicationContractsModule), + typeof(AbpAuthorizationModule) + )] + public class PaymentApplicationContractsModule : AbpModule + { + + } +} diff --git a/modules/payment/src/Payment.Application.Contracts/PaymentRemoteServiceConsts.cs b/modules/payment/src/Payment.Application.Contracts/PaymentRemoteServiceConsts.cs new file mode 100644 index 0000000..fc99a3c --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/PaymentRemoteServiceConsts.cs @@ -0,0 +1,7 @@ +namespace Payment +{ + public class PaymentRemoteServiceConsts + { + public const string RemoteServiceName = "Payment"; + } +} diff --git a/modules/payment/src/Payment.Application.Contracts/Permissions/PaymentPermissionDefinitionProvider.cs b/modules/payment/src/Payment.Application.Contracts/Permissions/PaymentPermissionDefinitionProvider.cs new file mode 100644 index 0000000..a028087 --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/Permissions/PaymentPermissionDefinitionProvider.cs @@ -0,0 +1,19 @@ +using Payment.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + +namespace Payment.Permissions +{ + public class PaymentPermissionDefinitionProvider : PermissionDefinitionProvider + { + public override void Define(IPermissionDefinitionContext context) + { + var myGroup = context.AddGroup(PaymentPermissions.GroupName, L("Permission:Payment")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Application.Contracts/Permissions/PaymentPermissions.cs b/modules/payment/src/Payment.Application.Contracts/Permissions/PaymentPermissions.cs new file mode 100644 index 0000000..4d9f6b7 --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/Permissions/PaymentPermissions.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Reflection; + +namespace Payment.Permissions +{ + public class PaymentPermissions + { + public const string GroupName = "Payment"; + + public static string[] GetAll() + { + return ReflectionHelper.GetPublicConstantsRecursively(typeof(PaymentPermissions)); + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Application.Contracts/Samples/ISampleAppService.cs b/modules/payment/src/Payment.Application.Contracts/Samples/ISampleAppService.cs new file mode 100644 index 0000000..7b04320 --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/Samples/ISampleAppService.cs @@ -0,0 +1,12 @@ +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace Payment.Samples +{ + public interface ISampleAppService : IApplicationService + { + Task GetAsync(); + + Task GetAuthorizedAsync(); + } +} diff --git a/modules/payment/src/Payment.Application.Contracts/Samples/SampleDto.cs b/modules/payment/src/Payment.Application.Contracts/Samples/SampleDto.cs new file mode 100644 index 0000000..d709acf --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/Samples/SampleDto.cs @@ -0,0 +1,7 @@ +namespace Payment.Samples +{ + public class SampleDto + { + public int Value { get; set; } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Application/FodyWeavers.xml b/modules/payment/src/Payment.Application/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/src/Payment.Application/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Application/FodyWeavers.xsd b/modules/payment/src/Payment.Application/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/src/Payment.Application/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Application/Payment.Application.csproj b/modules/payment/src/Payment.Application/Payment.Application.csproj new file mode 100644 index 0000000..dc0b6f5 --- /dev/null +++ b/modules/payment/src/Payment.Application/Payment.Application.csproj @@ -0,0 +1,17 @@ + + + + + + netstandard2.0 + Payment + + + + + + + + + + diff --git a/modules/payment/src/Payment.Application/PaymentAppService.cs b/modules/payment/src/Payment.Application/PaymentAppService.cs new file mode 100644 index 0000000..45ac236 --- /dev/null +++ b/modules/payment/src/Payment.Application/PaymentAppService.cs @@ -0,0 +1,14 @@ +using Payment.Localization; +using Volo.Abp.Application.Services; + +namespace Payment +{ + public abstract class PaymentAppService : ApplicationService + { + protected PaymentAppService() + { + LocalizationResource = typeof(PaymentResource); + ObjectMapperContext = typeof(PaymentApplicationModule); + } + } +} diff --git a/modules/payment/src/Payment.Application/PaymentApplicationAutoMapperProfile.cs b/modules/payment/src/Payment.Application/PaymentApplicationAutoMapperProfile.cs new file mode 100644 index 0000000..a15ddeb --- /dev/null +++ b/modules/payment/src/Payment.Application/PaymentApplicationAutoMapperProfile.cs @@ -0,0 +1,14 @@ +using AutoMapper; + +namespace Payment +{ + public class PaymentApplicationAutoMapperProfile : Profile + { + public PaymentApplicationAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Application/PaymentApplicationModule.cs b/modules/payment/src/Payment.Application/PaymentApplicationModule.cs new file mode 100644 index 0000000..309ee80 --- /dev/null +++ b/modules/payment/src/Payment.Application/PaymentApplicationModule.cs @@ -0,0 +1,25 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AutoMapper; +using Volo.Abp.Modularity; +using Volo.Abp.Application; + +namespace Payment +{ + [DependsOn( + typeof(PaymentDomainModule), + typeof(PaymentApplicationContractsModule), + typeof(AbpDddApplicationModule), + typeof(AbpAutoMapperModule) + )] + public class PaymentApplicationModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddMaps(validate: true); + }); + } + } +} diff --git a/modules/payment/src/Payment.Application/Samples/SampleAppService.cs b/modules/payment/src/Payment.Application/Samples/SampleAppService.cs new file mode 100644 index 0000000..a59a125 --- /dev/null +++ b/modules/payment/src/Payment.Application/Samples/SampleAppService.cs @@ -0,0 +1,29 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; + +namespace Payment.Samples +{ + public class SampleAppService : PaymentAppService, ISampleAppService + { + public Task GetAsync() + { + return Task.FromResult( + new SampleDto + { + Value = 42 + } + ); + } + + [Authorize] + public Task GetAuthorizedAsync() + { + return Task.FromResult( + new SampleDto + { + Value = 42 + } + ); + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/FodyWeavers.xml b/modules/payment/src/Payment.Domain.Shared/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/FodyWeavers.xsd b/modules/payment/src/Payment.Domain.Shared/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/ar.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/ar.json new file mode 100644 index 0000000..33f037e --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/ar.json @@ -0,0 +1,7 @@ +{ + "culture": "ar", + "texts": { + "MyAccount": "إدارة ملفى", + "SamplePageMessage": "صفحة نموذجية للوحدة النمطية Payment" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/cs.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/cs.json new file mode 100644 index 0000000..fa44b2f --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/cs.json @@ -0,0 +1,7 @@ +{ + "culture": "cs", + "texts": { + "MyAccount": "Spravovat profil", + "SamplePageMessage": "Ukázková stránka pro modul Payment" + } +} diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/de-DE.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/de-DE.json new file mode 100644 index 0000000..cd06930 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/de-DE.json @@ -0,0 +1,7 @@ +{ + "culture": "de-DE", + "texts": { + "MyAccount": "Mein Konto", + "SamplePageMessage": "Eine Beispielseite für das Modul PaymentModul" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/en-GB.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/en-GB.json new file mode 100644 index 0000000..1c93a89 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/en-GB.json @@ -0,0 +1,7 @@ +{ + "culture": "en-GB", + "texts": { + "MyAccount": "My account", + "SamplePageMessage": "A sample page for the Payment module" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/en.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/en.json new file mode 100644 index 0000000..0838f51 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/en.json @@ -0,0 +1,7 @@ +{ + "culture": "en", + "texts": { + "MyAccount": "My account", + "SamplePageMessage": "A sample page for the Payment module" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/es.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/es.json new file mode 100644 index 0000000..c126788 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/es.json @@ -0,0 +1,7 @@ +{ + "culture": "es", + "texts": { + "MyAccount": "Mi cuenta", + "SamplePageMessage": "Una página de ejemplo para el módulo Payment " + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/fi.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/fi.json new file mode 100644 index 0000000..1a52ba1 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/fi.json @@ -0,0 +1,7 @@ +{ + "culture": "fi", + "texts": { + "MyAccount": "Tilini", + "SamplePageMessage": "Esimerkkisivu Payment-moduulille" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/fr.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/fr.json new file mode 100644 index 0000000..3e3b5e2 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/fr.json @@ -0,0 +1,7 @@ +{ + "culture": "fr", + "texts": { + "MyAccount": "Mon compte", + "SamplePageMessage": "Exemple de page pour le module Payment" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/hi.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/hi.json new file mode 100644 index 0000000..29d55be --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/hi.json @@ -0,0 +1,7 @@ +{ + "culture": "hi", + "texts": { + "MyAccount": "मेरा खाता", + "SamplePageMessage": "Payment मॉड्यूल के लिए एक नमूना पृष्ठ" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/hu.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/hu.json new file mode 100644 index 0000000..768db7a --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/hu.json @@ -0,0 +1,7 @@ +{ + "culture": "hu", + "texts": { + "MyAccount": "A fiókom", + "SamplePageMessage": "Mintaoldal a Payment modulhoz" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/it.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/it.json new file mode 100644 index 0000000..20626c6 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/it.json @@ -0,0 +1,7 @@ +{ + "culture": "it", + "texts": { + "MyAccount": "Il mio conto", + "SamplePageMessage": "Una pagina di esempio per il modulo Payment" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/nl.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/nl.json new file mode 100644 index 0000000..14526f1 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/nl.json @@ -0,0 +1,7 @@ +{ + "culture": "nl", + "texts": { + "MyAccount": "Mijn rekening", + "SamplePageMessage": "Een voorbeeldpagina voor de Payment module" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/pl-PL.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/pl-PL.json new file mode 100644 index 0000000..3ea7b19 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/pl-PL.json @@ -0,0 +1,6 @@ +{ + "culture": "pl-PL", + "texts": { + + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/pt-BR.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/pt-BR.json new file mode 100644 index 0000000..6d746df --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/pt-BR.json @@ -0,0 +1,6 @@ +{ + "culture": "pt-BR", + "texts": { + + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/ro-RO.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/ro-RO.json new file mode 100644 index 0000000..6891d68 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/ro-RO.json @@ -0,0 +1,7 @@ +{ + "culture": "ro-RO", + "texts": { + "MyAccount": "Contul meu", + "SamplePageMessage": "Un exemplu de pagină pentru modululul Payment" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/sk.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/sk.json new file mode 100644 index 0000000..161a16a --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/sk.json @@ -0,0 +1,6 @@ +{ + "culture": "sk", + "texts": { + "SamplePageMessage": "Ukážka stránky pre modul Payment" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/sl.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/sl.json new file mode 100644 index 0000000..229c449 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/sl.json @@ -0,0 +1,6 @@ +{ + "culture": "sl", + "texts": { + "MyAccount": "Moj račun" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/tr.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/tr.json new file mode 100644 index 0000000..821d36b --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/tr.json @@ -0,0 +1,7 @@ +{ + "culture": "tr", + "texts": { + "MyAccount": "Hesabım", + "SamplePageMessage": "Payment modulünden örnek bir sayfa" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/vi.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/vi.json new file mode 100644 index 0000000..d8eb5f3 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/vi.json @@ -0,0 +1,6 @@ +{ + "culture": "vi", + "texts": { + + } +} diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/zh-Hans.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/zh-Hans.json new file mode 100644 index 0000000..83bf721 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "culture": "zh-Hans", + "texts": { + "MyAccount": "我的账户", + "SamplePageMessage": "Payment模块的示例页面" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/Payment/zh-Hant.json b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/zh-Hant.json new file mode 100644 index 0000000..699d31e --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/Payment/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "culture": "zh-Hant", + "texts": { + "MyAccount": "我的賬戶" + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/Localization/PaymentResource.cs b/modules/payment/src/Payment.Domain.Shared/Localization/PaymentResource.cs new file mode 100644 index 0000000..2409063 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Localization/PaymentResource.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Localization; + +namespace Payment.Localization +{ + [LocalizationResourceName("Payment")] + public class PaymentResource + { + + } +} diff --git a/modules/payment/src/Payment.Domain.Shared/Payment.Domain.Shared.csproj b/modules/payment/src/Payment.Domain.Shared/Payment.Domain.Shared.csproj new file mode 100644 index 0000000..72dbe45 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/Payment.Domain.Shared.csproj @@ -0,0 +1,24 @@ + + + + + + netstandard2.0 + Payment + true + + + + + + + + + + + + + + + + diff --git a/modules/payment/src/Payment.Domain.Shared/PaymentDomainSharedModule.cs b/modules/payment/src/Payment.Domain.Shared/PaymentDomainSharedModule.cs new file mode 100644 index 0000000..36e5b8d --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/PaymentDomainSharedModule.cs @@ -0,0 +1,37 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Localization; +using Payment.Localization; +using Volo.Abp.Localization.ExceptionHandling; +using Volo.Abp.Validation; +using Volo.Abp.Validation.Localization; +using Volo.Abp.VirtualFileSystem; + +namespace Payment +{ + [DependsOn( + typeof(AbpValidationModule) + )] + public class PaymentDomainSharedModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddBaseTypes(typeof(AbpValidationResource)) + .AddVirtualJson("/Localization/Payment"); + }); + + Configure(options => + { + options.MapCodeNamespace("Payment", typeof(PaymentResource)); + }); + } + } +} diff --git a/modules/payment/src/Payment.Domain.Shared/PaymentErrorCodes.cs b/modules/payment/src/Payment.Domain.Shared/PaymentErrorCodes.cs new file mode 100644 index 0000000..24dff63 --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/PaymentErrorCodes.cs @@ -0,0 +1,7 @@ +namespace Payment +{ + public static class PaymentErrorCodes + { + //Add your business exception error codes here... + } +} diff --git a/modules/payment/src/Payment.Domain/FodyWeavers.xml b/modules/payment/src/Payment.Domain/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/src/Payment.Domain/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain/FodyWeavers.xsd b/modules/payment/src/Payment.Domain/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/src/Payment.Domain/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain/Payment.Domain.csproj b/modules/payment/src/Payment.Domain/Payment.Domain.csproj new file mode 100644 index 0000000..80f4d14 --- /dev/null +++ b/modules/payment/src/Payment.Domain/Payment.Domain.csproj @@ -0,0 +1,15 @@ + + + + + + netstandard2.0 + Payment + + + + + + + + diff --git a/modules/payment/src/Payment.Domain/PaymentDbProperties.cs b/modules/payment/src/Payment.Domain/PaymentDbProperties.cs new file mode 100644 index 0000000..258bc24 --- /dev/null +++ b/modules/payment/src/Payment.Domain/PaymentDbProperties.cs @@ -0,0 +1,11 @@ +namespace Payment +{ + public static class PaymentDbProperties + { + public static string DbTablePrefix { get; set; } = "Payment"; + + public static string DbSchema { get; set; } = null; + + public const string ConnectionStringName = "Payment"; + } +} diff --git a/modules/payment/src/Payment.Domain/PaymentDomainModule.cs b/modules/payment/src/Payment.Domain/PaymentDomainModule.cs new file mode 100644 index 0000000..b5a2a41 --- /dev/null +++ b/modules/payment/src/Payment.Domain/PaymentDomainModule.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Domain; +using Volo.Abp.Modularity; + +namespace Payment +{ + [DependsOn( + typeof(AbpDddDomainModule), + typeof(PaymentDomainSharedModule) + )] + public class PaymentDomainModule : AbpModule + { + + } +} diff --git a/modules/payment/src/Payment.Domain/Settings/PaymentSettingDefinitionProvider.cs b/modules/payment/src/Payment.Domain/Settings/PaymentSettingDefinitionProvider.cs new file mode 100644 index 0000000..de483ad --- /dev/null +++ b/modules/payment/src/Payment.Domain/Settings/PaymentSettingDefinitionProvider.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Settings; + +namespace Payment.Settings +{ + public class PaymentSettingDefinitionProvider : SettingDefinitionProvider + { + public override void Define(ISettingDefinitionContext context) + { + /* Define module settings here. + * Use names from PaymentSettings class. + */ + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain/Settings/PaymentSettings.cs b/modules/payment/src/Payment.Domain/Settings/PaymentSettings.cs new file mode 100644 index 0000000..51b216b --- /dev/null +++ b/modules/payment/src/Payment.Domain/Settings/PaymentSettings.cs @@ -0,0 +1,11 @@ +namespace Payment.Settings +{ + public static class PaymentSettings + { + public const string GroupName = "Payment"; + + /* Add constants for setting names. Example: + * public const string MySettingName = GroupName + ".MySettingName"; + */ + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/IPaymentDbContext.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/IPaymentDbContext.cs new file mode 100644 index 0000000..3259838 --- /dev/null +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/IPaymentDbContext.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Data; +using Volo.Abp.EntityFrameworkCore; + +namespace Payment.EntityFrameworkCore +{ + [ConnectionStringName(PaymentDbProperties.ConnectionStringName)] + public interface IPaymentDbContext : IEfCoreDbContext + { + /* Add DbSet for each Aggregate Root here. Example: + * DbSet Questions { get; } + */ + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContext.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContext.cs new file mode 100644 index 0000000..aa87890 --- /dev/null +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContext.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Data; +using Volo.Abp.EntityFrameworkCore; + +namespace Payment.EntityFrameworkCore +{ + [ConnectionStringName(PaymentDbProperties.ConnectionStringName)] + public class PaymentDbContext : AbpDbContext, IPaymentDbContext + { + /* Add DbSet for each Aggregate Root here. Example: + * public DbSet Questions { get; set; } + */ + + public PaymentDbContext(DbContextOptions options) + : base(options) + { + + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + + builder.ConfigurePayment(); + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs new file mode 100644 index 0000000..18c6740 --- /dev/null +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs @@ -0,0 +1,34 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp; + +namespace Payment.EntityFrameworkCore +{ + public static class PaymentDbContextModelCreatingExtensions + { + public static void ConfigurePayment( + this ModelBuilder builder) + { + Check.NotNull(builder, nameof(builder)); + + /* Configure all entities here. Example: + + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(PaymentDbProperties.DbTablePrefix + "Questions", PaymentDbProperties.DbSchema); + + b.ConfigureByConvention(); + + //Properties + b.Property(q => q.Title).IsRequired().HasMaxLength(QuestionConsts.MaxTitleLength); + + //Relations + b.HasMany(question => question.Tags).WithOne().HasForeignKey(qt => qt.QuestionId); + + //Indexes + b.HasIndex(q => q.CreationTime); + }); + */ + } + } +} diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentEntityFrameworkCoreModule.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentEntityFrameworkCoreModule.cs new file mode 100644 index 0000000..5925cf4 --- /dev/null +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentEntityFrameworkCoreModule.cs @@ -0,0 +1,23 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.Modularity; + +namespace Payment.EntityFrameworkCore +{ + [DependsOn( + typeof(PaymentDomainModule), + typeof(AbpEntityFrameworkCoreModule) + )] + public class PaymentEntityFrameworkCoreModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAbpDbContext(options => + { + /* Add custom repositories here. Example: + * options.AddRepository(); + */ + }); + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.EntityFrameworkCore/FodyWeavers.xml b/modules/payment/src/Payment.EntityFrameworkCore/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/src/Payment.EntityFrameworkCore/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.EntityFrameworkCore/FodyWeavers.xsd b/modules/payment/src/Payment.EntityFrameworkCore/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/src/Payment.EntityFrameworkCore/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.EntityFrameworkCore/Payment.EntityFrameworkCore.csproj b/modules/payment/src/Payment.EntityFrameworkCore/Payment.EntityFrameworkCore.csproj new file mode 100644 index 0000000..4f69f04 --- /dev/null +++ b/modules/payment/src/Payment.EntityFrameworkCore/Payment.EntityFrameworkCore.csproj @@ -0,0 +1,15 @@ + + + + + + net6.0 + Payment + + + + + + + + diff --git a/modules/payment/src/Payment.HttpApi/FodyWeavers.xml b/modules/payment/src/Payment.HttpApi/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/src/Payment.HttpApi/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.HttpApi/FodyWeavers.xsd b/modules/payment/src/Payment.HttpApi/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/src/Payment.HttpApi/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.HttpApi/Payment.HttpApi.csproj b/modules/payment/src/Payment.HttpApi/Payment.HttpApi.csproj new file mode 100644 index 0000000..4ff0f8e --- /dev/null +++ b/modules/payment/src/Payment.HttpApi/Payment.HttpApi.csproj @@ -0,0 +1,15 @@ + + + + + + net6.0 + Payment + + + + + + + + diff --git a/modules/payment/src/Payment.HttpApi/PaymentController.cs b/modules/payment/src/Payment.HttpApi/PaymentController.cs new file mode 100644 index 0000000..000a3f9 --- /dev/null +++ b/modules/payment/src/Payment.HttpApi/PaymentController.cs @@ -0,0 +1,13 @@ +using Payment.Localization; +using Volo.Abp.AspNetCore.Mvc; + +namespace Payment +{ + public abstract class PaymentController : AbpControllerBase + { + protected PaymentController() + { + LocalizationResource = typeof(PaymentResource); + } + } +} diff --git a/modules/payment/src/Payment.HttpApi/PaymentHttpApiModule.cs b/modules/payment/src/Payment.HttpApi/PaymentHttpApiModule.cs new file mode 100644 index 0000000..10b41af --- /dev/null +++ b/modules/payment/src/Payment.HttpApi/PaymentHttpApiModule.cs @@ -0,0 +1,33 @@ +using Localization.Resources.AbpUi; +using Payment.Localization; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Microsoft.Extensions.DependencyInjection; + +namespace Payment +{ + [DependsOn( + typeof(PaymentApplicationContractsModule), + typeof(AbpAspNetCoreMvcModule))] + public class PaymentHttpApiModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(PaymentHttpApiModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AbpUiResource)); + }); + } + } +} diff --git a/modules/payment/src/Payment.HttpApi/Samples/SampleController.cs b/modules/payment/src/Payment.HttpApi/Samples/SampleController.cs new file mode 100644 index 0000000..4bf9f61 --- /dev/null +++ b/modules/payment/src/Payment.HttpApi/Samples/SampleController.cs @@ -0,0 +1,34 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; + +namespace Payment.Samples +{ + [Area("Payment")] + [RemoteService(Name = PaymentRemoteServiceConsts.RemoteServiceName)] + [Route("api/Payment/sample")] + public class SampleController : PaymentController, ISampleAppService + { + private readonly ISampleAppService _sampleAppService; + + public SampleController(ISampleAppService sampleAppService) + { + _sampleAppService = sampleAppService; + } + + [HttpGet] + public async Task GetAsync() + { + return await _sampleAppService.GetAsync(); + } + + [HttpGet] + [Route("authorized")] + [Authorize] + public async Task GetAuthorizedAsync() + { + return await _sampleAppService.GetAsync(); + } + } +} diff --git a/modules/payment/src/Payment.Web/FodyWeavers.xml b/modules/payment/src/Payment.Web/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/src/Payment.Web/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/FodyWeavers.xsd b/modules/payment/src/Payment.Web/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/src/Payment.Web/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/Menus/PaymentMenuContributor.cs b/modules/payment/src/Payment.Web/Menus/PaymentMenuContributor.cs new file mode 100644 index 0000000..095aa5c --- /dev/null +++ b/modules/payment/src/Payment.Web/Menus/PaymentMenuContributor.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Volo.Abp.UI.Navigation; + +namespace Payment.Web.Menus +{ + public class PaymentMenuContributor : IMenuContributor + { + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name == StandardMenus.Main) + { + await ConfigureMainMenuAsync(context); + } + } + + private Task ConfigureMainMenuAsync(MenuConfigurationContext context) + { + //Add main menu items. + context.Menu.AddItem(new ApplicationMenuItem(PaymentMenus.Prefix, displayName: "Payment", "~/Payment", icon: "fa fa-globe")); + + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/Menus/PaymentMenus.cs b/modules/payment/src/Payment.Web/Menus/PaymentMenus.cs new file mode 100644 index 0000000..577d6cc --- /dev/null +++ b/modules/payment/src/Payment.Web/Menus/PaymentMenus.cs @@ -0,0 +1,11 @@ +namespace Payment.Web.Menus +{ + public class PaymentMenus + { + public const string Prefix = "Payment"; + + //Add your menu items here... + //public const string Home = Prefix + ".MyNewMenuItem"; + + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml b/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml new file mode 100644 index 0000000..80d5365 --- /dev/null +++ b/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml @@ -0,0 +1,17 @@ +@page +@using Microsoft.Extensions.Localization +@using Payment.Localization +@using Payment.Web.Pages.Payment +@model Payment.Web.Pages.Payment.IndexModel +@inject IStringLocalizer L + +@section scripts { + + + +} + +@{ +} +

Payment

+

@L["SamplePageMessage"]

diff --git a/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml.cs b/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml.cs new file mode 100644 index 0000000..d57c76c --- /dev/null +++ b/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml.cs @@ -0,0 +1,9 @@ +namespace Payment.Web.Pages.Payment +{ + public class IndexModel : PaymentPageModel + { + public void OnGet() + { + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/Pages/PaymentPageModel.cs b/modules/payment/src/Payment.Web/Pages/PaymentPageModel.cs new file mode 100644 index 0000000..ae1f6c7 --- /dev/null +++ b/modules/payment/src/Payment.Web/Pages/PaymentPageModel.cs @@ -0,0 +1,16 @@ +using Payment.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; + +namespace Payment.Web.Pages +{ + /* Inherit your PageModel classes from this class. + */ + public abstract class PaymentPageModel : AbpPageModel + { + protected PaymentPageModel() + { + LocalizationResourceType = typeof(PaymentResource); + ObjectMapperContext = typeof(PaymentWebModule); + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/Pages/_ViewImports.cshtml b/modules/payment/src/Payment.Web/Pages/_ViewImports.cshtml new file mode 100644 index 0000000..c1da1f5 --- /dev/null +++ b/modules/payment/src/Payment.Web/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/Payment.Web.csproj b/modules/payment/src/Payment.Web/Payment.Web.csproj new file mode 100644 index 0000000..8989689 --- /dev/null +++ b/modules/payment/src/Payment.Web/Payment.Web.csproj @@ -0,0 +1,40 @@ + + + + + + net6.0 + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + Library + Payment.Web + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/payment/src/Payment.Web/PaymentWebAutoMapperProfile.cs b/modules/payment/src/Payment.Web/PaymentWebAutoMapperProfile.cs new file mode 100644 index 0000000..364e293 --- /dev/null +++ b/modules/payment/src/Payment.Web/PaymentWebAutoMapperProfile.cs @@ -0,0 +1,14 @@ +using AutoMapper; + +namespace Payment.Web +{ + public class PaymentWebAutoMapperProfile : Profile + { + public PaymentWebAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/PaymentWebModule.cs b/modules/payment/src/Payment.Web/PaymentWebModule.cs new file mode 100644 index 0000000..15497f8 --- /dev/null +++ b/modules/payment/src/Payment.Web/PaymentWebModule.cs @@ -0,0 +1,59 @@ +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.DependencyInjection; +using Payment.Localization; +using Payment.Web.Menus; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.AutoMapper; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; +using Payment.Permissions; + +namespace Payment.Web +{ + [DependsOn( + typeof(PaymentApplicationContractsModule), + typeof(AbpAspNetCoreMvcUiThemeSharedModule), + typeof(AbpAutoMapperModule) + )] + public class PaymentWebModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource(typeof(PaymentResource), typeof(PaymentWebModule).Assembly); + }); + + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(PaymentWebModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.MenuContributors.Add(new PaymentMenuContributor()); + }); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddMaps(validate: true); + }); + + Configure(options => + { + //Configure authorization. + }); + } + } +} diff --git a/modules/payment/src/Payment.Web/Properties/launchSettings.json b/modules/payment/src/Payment.Web/Properties/launchSettings.json new file mode 100644 index 0000000..a8c7564 --- /dev/null +++ b/modules/payment/src/Payment.Web/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:64779/", + "sslPort": 44326 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Payment.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:5001;http://localhost:5000" + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/wwwroot/client-proxies/Payment-proxy.js b/modules/payment/src/Payment.Web/wwwroot/client-proxies/Payment-proxy.js new file mode 100644 index 0000000..bd8b2ec --- /dev/null +++ b/modules/payment/src/Payment.Web/wwwroot/client-proxies/Payment-proxy.js @@ -0,0 +1,32 @@ +/* This file is automatically generated by ABP framework to use MVC Controllers from javascript. */ + + +// module payment + +(function(){ + + // controller payment.samples.sample + + (function(){ + + abp.utils.createNamespace(window, 'payment.samples.sample'); + + payment.samples.sample.get = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/Payment/sample', + type: 'GET' + }, ajaxParams)); + }; + + payment.samples.sample.getAuthorized = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/Payment/sample/authorized', + type: 'GET' + }, ajaxParams)); + }; + + })(); + +})(); + + diff --git a/modules/payment/test/Payment.Application.Tests/FodyWeavers.xml b/modules/payment/test/Payment.Application.Tests/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/test/Payment.Application.Tests/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/test/Payment.Application.Tests/FodyWeavers.xsd b/modules/payment/test/Payment.Application.Tests/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/test/Payment.Application.Tests/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/test/Payment.Application.Tests/Payment.Application.Tests.csproj b/modules/payment/test/Payment.Application.Tests/Payment.Application.Tests.csproj new file mode 100644 index 0000000..255e668 --- /dev/null +++ b/modules/payment/test/Payment.Application.Tests/Payment.Application.Tests.csproj @@ -0,0 +1,16 @@ + + + + + + net6.0 + Payment + + + + + + + + + diff --git a/modules/payment/test/Payment.Application.Tests/PaymentApplicationTestBase.cs b/modules/payment/test/Payment.Application.Tests/PaymentApplicationTestBase.cs new file mode 100644 index 0000000..27205bf --- /dev/null +++ b/modules/payment/test/Payment.Application.Tests/PaymentApplicationTestBase.cs @@ -0,0 +1,10 @@ +namespace Payment +{ + /* Inherit from this class for your application layer tests. + * See SampleAppService_Tests for example. + */ + public abstract class PaymentApplicationTestBase : PaymentTestBase + { + + } +} \ No newline at end of file diff --git a/modules/payment/test/Payment.Application.Tests/PaymentApplicationTestModule.cs b/modules/payment/test/Payment.Application.Tests/PaymentApplicationTestModule.cs new file mode 100644 index 0000000..a9dc888 --- /dev/null +++ b/modules/payment/test/Payment.Application.Tests/PaymentApplicationTestModule.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Modularity; + +namespace Payment +{ + [DependsOn( + typeof(PaymentApplicationModule), + typeof(PaymentDomainTestModule) + )] + public class PaymentApplicationTestModule : AbpModule + { + + } +} diff --git a/modules/payment/test/Payment.Application.Tests/Samples/SampleAppService_Tests.cs b/modules/payment/test/Payment.Application.Tests/Samples/SampleAppService_Tests.cs new file mode 100644 index 0000000..a989392 --- /dev/null +++ b/modules/payment/test/Payment.Application.Tests/Samples/SampleAppService_Tests.cs @@ -0,0 +1,30 @@ +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Payment.Samples +{ + public class SampleAppService_Tests : PaymentApplicationTestBase + { + private readonly ISampleAppService _sampleAppService; + + public SampleAppService_Tests() + { + _sampleAppService = GetRequiredService(); + } + + [Fact] + public async Task GetAsync() + { + var result = await _sampleAppService.GetAsync(); + result.Value.ShouldBe(42); + } + + [Fact] + public async Task GetAuthorizedAsync() + { + var result = await _sampleAppService.GetAuthorizedAsync(); + result.Value.ShouldBe(42); + } + } +} diff --git a/modules/payment/test/Payment.Domain.Tests/FodyWeavers.xml b/modules/payment/test/Payment.Domain.Tests/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/test/Payment.Domain.Tests/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/test/Payment.Domain.Tests/FodyWeavers.xsd b/modules/payment/test/Payment.Domain.Tests/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/test/Payment.Domain.Tests/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/test/Payment.Domain.Tests/Payment.Domain.Tests.csproj b/modules/payment/test/Payment.Domain.Tests/Payment.Domain.Tests.csproj new file mode 100644 index 0000000..2265273 --- /dev/null +++ b/modules/payment/test/Payment.Domain.Tests/Payment.Domain.Tests.csproj @@ -0,0 +1,15 @@ + + + + + + net6.0 + Payment + + + + + + + + diff --git a/modules/payment/test/Payment.Domain.Tests/PaymentDomainTestBase.cs b/modules/payment/test/Payment.Domain.Tests/PaymentDomainTestBase.cs new file mode 100644 index 0000000..f5ff537 --- /dev/null +++ b/modules/payment/test/Payment.Domain.Tests/PaymentDomainTestBase.cs @@ -0,0 +1,10 @@ +namespace Payment +{ + /* Inherit from this class for your domain layer tests. + * See SampleManager_Tests for example. + */ + public abstract class PaymentDomainTestBase : PaymentTestBase + { + + } +} \ No newline at end of file diff --git a/modules/payment/test/Payment.Domain.Tests/PaymentDomainTestModule.cs b/modules/payment/test/Payment.Domain.Tests/PaymentDomainTestModule.cs new file mode 100644 index 0000000..e6809a8 --- /dev/null +++ b/modules/payment/test/Payment.Domain.Tests/PaymentDomainTestModule.cs @@ -0,0 +1,17 @@ +using Payment.EntityFrameworkCore; +using Volo.Abp.Modularity; + +namespace Payment +{ + /* Domain tests are configured to use the EF Core provider. + * You can switch to MongoDB, however your domain tests should be + * database independent anyway. + */ + [DependsOn( + typeof(PaymentEntityFrameworkCoreTestModule) + )] + public class PaymentDomainTestModule : AbpModule + { + + } +} diff --git a/modules/payment/test/Payment.Domain.Tests/Samples/SampleManager_Tests.cs b/modules/payment/test/Payment.Domain.Tests/Samples/SampleManager_Tests.cs new file mode 100644 index 0000000..476c936 --- /dev/null +++ b/modules/payment/test/Payment.Domain.Tests/Samples/SampleManager_Tests.cs @@ -0,0 +1,21 @@ +using System.Threading.Tasks; +using Xunit; + +namespace Payment.Samples +{ + public class SampleManager_Tests : PaymentDomainTestBase + { + //private readonly SampleManager _sampleManager; + + public SampleManager_Tests() + { + //_sampleManager = GetRequiredService(); + } + + [Fact] + public async Task Method1Async() + { + + } + } +} diff --git a/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/PaymentEntityFrameworkCoreTestBase.cs b/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/PaymentEntityFrameworkCoreTestBase.cs new file mode 100644 index 0000000..51ccf90 --- /dev/null +++ b/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/PaymentEntityFrameworkCoreTestBase.cs @@ -0,0 +1,10 @@ +namespace Payment.EntityFrameworkCore +{ + /* This class can be used as a base class for EF Core integration tests, + * while SampleRepository_Tests uses a different approach. + */ + public abstract class PaymentEntityFrameworkCoreTestBase : PaymentTestBase + { + + } +} \ No newline at end of file diff --git a/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/PaymentEntityFrameworkCoreTestModule.cs b/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/PaymentEntityFrameworkCoreTestModule.cs new file mode 100644 index 0000000..a8aa254 --- /dev/null +++ b/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/PaymentEntityFrameworkCoreTestModule.cs @@ -0,0 +1,43 @@ +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Sqlite; +using Volo.Abp.Modularity; + +namespace Payment.EntityFrameworkCore +{ + [DependsOn( + typeof(PaymentTestBaseModule), + typeof(PaymentEntityFrameworkCoreModule), + typeof(AbpEntityFrameworkCoreSqliteModule) + )] + public class PaymentEntityFrameworkCoreTestModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + var sqliteConnection = CreateDatabaseAndGetConnection(); + + Configure(options => + { + options.Configure(abpDbContextConfigurationContext => + { + abpDbContextConfigurationContext.DbContextOptions.UseSqlite(sqliteConnection); + }); + }); + } + + private static SqliteConnection CreateDatabaseAndGetConnection() + { + var connection = new SqliteConnection("Data Source=:memory:"); + connection.Open(); + + new PaymentDbContext( + new DbContextOptionsBuilder().UseSqlite(connection).Options + ).GetService().CreateTables(); + + return connection; + } + } +} diff --git a/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepository_Tests.cs b/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepository_Tests.cs new file mode 100644 index 0000000..5dcd5b2 --- /dev/null +++ b/modules/payment/test/Payment.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepository_Tests.cs @@ -0,0 +1,12 @@ +using Payment.Samples; + +namespace Payment.EntityFrameworkCore.Samples +{ + public class SampleRepository_Tests : SampleRepository_Tests + { + /* Don't write custom repository tests here, instead write to + * the base class. + * One exception can be some specific tests related to EF core. + */ + } +} diff --git a/modules/payment/test/Payment.EntityFrameworkCore.Tests/FodyWeavers.xml b/modules/payment/test/Payment.EntityFrameworkCore.Tests/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/test/Payment.EntityFrameworkCore.Tests/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/test/Payment.EntityFrameworkCore.Tests/FodyWeavers.xsd b/modules/payment/test/Payment.EntityFrameworkCore.Tests/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/test/Payment.EntityFrameworkCore.Tests/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/test/Payment.EntityFrameworkCore.Tests/Payment.EntityFrameworkCore.Tests.csproj b/modules/payment/test/Payment.EntityFrameworkCore.Tests/Payment.EntityFrameworkCore.Tests.csproj new file mode 100644 index 0000000..b6a1feb --- /dev/null +++ b/modules/payment/test/Payment.EntityFrameworkCore.Tests/Payment.EntityFrameworkCore.Tests.csproj @@ -0,0 +1,18 @@ + + + + + + net6.0 + Payment + + + + + + + + + + + diff --git a/modules/payment/test/Payment.TestBase/FodyWeavers.xml b/modules/payment/test/Payment.TestBase/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/test/Payment.TestBase/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/test/Payment.TestBase/FodyWeavers.xsd b/modules/payment/test/Payment.TestBase/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/test/Payment.TestBase/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/test/Payment.TestBase/Payment.TestBase.csproj b/modules/payment/test/Payment.TestBase/Payment.TestBase.csproj new file mode 100644 index 0000000..4d3acbb --- /dev/null +++ b/modules/payment/test/Payment.TestBase/Payment.TestBase.csproj @@ -0,0 +1,23 @@ + + + + + + net6.0 + Payment + + + + + + + + + + + + + + + + diff --git a/modules/payment/test/Payment.TestBase/PaymentDataSeedContributor.cs b/modules/payment/test/Payment.TestBase/PaymentDataSeedContributor.cs new file mode 100644 index 0000000..0671855 --- /dev/null +++ b/modules/payment/test/Payment.TestBase/PaymentDataSeedContributor.cs @@ -0,0 +1,33 @@ +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Guids; +using Volo.Abp.MultiTenancy; + +namespace Payment +{ + public class PaymentDataSeedContributor : IDataSeedContributor, ITransientDependency + { + private readonly IGuidGenerator _guidGenerator; + private readonly ICurrentTenant _currentTenant; + + public PaymentDataSeedContributor( + IGuidGenerator guidGenerator, ICurrentTenant currentTenant) + { + _guidGenerator = guidGenerator; + _currentTenant = currentTenant; + } + + public Task SeedAsync(DataSeedContext context) + { + /* Instead of returning the Task.CompletedTask, you can insert your test data + * at this point! + */ + + using (_currentTenant.Change(context?.TenantId)) + { + return Task.CompletedTask; + } + } + } +} diff --git a/modules/payment/test/Payment.TestBase/PaymentTestBase.cs b/modules/payment/test/Payment.TestBase/PaymentTestBase.cs new file mode 100644 index 0000000..5b3dfed --- /dev/null +++ b/modules/payment/test/Payment.TestBase/PaymentTestBase.cs @@ -0,0 +1,60 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Modularity; +using Volo.Abp.Uow; +using Volo.Abp.Testing; + +namespace Payment +{ + /* All test classes are derived from this class, directly or indirectly. */ + public abstract class PaymentTestBase : AbpIntegratedTest + where TStartupModule : IAbpModule + { + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } + + protected virtual Task WithUnitOfWorkAsync(Func func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func action) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + await action(); + + await uow.CompleteAsync(); + } + } + } + + protected virtual Task WithUnitOfWorkAsync(Func> func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func> func) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + var result = await func(); + await uow.CompleteAsync(); + return result; + } + } + } + } +} diff --git a/modules/payment/test/Payment.TestBase/PaymentTestBaseModule.cs b/modules/payment/test/Payment.TestBase/PaymentTestBaseModule.cs new file mode 100644 index 0000000..a993406 --- /dev/null +++ b/modules/payment/test/Payment.TestBase/PaymentTestBaseModule.cs @@ -0,0 +1,42 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Authorization; +using Volo.Abp.Autofac; +using Volo.Abp.Data; +using Volo.Abp.Modularity; +using Volo.Abp.Threading; + +namespace Payment +{ + [DependsOn( + typeof(AbpAutofacModule), + typeof(AbpTestBaseModule), + typeof(AbpAuthorizationModule), + typeof(PaymentDomainModule) + )] + public class PaymentTestBaseModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAlwaysAllowAuthorization(); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + SeedTestData(context); + } + + private static void SeedTestData(ApplicationInitializationContext context) + { + AsyncHelper.RunSync(async () => + { + using (var scope = context.ServiceProvider.CreateScope()) + { + await scope.ServiceProvider + .GetRequiredService() + .SeedAsync(); + } + }); + } + } +} diff --git a/modules/payment/test/Payment.TestBase/Samples/SampleRepository_Tests.cs b/modules/payment/test/Payment.TestBase/Samples/SampleRepository_Tests.cs new file mode 100644 index 0000000..ef62f66 --- /dev/null +++ b/modules/payment/test/Payment.TestBase/Samples/SampleRepository_Tests.cs @@ -0,0 +1,27 @@ +using System.Threading.Tasks; +using Volo.Abp.Modularity; +using Xunit; + +namespace Payment.Samples +{ + /* Write your custom repository tests like that, in this project, as abstract classes. + * Then inherit these abstract classes from EF Core & MongoDB test projects. + * In this way, both database providers are tests with the same set tests. + */ + public abstract class SampleRepository_Tests : PaymentTestBase + where TStartupModule : IAbpModule + { + //private readonly ISampleRepository _sampleRepository; + + protected SampleRepository_Tests() + { + //_sampleRepository = GetRequiredService(); + } + + [Fact] + public async Task Method1Async() + { + + } + } +} diff --git a/modules/payment/test/Payment.TestBase/Security/FakeCurrentPrincipalAccessor.cs b/modules/payment/test/Payment.TestBase/Security/FakeCurrentPrincipalAccessor.cs new file mode 100644 index 0000000..c312464 --- /dev/null +++ b/modules/payment/test/Payment.TestBase/Security/FakeCurrentPrincipalAccessor.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using System.Security.Claims; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Security.Claims; + +namespace Payment.Security +{ + [Dependency(ReplaceServices = true)] + public class FakeCurrentPrincipalAccessor : ThreadCurrentPrincipalAccessor + { + protected override ClaimsPrincipal GetClaimsPrincipal() + { + return GetPrincipal(); + } + + private ClaimsPrincipal _principal; + + private ClaimsPrincipal GetPrincipal() + { + if (_principal == null) + { + lock (this) + { + if (_principal == null) + { + _principal = new ClaimsPrincipal( + new ClaimsIdentity( + new List + { + new Claim(AbpClaimTypes.UserId,"2e701e62-0953-4dd3-910b-dc6cc93ccb0d"), + new Claim(AbpClaimTypes.UserName,"admin"), + new Claim(AbpClaimTypes.Email,"admin@abp.io") + } + ) + ); + } + } + } + + return _principal; + } + } +} From 0aa3b0c52ddfa5ec9edf28db9a0b23d8f2a1ec63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 7 Oct 2021 14:01:11 +0300 Subject: [PATCH 023/159] Added Payment.HttpApi.Client --- modules/payment/Payment.sln | 7 +++ .../ClientProxies/Payment-generate-proxy.json | 53 +++++++++++++++++++ .../SampleClientProxy.Generated.cs | 28 ++++++++++ .../ClientProxies/SampleClientProxy.cs | 8 +++ .../Payment.HttpApi.Client/FodyWeavers.xml | 3 ++ .../Payment.HttpApi.Client/FodyWeavers.xsd | 30 +++++++++++ .../Payment.HttpApi.Client.csproj | 20 +++++++ .../PaymentHttpApiClientModule.cs | 27 ++++++++++ 8 files changed, 176 insertions(+) create mode 100644 modules/payment/src/Payment.HttpApi.Client/ClientProxies/Payment-generate-proxy.json create mode 100644 modules/payment/src/Payment.HttpApi.Client/ClientProxies/SampleClientProxy.Generated.cs create mode 100644 modules/payment/src/Payment.HttpApi.Client/ClientProxies/SampleClientProxy.cs create mode 100644 modules/payment/src/Payment.HttpApi.Client/FodyWeavers.xml create mode 100644 modules/payment/src/Payment.HttpApi.Client/FodyWeavers.xsd create mode 100644 modules/payment/src/Payment.HttpApi.Client/Payment.HttpApi.Client.csproj create mode 100644 modules/payment/src/Payment.HttpApi.Client/PaymentHttpApiClientModule.cs diff --git a/modules/payment/Payment.sln b/modules/payment/Payment.sln index 0806097..03efb75 100644 --- a/modules/payment/Payment.sln +++ b/modules/payment/Payment.sln @@ -41,6 +41,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "www", "www", "{D3FD0217-A8C EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "admin", "admin", "{FC718EF0-43EB-4767-9578-95FA0B3727A5}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payment.HttpApi.Client", "src\Payment.HttpApi.Client\Payment.HttpApi.Client.csproj", "{3FF65447-69D5-4115-8398-8156FB381215}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -91,6 +93,10 @@ Global {3B7B6317-1B85-4164-8E11-75574F80AE17}.Debug|Any CPU.Build.0 = Debug|Any CPU {3B7B6317-1B85-4164-8E11-75574F80AE17}.Release|Any CPU.ActiveCfg = Release|Any CPU {3B7B6317-1B85-4164-8E11-75574F80AE17}.Release|Any CPU.Build.0 = Release|Any CPU + {3FF65447-69D5-4115-8398-8156FB381215}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3FF65447-69D5-4115-8398-8156FB381215}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3FF65447-69D5-4115-8398-8156FB381215}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3FF65447-69D5-4115-8398-8156FB381215}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -113,6 +119,7 @@ Global {D3FD0217-A8C7-4BAF-BF77-962F1B055515} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} {90CB5DC4-C040-45C7-8900-9688B26405BC} = {D3FD0217-A8C7-4BAF-BF77-962F1B055515} {FC718EF0-43EB-4767-9578-95FA0B3727A5} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + {3FF65447-69D5-4115-8398-8156FB381215} = {4EF8B98A-E7A3-48A6-9C1F-10DE32001213} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6AAFA1C6-603E-13FA-45E5-7910AA9F661D} diff --git a/modules/payment/src/Payment.HttpApi.Client/ClientProxies/Payment-generate-proxy.json b/modules/payment/src/Payment.HttpApi.Client/ClientProxies/Payment-generate-proxy.json new file mode 100644 index 0000000..8f9c667 --- /dev/null +++ b/modules/payment/src/Payment.HttpApi.Client/ClientProxies/Payment-generate-proxy.json @@ -0,0 +1,53 @@ +{ + "modules": { + "Payment": { + "rootPath": "Payment", + "remoteServiceName": "Payment", + "controllers": { + "Payment.Samples.SampleController": { + "controllerName": "Sample", + "controllerGroupName": "Sample", + "type": "Payment.Samples.SampleController", + "interfaces": [ + { + "type": "Payment.Samples.ISampleAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/Payment/sample", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Payment.Samples.SampleDto", + "typeSimple": "Payment.Samples.SampleDto" + }, + "allowAnonymous": null, + "implementFrom": "Payment.Samples.ISampleAppService" + }, + "GetAuthorizedAsync": { + "uniqueName": "GetAuthorizedAsync", + "name": "GetAuthorizedAsync", + "httpMethod": "GET", + "url": "api/Payment/sample/authorized", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Payment.Samples.SampleDto", + "typeSimple": "Payment.Samples.SampleDto" + }, + "allowAnonymous": false, + "implementFrom": "Payment.Samples.ISampleAppService" + } + } + } + } + } + }, + "types": {} +} \ No newline at end of file diff --git a/modules/payment/src/Payment.HttpApi.Client/ClientProxies/SampleClientProxy.Generated.cs b/modules/payment/src/Payment.HttpApi.Client/ClientProxies/SampleClientProxy.Generated.cs new file mode 100644 index 0000000..970605e --- /dev/null +++ b/modules/payment/src/Payment.HttpApi.Client/ClientProxies/SampleClientProxy.Generated.cs @@ -0,0 +1,28 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Modeling; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client.ClientProxying; +using Payment.Samples; + +// ReSharper disable once CheckNamespace +namespace Payment.Samples.ClientProxies +{ + [Dependency(ReplaceServices = true)] + [ExposeServices(typeof(ISampleAppService), typeof(SampleClientProxy))] + public partial class SampleClientProxy : ClientProxyBase, ISampleAppService + { + public virtual async Task GetAsync() + { + return await RequestAsync(nameof(GetAsync)); + } + + public virtual async Task GetAuthorizedAsync() + { + return await RequestAsync(nameof(GetAuthorizedAsync)); + } + } +} diff --git a/modules/payment/src/Payment.HttpApi.Client/ClientProxies/SampleClientProxy.cs b/modules/payment/src/Payment.HttpApi.Client/ClientProxies/SampleClientProxy.cs new file mode 100644 index 0000000..948c2ea --- /dev/null +++ b/modules/payment/src/Payment.HttpApi.Client/ClientProxies/SampleClientProxy.cs @@ -0,0 +1,8 @@ +// This file is part of SampleClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace Payment.Samples.ClientProxies +{ + public partial class SampleClientProxy + { + } +} diff --git a/modules/payment/src/Payment.HttpApi.Client/FodyWeavers.xml b/modules/payment/src/Payment.HttpApi.Client/FodyWeavers.xml new file mode 100644 index 0000000..1715698 --- /dev/null +++ b/modules/payment/src/Payment.HttpApi.Client/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.HttpApi.Client/FodyWeavers.xsd b/modules/payment/src/Payment.HttpApi.Client/FodyWeavers.xsd new file mode 100644 index 0000000..ffa6fc4 --- /dev/null +++ b/modules/payment/src/Payment.HttpApi.Client/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.HttpApi.Client/Payment.HttpApi.Client.csproj b/modules/payment/src/Payment.HttpApi.Client/Payment.HttpApi.Client.csproj new file mode 100644 index 0000000..628fafc --- /dev/null +++ b/modules/payment/src/Payment.HttpApi.Client/Payment.HttpApi.Client.csproj @@ -0,0 +1,20 @@ + + + + + + netstandard2.0 + Payment + + + + + + + + + + + + + diff --git a/modules/payment/src/Payment.HttpApi.Client/PaymentHttpApiClientModule.cs b/modules/payment/src/Payment.HttpApi.Client/PaymentHttpApiClientModule.cs new file mode 100644 index 0000000..7ad7e88 --- /dev/null +++ b/modules/payment/src/Payment.HttpApi.Client/PaymentHttpApiClientModule.cs @@ -0,0 +1,27 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace Payment +{ + [DependsOn( + typeof(PaymentApplicationContractsModule), + typeof(AbpHttpClientModule))] + public class PaymentHttpApiClientModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddStaticHttpClientProxies( + typeof(PaymentApplicationContractsModule).Assembly, + PaymentRemoteServiceConsts.RemoteServiceName + ); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + } + } +} From fdb188c58460b8f82c61ccf12ae342c8fb2f496e Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 7 Oct 2021 14:46:17 +0300 Subject: [PATCH 024/159] Upgrade EventHub to ABP 5.0.0-beta.1 --- ...ventHub.Admin.Application.Contracts.csproj | 6 +- .../EventHub.Admin.Application.csproj | 6 +- .../EventHub.Admin.HttpApi.Client.csproj | 6 +- .../EventHub.Admin.HttpApi.Host.csproj | 10 +- .../EventHub.Admin.HttpApi.csproj | 6 +- .../EventHub.Admin.Web.csproj | 6 +- .../EventHub.Application.Contracts.csproj | 2 +- .../EventHub.Application.csproj | 2 +- .../EventHub.BackgroundServices.csproj | 6 +- .../EventHub.DbMigrator.csproj | 2 +- .../EventHub.Domain.Shared.csproj | 14 +- .../Data/IdentityServerDataSeedContributor.cs | 2 +- src/EventHub.Domain/EventHub.Domain.csproj | 18 +- .../EventHub.EntityFrameworkCore.csproj | 16 +- .../EventHub.HttpApi.Client.csproj | 2 +- .../EventHub.HttpApi.Host.csproj | 10 +- src/EventHub.HttpApi/EventHub.HttpApi.csproj | 2 +- .../EventHub.IdentityServer.csproj | 12 +- src/EventHub.IdentityServer/package.json | 2 +- .../wwwroot/libs/sweetalert/sweetalert.min.js | 1 - .../libs/sweetalert2/sweetalert2.all.js | 3122 +++++++++++++++++ .../libs/sweetalert2/sweetalert2.all.min.js | 2 + .../wwwroot/libs/sweetalert2/sweetalert2.css | 1316 +++++++ .../wwwroot/libs/sweetalert2/sweetalert2.js | 3120 ++++++++++++++++ .../libs/sweetalert2/sweetalert2.min.css | 1 + .../libs/sweetalert2/sweetalert2.min.js | 1 + src/EventHub.IdentityServer/yarn.lock | 261 +- .../EventHub.Web.Theme.csproj | 4 +- src/EventHub.Web/EventHub.Web.csproj | 18 +- src/EventHub.Web/package.json | 2 +- .../wwwroot/libs/sweetalert/sweetalert.min.js | 1 - .../libs/sweetalert2/sweetalert2.all.js | 3122 +++++++++++++++++ .../libs/sweetalert2/sweetalert2.all.min.js | 2 + .../wwwroot/libs/sweetalert2/sweetalert2.css | 1316 +++++++ .../wwwroot/libs/sweetalert2/sweetalert2.js | 3120 ++++++++++++++++ .../libs/sweetalert2/sweetalert2.min.css | 1 + .../libs/sweetalert2/sweetalert2.min.js | 1 + src/EventHub.Web/yarn.lock | 261 +- .../EventHub.EntityFrameworkCore.Tests.csproj | 2 +- .../EventHub.TestBase.csproj | 6 +- 40 files changed, 15453 insertions(+), 357 deletions(-) delete mode 100644 src/EventHub.IdentityServer/wwwroot/libs/sweetalert/sweetalert.min.js create mode 100644 src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.all.js create mode 100644 src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js create mode 100644 src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.css create mode 100644 src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.js create mode 100644 src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.min.css create mode 100644 src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.min.js delete mode 100644 src/EventHub.Web/wwwroot/libs/sweetalert/sweetalert.min.js create mode 100644 src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.all.js create mode 100644 src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.all.min.js create mode 100644 src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.css create mode 100644 src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.js create mode 100644 src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.min.css create mode 100644 src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.min.js diff --git a/src/EventHub.Admin.Application.Contracts/EventHub.Admin.Application.Contracts.csproj b/src/EventHub.Admin.Application.Contracts/EventHub.Admin.Application.Contracts.csproj index 9197540..f43e184 100644 --- a/src/EventHub.Admin.Application.Contracts/EventHub.Admin.Application.Contracts.csproj +++ b/src/EventHub.Admin.Application.Contracts/EventHub.Admin.Application.Contracts.csproj @@ -12,9 +12,9 @@ - - - + + + diff --git a/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj b/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj index 4b52b74..b6461d7 100644 --- a/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj +++ b/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj @@ -13,9 +13,9 @@ - - - + + + diff --git a/src/EventHub.Admin.HttpApi.Client/EventHub.Admin.HttpApi.Client.csproj b/src/EventHub.Admin.HttpApi.Client/EventHub.Admin.HttpApi.Client.csproj index 9a45bce..5c16605 100644 --- a/src/EventHub.Admin.HttpApi.Client/EventHub.Admin.HttpApi.Client.csproj +++ b/src/EventHub.Admin.HttpApi.Client/EventHub.Admin.HttpApi.Client.csproj @@ -12,9 +12,9 @@ - - - + + + diff --git a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj index 91176f3..017a73f 100644 --- a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj +++ b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj @@ -15,11 +15,11 @@ - - - - - + + + + + diff --git a/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj b/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj index 4b0390e..2cb0101 100644 --- a/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj +++ b/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj @@ -12,9 +12,9 @@ - - - + + + diff --git a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj index 60c6ad3..1835250 100644 --- a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj +++ b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj @@ -17,9 +17,9 @@ - - - + + + diff --git a/src/EventHub.Application.Contracts/EventHub.Application.Contracts.csproj b/src/EventHub.Application.Contracts/EventHub.Application.Contracts.csproj index a701ebf..a15a062 100644 --- a/src/EventHub.Application.Contracts/EventHub.Application.Contracts.csproj +++ b/src/EventHub.Application.Contracts/EventHub.Application.Contracts.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/EventHub.Application/EventHub.Application.csproj b/src/EventHub.Application/EventHub.Application.csproj index 7edbc2a..65385e6 100644 --- a/src/EventHub.Application/EventHub.Application.csproj +++ b/src/EventHub.Application/EventHub.Application.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj b/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj index 0cdbd43..4e2e979 100644 --- a/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj +++ b/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj @@ -14,9 +14,9 @@ - - - + + + diff --git a/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj b/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj index 1dbb710..e973aab 100644 --- a/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj +++ b/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj @@ -27,7 +27,7 @@ - + diff --git a/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj b/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj index 9976b42..e282423 100644 --- a/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj +++ b/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj @@ -9,13 +9,13 @@ - - - - - - - + + + + + + + diff --git a/src/EventHub.Domain/Data/IdentityServerDataSeedContributor.cs b/src/EventHub.Domain/Data/IdentityServerDataSeedContributor.cs index 4ecc279..cde189b 100644 --- a/src/EventHub.Domain/Data/IdentityServerDataSeedContributor.cs +++ b/src/EventHub.Domain/Data/IdentityServerDataSeedContributor.cs @@ -114,7 +114,7 @@ namespace EventHub.Data private async Task CreateApiScopeAsync(string name) { - var apiScope = await _apiScopeRepository.GetByNameAsync(name); + var apiScope = await _apiScopeRepository.FindByNameAsync(name); if (apiScope == null) { apiScope = await _apiScopeRepository.InsertAsync( diff --git a/src/EventHub.Domain/EventHub.Domain.csproj b/src/EventHub.Domain/EventHub.Domain.csproj index 33c4d91..56bf985 100644 --- a/src/EventHub.Domain/EventHub.Domain.csproj +++ b/src/EventHub.Domain/EventHub.Domain.csproj @@ -13,15 +13,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj index a256da2..b33b4f0 100644 --- a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj +++ b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj @@ -12,15 +12,15 @@ - + - - - - - - - + + + + + + + diff --git a/src/EventHub.HttpApi.Client/EventHub.HttpApi.Client.csproj b/src/EventHub.HttpApi.Client/EventHub.HttpApi.Client.csproj index 7e3bbfb..59df771 100644 --- a/src/EventHub.HttpApi.Client/EventHub.HttpApi.Client.csproj +++ b/src/EventHub.HttpApi.Client/EventHub.HttpApi.Client.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj b/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj index db0ccb4..bc4101e 100644 --- a/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj +++ b/src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj @@ -15,11 +15,11 @@ - - - - - + + + + + diff --git a/src/EventHub.HttpApi/EventHub.HttpApi.csproj b/src/EventHub.HttpApi/EventHub.HttpApi.csproj index 73bd9be..5b941d6 100644 --- a/src/EventHub.HttpApi/EventHub.HttpApi.csproj +++ b/src/EventHub.HttpApi/EventHub.HttpApi.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj b/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj index e872c55..bb6787e 100644 --- a/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj +++ b/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj @@ -42,12 +42,12 @@ - - - - - - + + + + + + diff --git a/src/EventHub.IdentityServer/package.json b/src/EventHub.IdentityServer/package.json index 834bcac..f578420 100644 --- a/src/EventHub.IdentityServer/package.json +++ b/src/EventHub.IdentityServer/package.json @@ -3,7 +3,7 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~4.4.0-rc.1", + "@abp/aspnetcore.mvc.ui.theme.basic": "~5.0.0-beta.1", "owl.carousel": "^2.3.4" } } \ No newline at end of file diff --git a/src/EventHub.IdentityServer/wwwroot/libs/sweetalert/sweetalert.min.js b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert/sweetalert.min.js deleted file mode 100644 index dc8f5e7..0000000 --- a/src/EventHub.IdentityServer/wwwroot/libs/sweetalert/sweetalert.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n
',e.titleMarkup='\n
\n',e.textMarkup='\n
',e.footerMarkup='\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='
\n
';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n
\n \n \n
\n '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n \n \n \n '},e.successIconMarkup=function(){var t=r+"--success";return'\n \n \n\n
\n
\n '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n
\n\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n
\n\n \n\n
\n
\n
\n
\n
\n\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e { + const result = []; + + for (let i = 0; i < arr.length; i++) { + if (result.indexOf(arr[i]) === -1) { + result.push(arr[i]); + } + } + + return result; + }; + /** + * Capitalize the first letter of a string + * @param str + */ + + const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1); + /** + * Convert NodeList to Array + * @param nodeList + */ + + const toArray = nodeList => Array.prototype.slice.call(nodeList); + /** + * Standardise console warnings + * @param message + */ + + const warn = message => { + console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message)); + }; + /** + * Standardise console errors + * @param message + */ + + const error = message => { + console.error("".concat(consolePrefix, " ").concat(message)); + }; + /** + * Private global state for `warnOnce` + * @type {Array} + * @private + */ + + const previousWarnOnceMessages = []; + /** + * Show a console warning, but only if it hasn't already been shown + * @param message + */ + + const warnOnce = message => { + if (!previousWarnOnceMessages.includes(message)) { + previousWarnOnceMessages.push(message); + warn(message); + } + }; + /** + * Show a one-time console warning about deprecated params/methods + */ + + const warnAboutDeprecation = (deprecatedParam, useInstead) => { + warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead.")); + }; + /** + * If `arg` is a function, call it (with no arguments or context) and return the result. + * Otherwise, just pass the value through + * @param arg + */ + + const callIfFunction = arg => typeof arg === 'function' ? arg() : arg; + const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function'; + const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg); + const isPromise = arg => arg && Promise.resolve(arg) === arg; + + const isJqueryElement = elem => typeof elem === 'object' && elem.jquery; + + const isElement = elem => elem instanceof Element || isJqueryElement(elem); + + const argsToParams = args => { + const params = {}; + + if (typeof args[0] === 'object' && !isElement(args[0])) { + Object.assign(params, args[0]); + } else { + ['title', 'html', 'icon'].forEach((name, index) => { + const arg = args[index]; + + if (typeof arg === 'string' || isElement(arg)) { + params[name] = arg; + } else if (arg !== undefined) { + error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg)); + } + }); + } + + return params; + }; + + const swalPrefix = 'swal2-'; + const prefix = items => { + const result = {}; + + for (const i in items) { + result[items[i]] = swalPrefix + items[i]; + } + + return result; + }; + const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']); + const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']); + + const getContainer = () => document.body.querySelector(".".concat(swalClasses.container)); + const elementBySelector = selectorString => { + const container = getContainer(); + return container ? container.querySelector(selectorString) : null; + }; + + const elementByClass = className => { + return elementBySelector(".".concat(className)); + }; + + const getPopup = () => elementByClass(swalClasses.popup); + const getIcon = () => elementByClass(swalClasses.icon); + const getTitle = () => elementByClass(swalClasses.title); + const getHtmlContainer = () => elementByClass(swalClasses['html-container']); + const getImage = () => elementByClass(swalClasses.image); + const getProgressSteps = () => elementByClass(swalClasses['progress-steps']); + const getValidationMessage = () => elementByClass(swalClasses['validation-message']); + const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm)); + const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny)); + const getInputLabel = () => elementByClass(swalClasses['input-label']); + const getLoader = () => elementBySelector(".".concat(swalClasses.loader)); + const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel)); + const getActions = () => elementByClass(swalClasses.actions); + const getFooter = () => elementByClass(swalClasses.footer); + const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']); + const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js + + const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n"; + const getFocusableElements = () => { + const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex + .sort((a, b) => { + a = parseInt(a.getAttribute('tabindex')); + b = parseInt(b.getAttribute('tabindex')); + + if (a > b) { + return 1; + } else if (a < b) { + return -1; + } + + return 0; + }); + const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1'); + return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el)); + }; + const isModal = () => { + return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']); + }; + const isToast = () => { + return document.body.classList.contains(swalClasses['toast-shown']); + }; + const isLoading = () => { + return getPopup().hasAttribute('data-loading'); + }; + + const states = { + previousBodyPadding: null + }; + const setInnerHtml = (elem, html) => { + // #1926 + elem.textContent = ''; + + if (html) { + const parser = new DOMParser(); + const parsed = parser.parseFromString(html, "text/html"); + toArray(parsed.querySelector('head').childNodes).forEach(child => { + elem.appendChild(child); + }); + toArray(parsed.querySelector('body').childNodes).forEach(child => { + elem.appendChild(child); + }); + } + }; + const hasClass = (elem, className) => { + if (!className) { + return false; + } + + const classList = className.split(/\s+/); + + for (let i = 0; i < classList.length; i++) { + if (!elem.classList.contains(classList[i])) { + return false; + } + } + + return true; + }; + + const removeCustomClasses = (elem, params) => { + toArray(elem.classList).forEach(className => { + if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) { + elem.classList.remove(className); + } + }); + }; + + const applyCustomClass = (elem, params, className) => { + removeCustomClasses(elem, params); + + if (params.customClass && params.customClass[className]) { + if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) { + return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\"")); + } + + addClass(elem, params.customClass[className]); + } + }; + const getInput = (popup, inputType) => { + if (!inputType) { + return null; + } + + switch (inputType) { + case 'select': + case 'textarea': + case 'file': + return getChildByClass(popup, swalClasses[inputType]); + + case 'checkbox': + return popup.querySelector(".".concat(swalClasses.checkbox, " input")); + + case 'radio': + return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child")); + + case 'range': + return popup.querySelector(".".concat(swalClasses.range, " input")); + + default: + return getChildByClass(popup, swalClasses.input); + } + }; + const focusInput = input => { + input.focus(); // place cursor at end of text in text input + + if (input.type !== 'file') { + // http://stackoverflow.com/a/2345915 + const val = input.value; + input.value = ''; + input.value = val; + } + }; + const toggleClass = (target, classList, condition) => { + if (!target || !classList) { + return; + } + + if (typeof classList === 'string') { + classList = classList.split(/\s+/).filter(Boolean); + } + + classList.forEach(className => { + if (target.forEach) { + target.forEach(elem => { + condition ? elem.classList.add(className) : elem.classList.remove(className); + }); + } else { + condition ? target.classList.add(className) : target.classList.remove(className); + } + }); + }; + const addClass = (target, classList) => { + toggleClass(target, classList, true); + }; + const removeClass = (target, classList) => { + toggleClass(target, classList, false); + }; + const getChildByClass = (elem, className) => { + for (let i = 0; i < elem.childNodes.length; i++) { + if (hasClass(elem.childNodes[i], className)) { + return elem.childNodes[i]; + } + } + }; + const applyNumericalStyle = (elem, property, value) => { + if (value === "".concat(parseInt(value))) { + value = parseInt(value); + } + + if (value || parseInt(value) === 0) { + elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value; + } else { + elem.style.removeProperty(property); + } + }; + const show = (elem, display = 'flex') => { + elem.style.display = display; + }; + const hide = elem => { + elem.style.display = 'none'; + }; + const setStyle = (parent, selector, property, value) => { + const el = parent.querySelector(selector); + + if (el) { + el.style[property] = value; + } + }; + const toggle = (elem, condition, display) => { + condition ? show(elem, display) : hide(elem); + }; // borrowed from jquery $(elem).is(':visible') implementation + + const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length)); + const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton()); + const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119 + + const hasCssAnimation = elem => { + const style = window.getComputedStyle(elem); + const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0'); + const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0'); + return animDuration > 0 || transDuration > 0; + }; + const animateTimerProgressBar = (timer, reset = false) => { + const timerProgressBar = getTimerProgressBar(); + + if (isVisible(timerProgressBar)) { + if (reset) { + timerProgressBar.style.transition = 'none'; + timerProgressBar.style.width = '100%'; + } + + setTimeout(() => { + timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear"); + timerProgressBar.style.width = '0%'; + }, 10); + } + }; + const stopTimerProgressBar = () => { + const timerProgressBar = getTimerProgressBar(); + const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + timerProgressBar.style.removeProperty('transition'); + timerProgressBar.style.width = '100%'; + const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100); + timerProgressBar.style.removeProperty('transition'); + timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%"); + }; + + // Detect Node env + const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined'; + + const sweetHTML = "\n
\n \n
    \n
    \n \n

    \n
    \n \n \n
    \n \n \n
    \n \n
    \n \n \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n").replace(/(^|\n)\s*/g, ''); + + const resetOldContainer = () => { + const oldContainer = getContainer(); + + if (!oldContainer) { + return false; + } + + oldContainer.remove(); + removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]); + return true; + }; + + const resetValidationMessage = () => { + if (Swal.isVisible()) { + Swal.resetValidationMessage(); + } + }; + + const addInputChangeListeners = () => { + const popup = getPopup(); + const input = getChildByClass(popup, swalClasses.input); + const file = getChildByClass(popup, swalClasses.file); + const range = popup.querySelector(".".concat(swalClasses.range, " input")); + const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output")); + const select = getChildByClass(popup, swalClasses.select); + const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input")); + const textarea = getChildByClass(popup, swalClasses.textarea); + input.oninput = resetValidationMessage; + file.onchange = resetValidationMessage; + select.onchange = resetValidationMessage; + checkbox.onchange = resetValidationMessage; + textarea.oninput = resetValidationMessage; + + range.oninput = () => { + resetValidationMessage(); + rangeOutput.value = range.value; + }; + + range.onchange = () => { + resetValidationMessage(); + range.nextSibling.value = range.value; + }; + }; + + const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target; + + const setupAccessibility = params => { + const popup = getPopup(); + popup.setAttribute('role', params.toast ? 'alert' : 'dialog'); + popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); + + if (!params.toast) { + popup.setAttribute('aria-modal', 'true'); + } + }; + + const setupRTL = targetElement => { + if (window.getComputedStyle(targetElement).direction === 'rtl') { + addClass(getContainer(), swalClasses.rtl); + } + }; + /* + * Add modal + backdrop to DOM + */ + + + const init = params => { + // Clean up the old popup container if it exists + const oldContainerExisted = resetOldContainer(); + /* istanbul ignore if */ + + if (isNodeEnv()) { + error('SweetAlert2 requires document to initialize'); + return; + } + + const container = document.createElement('div'); + container.className = swalClasses.container; + + if (oldContainerExisted) { + addClass(container, swalClasses['no-transition']); + } + + setInnerHtml(container, sweetHTML); + const targetElement = getTarget(params.target); + targetElement.appendChild(container); + setupAccessibility(params); + setupRTL(targetElement); + addInputChangeListeners(); + }; + + const parseHtmlToContainer = (param, target) => { + // DOM element + if (param instanceof HTMLElement) { + target.appendChild(param); // Object + } else if (typeof param === 'object') { + handleObject(param, target); // Plain string + } else if (param) { + setInnerHtml(target, param); + } + }; + + const handleObject = (param, target) => { + // JQuery element(s) + if (param.jquery) { + handleJqueryElem(target, param); // For other objects use their string representation + } else { + setInnerHtml(target, param.toString()); + } + }; + + const handleJqueryElem = (target, elem) => { + target.textContent = ''; + + if (0 in elem) { + for (let i = 0; (i in elem); i++) { + target.appendChild(elem[i].cloneNode(true)); + } + } else { + target.appendChild(elem.cloneNode(true)); + } + }; + + const animationEndEvent = (() => { + // Prevent run in Node env + + /* istanbul ignore if */ + if (isNodeEnv()) { + return false; + } + + const testEl = document.createElement('div'); + const transEndEventNames = { + WebkitAnimation: 'webkitAnimationEnd', + OAnimation: 'oAnimationEnd oanimationend', + animation: 'animationend' + }; + + for (const i in transEndEventNames) { + if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') { + return transEndEventNames[i]; + } + } + + return false; + })(); + + // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js + + const measureScrollbar = () => { + const scrollDiv = document.createElement('div'); + scrollDiv.className = swalClasses['scrollbar-measure']; + document.body.appendChild(scrollDiv); + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; + + const renderActions = (instance, params) => { + const actions = getActions(); + const loader = getLoader(); + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); // Actions (buttons) wrapper + + if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) { + hide(actions); + } else { + show(actions); + } // Custom class + + + applyCustomClass(actions, params, 'actions'); // Render buttons + + renderButton(confirmButton, 'confirm', params); + renderButton(denyButton, 'deny', params); + renderButton(cancelButton, 'cancel', params); + handleButtonsStyling(confirmButton, denyButton, cancelButton, params); + + if (params.reverseButtons) { + actions.insertBefore(cancelButton, loader); + actions.insertBefore(denyButton, loader); + actions.insertBefore(confirmButton, loader); + } // Loader + + + setInnerHtml(loader, params.loaderHtml); + applyCustomClass(loader, params, 'loader'); + }; + + function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) { + if (!params.buttonsStyling) { + return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled); + } + + addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors + + if (params.confirmButtonColor) { + confirmButton.style.backgroundColor = params.confirmButtonColor; + addClass(confirmButton, swalClasses['default-outline']); + } + + if (params.denyButtonColor) { + denyButton.style.backgroundColor = params.denyButtonColor; + addClass(denyButton, swalClasses['default-outline']); + } + + if (params.cancelButtonColor) { + cancelButton.style.backgroundColor = params.cancelButtonColor; + addClass(cancelButton, swalClasses['default-outline']); + } + } + + function renderButton(button, buttonType, params) { + toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block'); + setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text + + button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label + // Add buttons custom classes + + button.className = swalClasses[buttonType]; + applyCustomClass(button, params, "".concat(buttonType, "Button")); + addClass(button, params["".concat(buttonType, "ButtonClass")]); + } + + function handleBackdropParam(container, backdrop) { + if (typeof backdrop === 'string') { + container.style.background = backdrop; + } else if (!backdrop) { + addClass([document.documentElement, document.body], swalClasses['no-backdrop']); + } + } + + function handlePositionParam(container, position) { + if (position in swalClasses) { + addClass(container, swalClasses[position]); + } else { + warn('The "position" parameter is not valid, defaulting to "center"'); + addClass(container, swalClasses.center); + } + } + + function handleGrowParam(container, grow) { + if (grow && typeof grow === 'string') { + const growClass = "grow-".concat(grow); + + if (growClass in swalClasses) { + addClass(container, swalClasses[growClass]); + } + } + } + + const renderContainer = (instance, params) => { + const container = getContainer(); + + if (!container) { + return; + } + + handleBackdropParam(container, params.backdrop); + handlePositionParam(container, params.position); + handleGrowParam(container, params.grow); // Custom class + + applyCustomClass(container, params, 'container'); + }; + + /** + * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. + * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` + * This is the approach that Babel will probably take to implement private methods/fields + * https://github.com/tc39/proposal-private-methods + * https://github.com/babel/babel/pull/7555 + * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* + * then we can use that language feature. + */ + var privateProps = { + promise: new WeakMap(), + innerParams: new WeakMap(), + domCache: new WeakMap() + }; + + const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; + const renderInput = (instance, params) => { + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(instance); + const rerender = !innerParams || params.input !== innerParams.input; + inputTypes.forEach(inputType => { + const inputClass = swalClasses[inputType]; + const inputContainer = getChildByClass(popup, inputClass); // set attributes + + setAttributes(inputType, params.inputAttributes); // set class + + inputContainer.className = inputClass; + + if (rerender) { + hide(inputContainer); + } + }); + + if (params.input) { + if (rerender) { + showInput(params); + } // set custom class + + + setCustomClass(params); + } + }; + + const showInput = params => { + if (!renderInputType[params.input]) { + return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\"")); + } + + const inputContainer = getInputContainer(params.input); + const input = renderInputType[params.input](inputContainer, params); + show(input); // input autofocus + + setTimeout(() => { + focusInput(input); + }); + }; + + const removeAttributes = input => { + for (let i = 0; i < input.attributes.length; i++) { + const attrName = input.attributes[i].name; + + if (!['type', 'value', 'style'].includes(attrName)) { + input.removeAttribute(attrName); + } + } + }; + + const setAttributes = (inputType, inputAttributes) => { + const input = getInput(getPopup(), inputType); + + if (!input) { + return; + } + + removeAttributes(input); + + for (const attr in inputAttributes) { + input.setAttribute(attr, inputAttributes[attr]); + } + }; + + const setCustomClass = params => { + const inputContainer = getInputContainer(params.input); + + if (params.customClass) { + addClass(inputContainer, params.customClass.input); + } + }; + + const setInputPlaceholder = (input, params) => { + if (!input.placeholder || params.inputPlaceholder) { + input.placeholder = params.inputPlaceholder; + } + }; + + const setInputLabel = (input, prependTo, params) => { + if (params.inputLabel) { + input.id = swalClasses.input; + const label = document.createElement('label'); + const labelClass = swalClasses['input-label']; + label.setAttribute('for', input.id); + label.className = labelClass; + addClass(label, params.customClass.inputLabel); + label.innerText = params.inputLabel; + prependTo.insertAdjacentElement('beforebegin', label); + } + }; + + const getInputContainer = inputType => { + const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input; + return getChildByClass(getPopup(), inputClass); + }; + + const renderInputType = {}; + + renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => { + if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') { + input.value = params.inputValue; + } else if (!isPromise(params.inputValue)) { + warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\"")); + } + + setInputLabel(input, input, params); + setInputPlaceholder(input, params); + input.type = params.input; + return input; + }; + + renderInputType.file = (input, params) => { + setInputLabel(input, input, params); + setInputPlaceholder(input, params); + return input; + }; + + renderInputType.range = (range, params) => { + const rangeInput = range.querySelector('input'); + const rangeOutput = range.querySelector('output'); + rangeInput.value = params.inputValue; + rangeInput.type = params.input; + rangeOutput.value = params.inputValue; + setInputLabel(rangeInput, range, params); + return range; + }; + + renderInputType.select = (select, params) => { + select.textContent = ''; + + if (params.inputPlaceholder) { + const placeholder = document.createElement('option'); + setInnerHtml(placeholder, params.inputPlaceholder); + placeholder.value = ''; + placeholder.disabled = true; + placeholder.selected = true; + select.appendChild(placeholder); + } + + setInputLabel(select, select, params); + return select; + }; + + renderInputType.radio = radio => { + radio.textContent = ''; + return radio; + }; + + renderInputType.checkbox = (checkboxContainer, params) => { + const checkbox = getInput(getPopup(), 'checkbox'); + checkbox.value = 1; + checkbox.id = swalClasses.checkbox; + checkbox.checked = Boolean(params.inputValue); + const label = checkboxContainer.querySelector('span'); + setInnerHtml(label, params.inputPlaceholder); + return checkboxContainer; + }; + + renderInputType.textarea = (textarea, params) => { + textarea.value = params.inputValue; + setInputPlaceholder(textarea, params); + setInputLabel(textarea, textarea, params); + + const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); + + setTimeout(() => { + // #2291 + if ('MutationObserver' in window) { + // #1699 + const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); + + const textareaResizeHandler = () => { + const textareaWidth = textarea.offsetWidth + getMargin(textarea); + + if (textareaWidth > initialPopupWidth) { + getPopup().style.width = "".concat(textareaWidth, "px"); + } else { + getPopup().style.width = null; + } + }; + + new MutationObserver(textareaResizeHandler).observe(textarea, { + attributes: true, + attributeFilter: ['style'] + }); + } + }); + return textarea; + }; + + const renderContent = (instance, params) => { + const htmlContainer = getHtmlContainer(); + applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML + + if (params.html) { + parseHtmlToContainer(params.html, htmlContainer); + show(htmlContainer, 'block'); // Content as plain text + } else if (params.text) { + htmlContainer.textContent = params.text; + show(htmlContainer, 'block'); // No content + } else { + hide(htmlContainer); + } + + renderInput(instance, params); + }; + + const renderFooter = (instance, params) => { + const footer = getFooter(); + toggle(footer, params.footer); + + if (params.footer) { + parseHtmlToContainer(params.footer, footer); + } // Custom class + + + applyCustomClass(footer, params, 'footer'); + }; + + const renderCloseButton = (instance, params) => { + const closeButton = getCloseButton(); + setInnerHtml(closeButton, params.closeButtonHtml); // Custom class + + applyCustomClass(closeButton, params, 'closeButton'); + toggle(closeButton, params.showCloseButton); + closeButton.setAttribute('aria-label', params.closeButtonAriaLabel); + }; + + const renderIcon = (instance, params) => { + const innerParams = privateProps.innerParams.get(instance); + const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon + + if (innerParams && params.icon === innerParams.icon) { + // Custom or default content + setContent(icon, params); + applyStyles(icon, params); + return; + } + + if (!params.icon && !params.iconHtml) { + return hide(icon); + } + + if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) { + error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\"")); + return hide(icon); + } + + show(icon); // Custom or default content + + setContent(icon, params); + applyStyles(icon, params); // Animate icon + + addClass(icon, params.showClass.icon); + }; + + const applyStyles = (icon, params) => { + for (const iconType in iconTypes) { + if (params.icon !== iconType) { + removeClass(icon, iconTypes[iconType]); + } + } + + addClass(icon, iconTypes[params.icon]); // Icon color + + setColor(icon, params); // Success icon background color + + adjustSuccessIconBackgoundColor(); // Custom class + + applyCustomClass(icon, params, 'icon'); + }; // Adjust success icon background color to match the popup background color + + + const adjustSuccessIconBackgoundColor = () => { + const popup = getPopup(); + const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); + const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); + + for (let i = 0; i < successIconParts.length; i++) { + successIconParts[i].style.backgroundColor = popupBackgroundColor; + } + }; + + const setContent = (icon, params) => { + icon.textContent = ''; + + if (params.iconHtml) { + setInnerHtml(icon, iconContent(params.iconHtml)); + } else if (params.icon === 'success') { + setInnerHtml(icon, "\n
    \n \n
    \n
    \n "); + } else if (params.icon === 'error') { + setInnerHtml(icon, "\n \n \n \n \n "); + } else { + const defaultIconHtml = { + question: '?', + warning: '!', + info: 'i' + }; + setInnerHtml(icon, iconContent(defaultIconHtml[params.icon])); + } + }; + + const setColor = (icon, params) => { + if (!params.iconColor) { + return; + } + + icon.style.color = params.iconColor; + icon.style.borderColor = params.iconColor; + + for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) { + setStyle(icon, sel, 'backgroundColor', params.iconColor); + } + + setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor); + }; + + const iconContent = content => "
    ").concat(content, "
    "); + + const renderImage = (instance, params) => { + const image = getImage(); + + if (!params.imageUrl) { + return hide(image); + } + + show(image, ''); // Src, alt + + image.setAttribute('src', params.imageUrl); + image.setAttribute('alt', params.imageAlt); // Width, height + + applyNumericalStyle(image, 'width', params.imageWidth); + applyNumericalStyle(image, 'height', params.imageHeight); // Class + + image.className = swalClasses.image; + applyCustomClass(image, params, 'image'); + }; + + const createStepElement = step => { + const stepEl = document.createElement('li'); + addClass(stepEl, swalClasses['progress-step']); + setInnerHtml(stepEl, step); + return stepEl; + }; + + const createLineElement = params => { + const lineEl = document.createElement('li'); + addClass(lineEl, swalClasses['progress-step-line']); + + if (params.progressStepsDistance) { + lineEl.style.width = params.progressStepsDistance; + } + + return lineEl; + }; + + const renderProgressSteps = (instance, params) => { + const progressStepsContainer = getProgressSteps(); + + if (!params.progressSteps || params.progressSteps.length === 0) { + return hide(progressStepsContainer); + } + + show(progressStepsContainer); + progressStepsContainer.textContent = ''; + + if (params.currentProgressStep >= params.progressSteps.length) { + warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); + } + + params.progressSteps.forEach((step, index) => { + const stepEl = createStepElement(step); + progressStepsContainer.appendChild(stepEl); + + if (index === params.currentProgressStep) { + addClass(stepEl, swalClasses['active-progress-step']); + } + + if (index !== params.progressSteps.length - 1) { + const lineEl = createLineElement(params); + progressStepsContainer.appendChild(lineEl); + } + }); + }; + + const renderTitle = (instance, params) => { + const title = getTitle(); + toggle(title, params.title || params.titleText, 'block'); + + if (params.title) { + parseHtmlToContainer(params.title, title); + } + + if (params.titleText) { + title.innerText = params.titleText; + } // Custom class + + + applyCustomClass(title, params, 'title'); + }; + + const renderPopup = (instance, params) => { + const container = getContainer(); + const popup = getPopup(); // Width + + if (params.toast) { + // #2170 + applyNumericalStyle(container, 'width', params.width); + popup.style.width = '100%'; + popup.insertBefore(getLoader(), getIcon()); + } else { + applyNumericalStyle(popup, 'width', params.width); + } // Padding + + + applyNumericalStyle(popup, 'padding', params.padding); // Background + + if (params.background) { + popup.style.background = params.background; + } + + hide(getValidationMessage()); // Classes + + addClasses(popup, params); + }; + + const addClasses = (popup, params) => { + // Default Class + showClass when updating Swal.update({}) + popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : ''); + + if (params.toast) { + addClass([document.documentElement, document.body], swalClasses['toast-shown']); + addClass(popup, swalClasses.toast); + } else { + addClass(popup, swalClasses.modal); + } // Custom class + + + applyCustomClass(popup, params, 'popup'); + + if (typeof params.customClass === 'string') { + addClass(popup, params.customClass); + } // Icon class (#1842) + + + if (params.icon) { + addClass(popup, swalClasses["icon-".concat(params.icon)]); + } + }; + + const render = (instance, params) => { + renderPopup(instance, params); + renderContainer(instance, params); + renderProgressSteps(instance, params); + renderIcon(instance, params); + renderImage(instance, params); + renderTitle(instance, params); + renderCloseButton(instance, params); + renderContent(instance, params); + renderActions(instance, params); + renderFooter(instance, params); + + if (typeof params.didRender === 'function') { + params.didRender(getPopup()); + } + }; + + /* + * Global function to determine if SweetAlert2 popup is shown + */ + + const isVisible$1 = () => { + return isVisible(getPopup()); + }; + /* + * Global function to click 'Confirm' button + */ + + const clickConfirm = () => getConfirmButton() && getConfirmButton().click(); + /* + * Global function to click 'Deny' button + */ + + const clickDeny = () => getDenyButton() && getDenyButton().click(); + /* + * Global function to click 'Cancel' button + */ + + const clickCancel = () => getCancelButton() && getCancelButton().click(); + + function fire(...args) { + const Swal = this; + return new Swal(...args); + } + + /** + * Returns an extended version of `Swal` containing `params` as defaults. + * Useful for reusing Swal configuration. + * + * For example: + * + * Before: + * const textPromptOptions = { input: 'text', showCancelButton: true } + * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' }) + * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' }) + * + * After: + * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true }) + * const {value: firstName} = await TextPrompt('What is your first name?') + * const {value: lastName} = await TextPrompt('What is your last name?') + * + * @param mixinParams + */ + function mixin(mixinParams) { + class MixinSwal extends this { + _main(params, priorityMixinParams) { + return super._main(params, Object.assign({}, mixinParams, priorityMixinParams)); + } + + } + + return MixinSwal; + } + + /** + * Shows loader (spinner), this is useful with AJAX requests. + * By default the loader be shown instead of the "Confirm" button. + */ + + const showLoading = buttonToReplace => { + let popup = getPopup(); + + if (!popup) { + Swal.fire(); + } + + popup = getPopup(); + const loader = getLoader(); + + if (isToast()) { + hide(getIcon()); + } else { + replaceButton(popup, buttonToReplace); + } + + show(loader); + popup.setAttribute('data-loading', true); + popup.setAttribute('aria-busy', true); + popup.focus(); + }; + + const replaceButton = (popup, buttonToReplace) => { + const actions = getActions(); + const loader = getLoader(); + + if (!buttonToReplace && isVisible(getConfirmButton())) { + buttonToReplace = getConfirmButton(); + } + + show(actions); + + if (buttonToReplace) { + hide(buttonToReplace); + loader.setAttribute('data-button-to-replace', buttonToReplace.className); + } + + loader.parentNode.insertBefore(loader, buttonToReplace); + addClass([popup, actions], swalClasses.loading); + }; + + const RESTORE_FOCUS_TIMEOUT = 100; + + const globalState = {}; + + const focusPreviousActiveElement = () => { + if (globalState.previousActiveElement && globalState.previousActiveElement.focus) { + globalState.previousActiveElement.focus(); + globalState.previousActiveElement = null; + } else if (document.body) { + document.body.focus(); + } + }; // Restore previous active (focused) element + + + const restoreActiveElement = returnFocus => { + return new Promise(resolve => { + if (!returnFocus) { + return resolve(); + } + + const x = window.scrollX; + const y = window.scrollY; + globalState.restoreFocusTimeout = setTimeout(() => { + focusPreviousActiveElement(); + resolve(); + }, RESTORE_FOCUS_TIMEOUT); // issues/900 + + window.scrollTo(x, y); + }); + }; + + /** + * If `timer` parameter is set, returns number of milliseconds of timer remained. + * Otherwise, returns undefined. + */ + + const getTimerLeft = () => { + return globalState.timeout && globalState.timeout.getTimerLeft(); + }; + /** + * Stop timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const stopTimer = () => { + if (globalState.timeout) { + stopTimerProgressBar(); + return globalState.timeout.stop(); + } + }; + /** + * Resume timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const resumeTimer = () => { + if (globalState.timeout) { + const remaining = globalState.timeout.start(); + animateTimerProgressBar(remaining); + return remaining; + } + }; + /** + * Resume timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const toggleTimer = () => { + const timer = globalState.timeout; + return timer && (timer.running ? stopTimer() : resumeTimer()); + }; + /** + * Increase timer. Returns number of milliseconds of an updated timer. + * If `timer` parameter isn't set, returns undefined. + */ + + const increaseTimer = n => { + if (globalState.timeout) { + const remaining = globalState.timeout.increase(n); + animateTimerProgressBar(remaining, true); + return remaining; + } + }; + /** + * Check if timer is running. Returns true if timer is running + * or false if timer is paused or stopped. + * If `timer` parameter isn't set, returns undefined + */ + + const isTimerRunning = () => { + return globalState.timeout && globalState.timeout.isRunning(); + }; + + let bodyClickListenerAdded = false; + const clickHandlers = {}; + function bindClickHandler(attr = 'data-swal-template') { + clickHandlers[attr] = this; + + if (!bodyClickListenerAdded) { + document.body.addEventListener('click', bodyClickListener); + bodyClickListenerAdded = true; + } + } + + const bodyClickListener = event => { + for (let el = event.target; el && el !== document; el = el.parentNode) { + for (const attr in clickHandlers) { + const template = el.getAttribute(attr); + + if (template) { + clickHandlers[attr].fire({ + template + }); + return; + } + } + } + }; + + const defaultParams = { + title: '', + titleText: '', + text: '', + html: '', + footer: '', + icon: undefined, + iconColor: undefined, + iconHtml: undefined, + template: undefined, + toast: false, + showClass: { + popup: 'swal2-show', + backdrop: 'swal2-backdrop-show', + icon: 'swal2-icon-show' + }, + hideClass: { + popup: 'swal2-hide', + backdrop: 'swal2-backdrop-hide', + icon: 'swal2-icon-hide' + }, + customClass: {}, + target: 'body', + backdrop: true, + heightAuto: true, + allowOutsideClick: true, + allowEscapeKey: true, + allowEnterKey: true, + stopKeydownPropagation: true, + keydownListenerCapture: false, + showConfirmButton: true, + showDenyButton: false, + showCancelButton: false, + preConfirm: undefined, + preDeny: undefined, + confirmButtonText: 'OK', + confirmButtonAriaLabel: '', + confirmButtonColor: undefined, + denyButtonText: 'No', + denyButtonAriaLabel: '', + denyButtonColor: undefined, + cancelButtonText: 'Cancel', + cancelButtonAriaLabel: '', + cancelButtonColor: undefined, + buttonsStyling: true, + reverseButtons: false, + focusConfirm: true, + focusDeny: false, + focusCancel: false, + returnFocus: true, + showCloseButton: false, + closeButtonHtml: '×', + closeButtonAriaLabel: 'Close this dialog', + loaderHtml: '', + showLoaderOnConfirm: false, + showLoaderOnDeny: false, + imageUrl: undefined, + imageWidth: undefined, + imageHeight: undefined, + imageAlt: '', + timer: undefined, + timerProgressBar: false, + width: undefined, + padding: undefined, + background: undefined, + input: undefined, + inputPlaceholder: '', + inputLabel: '', + inputValue: '', + inputOptions: {}, + inputAutoTrim: true, + inputAttributes: {}, + inputValidator: undefined, + returnInputValueOnDeny: false, + validationMessage: undefined, + grow: false, + position: 'center', + progressSteps: [], + currentProgressStep: undefined, + progressStepsDistance: undefined, + willOpen: undefined, + didOpen: undefined, + didRender: undefined, + willClose: undefined, + didClose: undefined, + didDestroy: undefined, + scrollbarPadding: true + }; + const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose']; + const deprecatedParams = {}; + const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture']; + /** + * Is valid parameter + * @param {String} paramName + */ + + const isValidParameter = paramName => { + return Object.prototype.hasOwnProperty.call(defaultParams, paramName); + }; + /** + * Is valid parameter for Swal.update() method + * @param {String} paramName + */ + + const isUpdatableParameter = paramName => { + return updatableParams.indexOf(paramName) !== -1; + }; + /** + * Is deprecated parameter + * @param {String} paramName + */ + + const isDeprecatedParameter = paramName => { + return deprecatedParams[paramName]; + }; + + const checkIfParamIsValid = param => { + if (!isValidParameter(param)) { + warn("Unknown parameter \"".concat(param, "\"")); + } + }; + + const checkIfToastParamIsValid = param => { + if (toastIncompatibleParams.includes(param)) { + warn("The parameter \"".concat(param, "\" is incompatible with toasts")); + } + }; + + const checkIfParamIsDeprecated = param => { + if (isDeprecatedParameter(param)) { + warnAboutDeprecation(param, isDeprecatedParameter(param)); + } + }; + /** + * Show relevant warnings for given params + * + * @param params + */ + + + const showWarningsForParams = params => { + if (!params.backdrop && params.allowOutsideClick) { + warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); + } + + for (const param in params) { + checkIfParamIsValid(param); + + if (params.toast) { + checkIfToastParamIsValid(param); + } + + checkIfParamIsDeprecated(param); + } + }; + + + + var staticMethods = /*#__PURE__*/Object.freeze({ + isValidParameter: isValidParameter, + isUpdatableParameter: isUpdatableParameter, + isDeprecatedParameter: isDeprecatedParameter, + argsToParams: argsToParams, + isVisible: isVisible$1, + clickConfirm: clickConfirm, + clickDeny: clickDeny, + clickCancel: clickCancel, + getContainer: getContainer, + getPopup: getPopup, + getTitle: getTitle, + getHtmlContainer: getHtmlContainer, + getImage: getImage, + getIcon: getIcon, + getInputLabel: getInputLabel, + getCloseButton: getCloseButton, + getActions: getActions, + getConfirmButton: getConfirmButton, + getDenyButton: getDenyButton, + getCancelButton: getCancelButton, + getLoader: getLoader, + getFooter: getFooter, + getTimerProgressBar: getTimerProgressBar, + getFocusableElements: getFocusableElements, + getValidationMessage: getValidationMessage, + isLoading: isLoading, + fire: fire, + mixin: mixin, + showLoading: showLoading, + enableLoading: showLoading, + getTimerLeft: getTimerLeft, + stopTimer: stopTimer, + resumeTimer: resumeTimer, + toggleTimer: toggleTimer, + increaseTimer: increaseTimer, + isTimerRunning: isTimerRunning, + bindClickHandler: bindClickHandler + }); + + /** + * Hides loader and shows back the button which was hidden by .showLoading() + */ + + function hideLoading() { + // do nothing if popup is closed + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams) { + return; + } + + const domCache = privateProps.domCache.get(this); + hide(domCache.loader); + + if (isToast()) { + if (innerParams.icon) { + show(getIcon()); + } + } else { + showRelatedButton(domCache); + } + + removeClass([domCache.popup, domCache.actions], swalClasses.loading); + domCache.popup.removeAttribute('aria-busy'); + domCache.popup.removeAttribute('data-loading'); + domCache.confirmButton.disabled = false; + domCache.denyButton.disabled = false; + domCache.cancelButton.disabled = false; + } + + const showRelatedButton = domCache => { + const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace')); + + if (buttonToReplace.length) { + show(buttonToReplace[0], 'inline-block'); + } else if (allButtonsAreHidden()) { + hide(domCache.actions); + } + }; + + function getInput$1(instance) { + const innerParams = privateProps.innerParams.get(instance || this); + const domCache = privateProps.domCache.get(instance || this); + + if (!domCache) { + return null; + } + + return getInput(domCache.popup, innerParams.input); + } + + const fixScrollbar = () => { + // for queues, do not do this more than once + if (states.previousBodyPadding !== null) { + return; + } // if the body has overflow + + + if (document.body.scrollHeight > window.innerHeight) { + // add padding so the content doesn't shift after removal of scrollbar + states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right')); + document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px"); + } + }; + const undoScrollbar = () => { + if (states.previousBodyPadding !== null) { + document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px"); + states.previousBodyPadding = null; + } + }; + + /* istanbul ignore file */ + + const iOSfix = () => { + const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1; + + if (iOS && !hasClass(document.body, swalClasses.iosfix)) { + const offset = document.body.scrollTop; + document.body.style.top = "".concat(offset * -1, "px"); + addClass(document.body, swalClasses.iosfix); + lockBodyScroll(); + addBottomPaddingForTallPopups(); // #1948 + } + }; + + const addBottomPaddingForTallPopups = () => { + const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i); + + if (safari) { + const bottomPanelHeight = 44; + + if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) { + getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px"); + } + } + }; + + const lockBodyScroll = () => { + // #1246 + const container = getContainer(); + let preventTouchMove; + + container.ontouchstart = e => { + preventTouchMove = shouldPreventTouchMove(e); + }; + + container.ontouchmove = e => { + if (preventTouchMove) { + e.preventDefault(); + e.stopPropagation(); + } + }; + }; + + const shouldPreventTouchMove = event => { + const target = event.target; + const container = getContainer(); + + if (isStylys(event) || isZoom(event)) { + return false; + } + + if (target === container) { + return true; + } + + if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603 + target.tagName !== 'TEXTAREA' && // #2266 + !(isScrollable(getHtmlContainer()) && // #1944 + getHtmlContainer().contains(target))) { + return true; + } + + return false; + }; + + const isStylys = event => { + // #1786 + return event.touches && event.touches.length && event.touches[0].touchType === 'stylus'; + }; + + const isZoom = event => { + // #1891 + return event.touches && event.touches.length > 1; + }; + + const undoIOSfix = () => { + if (hasClass(document.body, swalClasses.iosfix)) { + const offset = parseInt(document.body.style.top, 10); + removeClass(document.body, swalClasses.iosfix); + document.body.style.top = ''; + document.body.scrollTop = offset * -1; + } + }; + + // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that + // elements not within the active modal dialog will not be surfaced if a user opens a screen + // reader’s list of elements (headings, form controls, landmarks, etc.) in the document. + + const setAriaHidden = () => { + const bodyChildren = toArray(document.body.children); + bodyChildren.forEach(el => { + if (el === getContainer() || el.contains(getContainer())) { + return; + } + + if (el.hasAttribute('aria-hidden')) { + el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden')); + } + + el.setAttribute('aria-hidden', 'true'); + }); + }; + const unsetAriaHidden = () => { + const bodyChildren = toArray(document.body.children); + bodyChildren.forEach(el => { + if (el.hasAttribute('data-previous-aria-hidden')) { + el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden')); + el.removeAttribute('data-previous-aria-hidden'); + } else { + el.removeAttribute('aria-hidden'); + } + }); + }; + + /** + * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. + * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` + * This is the approach that Babel will probably take to implement private methods/fields + * https://github.com/tc39/proposal-private-methods + * https://github.com/babel/babel/pull/7555 + * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* + * then we can use that language feature. + */ + var privateMethods = { + swalPromiseResolve: new WeakMap() + }; + + /* + * Instance method to close sweetAlert + */ + + function removePopupAndResetState(instance, container, returnFocus, didClose) { + if (isToast()) { + triggerDidCloseAndDispose(instance, didClose); + } else { + restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose)); + globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = false; + } + + const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088 + // for some reason removing the container in Safari will scroll the document to bottom + + if (isSafari) { + container.setAttribute('style', 'display:none !important'); + container.removeAttribute('class'); + container.innerHTML = ''; + } else { + container.remove(); + } + + if (isModal()) { + undoScrollbar(); + undoIOSfix(); + unsetAriaHidden(); + } + + removeBodyClasses(); + } + + function removeBodyClasses() { + removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]); + } + + function close(resolveValue) { + const popup = getPopup(); + + if (!popup) { + return; + } + + resolveValue = prepareResolveValue(resolveValue); + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) { + return; + } + + const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); + removeClass(popup, innerParams.showClass.popup); + addClass(popup, innerParams.hideClass.popup); + const backdrop = getContainer(); + removeClass(backdrop, innerParams.showClass.backdrop); + addClass(backdrop, innerParams.hideClass.backdrop); + handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise + + swalPromiseResolve(resolveValue); + } + + const prepareResolveValue = resolveValue => { + // When user calls Swal.close() + if (typeof resolveValue === 'undefined') { + return { + isConfirmed: false, + isDenied: false, + isDismissed: true + }; + } + + return Object.assign({ + isConfirmed: false, + isDenied: false, + isDismissed: false + }, resolveValue); + }; + + const handlePopupAnimation = (instance, popup, innerParams) => { + const container = getContainer(); // If animation is supported, animate + + const animationIsSupported = animationEndEvent && hasCssAnimation(popup); + + if (typeof innerParams.willClose === 'function') { + innerParams.willClose(popup); + } + + if (animationIsSupported) { + animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose); + } else { + // Otherwise, remove immediately + removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose); + } + }; + + const animatePopup = (instance, popup, container, returnFocus, didClose) => { + globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose); + popup.addEventListener(animationEndEvent, function (e) { + if (e.target === popup) { + globalState.swalCloseEventFinishedCallback(); + delete globalState.swalCloseEventFinishedCallback; + } + }); + }; + + const triggerDidCloseAndDispose = (instance, didClose) => { + setTimeout(() => { + if (typeof didClose === 'function') { + didClose.bind(instance.params)(); + } + + instance._destroy(); + }); + }; + + function setButtonsDisabled(instance, buttons, disabled) { + const domCache = privateProps.domCache.get(instance); + buttons.forEach(button => { + domCache[button].disabled = disabled; + }); + } + + function setInputDisabled(input, disabled) { + if (!input) { + return false; + } + + if (input.type === 'radio') { + const radiosContainer = input.parentNode.parentNode; + const radios = radiosContainer.querySelectorAll('input'); + + for (let i = 0; i < radios.length; i++) { + radios[i].disabled = disabled; + } + } else { + input.disabled = disabled; + } + } + + function enableButtons() { + setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false); + } + function disableButtons() { + setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true); + } + function enableInput() { + return setInputDisabled(this.getInput(), false); + } + function disableInput() { + return setInputDisabled(this.getInput(), true); + } + + function showValidationMessage(error) { + const domCache = privateProps.domCache.get(this); + const params = privateProps.innerParams.get(this); + setInnerHtml(domCache.validationMessage, error); + domCache.validationMessage.className = swalClasses['validation-message']; + + if (params.customClass && params.customClass.validationMessage) { + addClass(domCache.validationMessage, params.customClass.validationMessage); + } + + show(domCache.validationMessage); + const input = this.getInput(); + + if (input) { + input.setAttribute('aria-invalid', true); + input.setAttribute('aria-describedby', swalClasses['validation-message']); + focusInput(input); + addClass(input, swalClasses.inputerror); + } + } // Hide block with validation message + + function resetValidationMessage$1() { + const domCache = privateProps.domCache.get(this); + + if (domCache.validationMessage) { + hide(domCache.validationMessage); + } + + const input = this.getInput(); + + if (input) { + input.removeAttribute('aria-invalid'); + input.removeAttribute('aria-describedby'); + removeClass(input, swalClasses.inputerror); + } + } + + function getProgressSteps$1() { + const domCache = privateProps.domCache.get(this); + return domCache.progressSteps; + } + + class Timer { + constructor(callback, delay) { + this.callback = callback; + this.remaining = delay; + this.running = false; + this.start(); + } + + start() { + if (!this.running) { + this.running = true; + this.started = new Date(); + this.id = setTimeout(this.callback, this.remaining); + } + + return this.remaining; + } + + stop() { + if (this.running) { + this.running = false; + clearTimeout(this.id); + this.remaining -= new Date() - this.started; + } + + return this.remaining; + } + + increase(n) { + const running = this.running; + + if (running) { + this.stop(); + } + + this.remaining += n; + + if (running) { + this.start(); + } + + return this.remaining; + } + + getTimerLeft() { + if (this.running) { + this.stop(); + this.start(); + } + + return this.remaining; + } + + isRunning() { + return this.running; + } + + } + + var defaultInputValidators = { + email: (string, validationMessage) => { + return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address'); + }, + url: (string, validationMessage) => { + // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013 + return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL'); + } + }; + + function setDefaultInputValidators(params) { + // Use default `inputValidator` for supported input types if not provided + if (!params.inputValidator) { + Object.keys(defaultInputValidators).forEach(key => { + if (params.input === key) { + params.inputValidator = defaultInputValidators[key]; + } + }); + } + } + + function validateCustomTargetElement(params) { + // Determine if the custom target element is valid + if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) { + warn('Target parameter is not valid, defaulting to "body"'); + params.target = 'body'; + } + } + /** + * Set type, text and actions on popup + * + * @param params + * @returns {boolean} + */ + + + function setParameters(params) { + setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm + + if (params.showLoaderOnConfirm && !params.preConfirm) { + warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request'); + } + + validateCustomTargetElement(params); // Replace newlines with
    in title + + if (typeof params.title === 'string') { + params.title = params.title.split('\n').join('
    '); + } + + init(params); + } + + const swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; + const getTemplateParams = params => { + const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template; + + if (!template) { + return {}; + } + + const templateContent = template.content; + showWarningsForElements(templateContent); + const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); + return result; + }; + + const getSwalParams = templateContent => { + const result = {}; + toArray(templateContent.querySelectorAll('swal-param')).forEach(param => { + showWarningsForAttributes(param, ['name', 'value']); + const paramName = param.getAttribute('name'); + let value = param.getAttribute('value'); + + if (typeof defaultParams[paramName] === 'boolean' && value === 'false') { + value = false; + } + + if (typeof defaultParams[paramName] === 'object') { + value = JSON.parse(value); + } + + result[paramName] = value; + }); + return result; + }; + + const getSwalButtons = templateContent => { + const result = {}; + toArray(templateContent.querySelectorAll('swal-button')).forEach(button => { + showWarningsForAttributes(button, ['type', 'color', 'aria-label']); + const type = button.getAttribute('type'); + result["".concat(type, "ButtonText")] = button.innerHTML; + result["show".concat(capitalizeFirstLetter(type), "Button")] = true; + + if (button.hasAttribute('color')) { + result["".concat(type, "ButtonColor")] = button.getAttribute('color'); + } + + if (button.hasAttribute('aria-label')) { + result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label'); + } + }); + return result; + }; + + const getSwalImage = templateContent => { + const result = {}; + const image = templateContent.querySelector('swal-image'); + + if (image) { + showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']); + + if (image.hasAttribute('src')) { + result.imageUrl = image.getAttribute('src'); + } + + if (image.hasAttribute('width')) { + result.imageWidth = image.getAttribute('width'); + } + + if (image.hasAttribute('height')) { + result.imageHeight = image.getAttribute('height'); + } + + if (image.hasAttribute('alt')) { + result.imageAlt = image.getAttribute('alt'); + } + } + + return result; + }; + + const getSwalIcon = templateContent => { + const result = {}; + const icon = templateContent.querySelector('swal-icon'); + + if (icon) { + showWarningsForAttributes(icon, ['type', 'color']); + + if (icon.hasAttribute('type')) { + result.icon = icon.getAttribute('type'); + } + + if (icon.hasAttribute('color')) { + result.iconColor = icon.getAttribute('color'); + } + + result.iconHtml = icon.innerHTML; + } + + return result; + }; + + const getSwalInput = templateContent => { + const result = {}; + const input = templateContent.querySelector('swal-input'); + + if (input) { + showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']); + result.input = input.getAttribute('type') || 'text'; + + if (input.hasAttribute('label')) { + result.inputLabel = input.getAttribute('label'); + } + + if (input.hasAttribute('placeholder')) { + result.inputPlaceholder = input.getAttribute('placeholder'); + } + + if (input.hasAttribute('value')) { + result.inputValue = input.getAttribute('value'); + } + } + + const inputOptions = templateContent.querySelectorAll('swal-input-option'); + + if (inputOptions.length) { + result.inputOptions = {}; + toArray(inputOptions).forEach(option => { + showWarningsForAttributes(option, ['value']); + const optionValue = option.getAttribute('value'); + const optionName = option.innerHTML; + result.inputOptions[optionValue] = optionName; + }); + } + + return result; + }; + + const getSwalStringParams = (templateContent, paramNames) => { + const result = {}; + + for (const i in paramNames) { + const paramName = paramNames[i]; + const tag = templateContent.querySelector(paramName); + + if (tag) { + showWarningsForAttributes(tag, []); + result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim(); + } + } + + return result; + }; + + const showWarningsForElements = template => { + const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); + toArray(template.children).forEach(el => { + const tagName = el.tagName.toLowerCase(); + + if (allowedElements.indexOf(tagName) === -1) { + warn("Unrecognized element <".concat(tagName, ">")); + } + }); + }; + + const showWarningsForAttributes = (el, allowedAttributes) => { + toArray(el.attributes).forEach(attribute => { + if (allowedAttributes.indexOf(attribute.name) === -1) { + warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]); + } + }); + }; + + const SHOW_CLASS_TIMEOUT = 10; + /** + * Open popup, add necessary classes and styles, fix scrollbar + * + * @param params + */ + + const openPopup = params => { + const container = getContainer(); + const popup = getPopup(); + + if (typeof params.willOpen === 'function') { + params.willOpen(popup); + } + + const bodyStyles = window.getComputedStyle(document.body); + const initialBodyOverflow = bodyStyles.overflowY; + addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto' + + setTimeout(() => { + setScrollingVisibility(container, popup); + }, SHOW_CLASS_TIMEOUT); + + if (isModal()) { + fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow); + setAriaHidden(); + } + + if (!isToast() && !globalState.previousActiveElement) { + globalState.previousActiveElement = document.activeElement; + } + + if (typeof params.didOpen === 'function') { + setTimeout(() => params.didOpen(popup)); + } + + removeClass(container, swalClasses['no-transition']); + }; + + const swalOpenAnimationFinished = event => { + const popup = getPopup(); + + if (event.target !== popup) { + return; + } + + const container = getContainer(); + popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished); + container.style.overflowY = 'auto'; + }; + + const setScrollingVisibility = (container, popup) => { + if (animationEndEvent && hasCssAnimation(popup)) { + container.style.overflowY = 'hidden'; + popup.addEventListener(animationEndEvent, swalOpenAnimationFinished); + } else { + container.style.overflowY = 'auto'; + } + }; + + const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => { + iOSfix(); + + if (scrollbarPadding && initialBodyOverflow !== 'hidden') { + fixScrollbar(); + } // sweetalert2/issues/1247 + + + setTimeout(() => { + container.scrollTop = 0; + }); + }; + + const addClasses$1 = (container, popup, params) => { + addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059 + + popup.style.setProperty('opacity', '0', 'important'); + show(popup, 'grid'); + setTimeout(() => { + // Animate popup right after showing it + addClass(popup, params.showClass.popup); // and remove the opacity workaround + + popup.style.removeProperty('opacity'); + }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062 + + addClass([document.documentElement, document.body], swalClasses.shown); + + if (params.heightAuto && params.backdrop && !params.toast) { + addClass([document.documentElement, document.body], swalClasses['height-auto']); + } + }; + + const handleInputOptionsAndValue = (instance, params) => { + if (params.input === 'select' || params.input === 'radio') { + handleInputOptions(instance, params); + } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { + showLoading(getConfirmButton()); + handleInputValue(instance, params); + } + }; + const getInputValue = (instance, innerParams) => { + const input = instance.getInput(); + + if (!input) { + return null; + } + + switch (innerParams.input) { + case 'checkbox': + return getCheckboxValue(input); + + case 'radio': + return getRadioValue(input); + + case 'file': + return getFileValue(input); + + default: + return innerParams.inputAutoTrim ? input.value.trim() : input.value; + } + }; + + const getCheckboxValue = input => input.checked ? 1 : 0; + + const getRadioValue = input => input.checked ? input.value : null; + + const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; + + const handleInputOptions = (instance, params) => { + const popup = getPopup(); + + const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params); + + if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) { + showLoading(getConfirmButton()); + asPromise(params.inputOptions).then(inputOptions => { + instance.hideLoading(); + processInputOptions(inputOptions); + }); + } else if (typeof params.inputOptions === 'object') { + processInputOptions(params.inputOptions); + } else { + error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions)); + } + }; + + const handleInputValue = (instance, params) => { + const input = instance.getInput(); + hide(input); + asPromise(params.inputValue).then(inputValue => { + input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue); + show(input); + input.focus(); + instance.hideLoading(); + }).catch(err => { + error("Error in inputValue promise: ".concat(err)); + input.value = ''; + show(input); + input.focus(); + instance.hideLoading(); + }); + }; + + const populateInputOptions = { + select: (popup, inputOptions, params) => { + const select = getChildByClass(popup, swalClasses.select); + + const renderOption = (parent, optionLabel, optionValue) => { + const option = document.createElement('option'); + option.value = optionValue; + setInnerHtml(option, optionLabel); + option.selected = isSelected(optionValue, params.inputValue); + parent.appendChild(option); + }; + + inputOptions.forEach(inputOption => { + const optionValue = inputOption[0]; + const optionLabel = inputOption[1]; // spec: + // https://www.w3.org/TR/html401/interact/forms.html#h-17.6 + // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..." + // check whether this is a + + if (Array.isArray(optionLabel)) { + // if it is an array, then it is an + const optgroup = document.createElement('optgroup'); + optgroup.label = optionValue; + optgroup.disabled = false; // not configurable for now + + select.appendChild(optgroup); + optionLabel.forEach(o => renderOption(optgroup, o[1], o[0])); + } else { + // case of + valueFormatted = formatInputOptions(valueFormatted); + } + + result.push([key, valueFormatted]); + }); + } else { + Object.keys(inputOptions).forEach(key => { + let valueFormatted = inputOptions[key]; + + if (typeof valueFormatted === 'object') { + // case of + valueFormatted = formatInputOptions(valueFormatted); + } + + result.push([key, valueFormatted]); + }); + } + + return result; + }; + + const isSelected = (optionValue, inputValue) => { + return inputValue && inputValue.toString() === optionValue.toString(); + }; + + const handleConfirmButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableButtons(); + + if (innerParams.input) { + handleConfirmOrDenyWithInput(instance, 'confirm'); + } else { + confirm(instance, true); + } + }; + const handleDenyButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableButtons(); + + if (innerParams.returnInputValueOnDeny) { + handleConfirmOrDenyWithInput(instance, 'deny'); + } else { + deny(instance, false); + } + }; + const handleCancelButtonClick = (instance, dismissWith) => { + instance.disableButtons(); + dismissWith(DismissReason.cancel); + }; + + const handleConfirmOrDenyWithInput = (instance, type + /* 'confirm' | 'deny' */ + ) => { + const innerParams = privateProps.innerParams.get(instance); + const inputValue = getInputValue(instance, innerParams); + + if (innerParams.inputValidator) { + handleInputValidator(instance, inputValue, type); + } else if (!instance.getInput().checkValidity()) { + instance.enableButtons(); + instance.showValidationMessage(innerParams.validationMessage); + } else if (type === 'deny') { + deny(instance, inputValue); + } else { + confirm(instance, inputValue); + } + }; + + const handleInputValidator = (instance, inputValue, type + /* 'confirm' | 'deny' */ + ) => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableInput(); + const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage))); + validationPromise.then(validationMessage => { + instance.enableButtons(); + instance.enableInput(); + + if (validationMessage) { + instance.showValidationMessage(validationMessage); + } else if (type === 'deny') { + deny(instance, inputValue); + } else { + confirm(instance, inputValue); + } + }); + }; + + const deny = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); + + if (innerParams.showLoaderOnDeny) { + showLoading(getDenyButton()); + } + + if (innerParams.preDeny) { + const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage))); + preDenyPromise.then(preDenyValue => { + if (preDenyValue === false) { + instance.hideLoading(); + } else { + instance.closePopup({ + isDenied: true, + value: typeof preDenyValue === 'undefined' ? value : preDenyValue + }); + } + }); + } else { + instance.closePopup({ + isDenied: true, + value + }); + } + }; + + const succeedWith = (instance, value) => { + instance.closePopup({ + isConfirmed: true, + value + }); + }; + + const confirm = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); + + if (innerParams.showLoaderOnConfirm) { + showLoading(); + } + + if (innerParams.preConfirm) { + instance.resetValidationMessage(); + const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage))); + preConfirmPromise.then(preConfirmValue => { + if (isVisible(getValidationMessage()) || preConfirmValue === false) { + instance.hideLoading(); + } else { + succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue); + } + }); + } else { + succeedWith(instance, value); + } + }; + + const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => { + if (globalState.keydownTarget && globalState.keydownHandlerAdded) { + globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = false; + } + + if (!innerParams.toast) { + globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith); + + globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup(); + globalState.keydownListenerCapture = innerParams.keydownListenerCapture; + globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = true; + } + }; // Focus handling + + const setFocus = (innerParams, index, increment) => { + const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match + + if (focusableElements.length) { + index = index + increment; // rollover to first item + + if (index === focusableElements.length) { + index = 0; // go to last item + } else if (index === -1) { + index = focusableElements.length - 1; + } + + return focusableElements[index].focus(); + } // no visible focusable elements, focus the popup + + + getPopup().focus(); + }; + const arrowKeysNextButton = ['ArrowRight', 'ArrowDown']; + const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp']; + + const keydownHandler = (instance, e, dismissWith) => { + const innerParams = privateProps.innerParams.get(instance); + + if (!innerParams) { + return; // This instance has already been destroyed + } + + if (innerParams.stopKeydownPropagation) { + e.stopPropagation(); + } // ENTER + + + if (e.key === 'Enter') { + handleEnter(instance, e, innerParams); // TAB + } else if (e.key === 'Tab') { + handleTab(e, innerParams); // ARROWS - switch focus between buttons + } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) { + handleArrows(e.key); // ESC + } else if (e.key === 'Escape') { + handleEsc(e, innerParams, dismissWith); + } + }; + + const handleEnter = (instance, e, innerParams) => { + // #720 #721 + if (e.isComposing) { + return; + } + + if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) { + if (['textarea', 'file'].includes(innerParams.input)) { + return; // do not submit + } + + clickConfirm(); + e.preventDefault(); + } + }; + + const handleTab = (e, innerParams) => { + const targetElement = e.target; + const focusableElements = getFocusableElements(); + let btnIndex = -1; + + for (let i = 0; i < focusableElements.length; i++) { + if (targetElement === focusableElements[i]) { + btnIndex = i; + break; + } + } + + if (!e.shiftKey) { + // Cycle to the next button + setFocus(innerParams, btnIndex, 1); + } else { + // Cycle to the prev button + setFocus(innerParams, btnIndex, -1); + } + + e.stopPropagation(); + e.preventDefault(); + }; + + const handleArrows = key => { + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); + + if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) { + return; + } + + const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling'; + const buttonToFocus = document.activeElement[sibling]; + + if (buttonToFocus) { + buttonToFocus.focus(); + } + }; + + const handleEsc = (e, innerParams, dismissWith) => { + if (callIfFunction(innerParams.allowEscapeKey)) { + e.preventDefault(); + dismissWith(DismissReason.esc); + } + }; + + const handlePopupClick = (instance, domCache, dismissWith) => { + const innerParams = privateProps.innerParams.get(instance); + + if (innerParams.toast) { + handleToastClick(instance, domCache, dismissWith); + } else { + // Ignore click events that had mousedown on the popup but mouseup on the container + // This can happen when the user drags a slider + handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup + + handleContainerMousedown(domCache); + handleModalClick(instance, domCache, dismissWith); + } + }; + + const handleToastClick = (instance, domCache, dismissWith) => { + // Closing toast by internal click + domCache.popup.onclick = () => { + const innerParams = privateProps.innerParams.get(instance); + + if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) { + return; + } + + dismissWith(DismissReason.close); + }; + }; + + let ignoreOutsideClick = false; + + const handleModalMousedown = domCache => { + domCache.popup.onmousedown = () => { + domCache.container.onmouseup = function (e) { + domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't + // have any other direct children aside of the popup + + if (e.target === domCache.container) { + ignoreOutsideClick = true; + } + }; + }; + }; + + const handleContainerMousedown = domCache => { + domCache.container.onmousedown = () => { + domCache.popup.onmouseup = function (e) { + domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup + + if (e.target === domCache.popup || domCache.popup.contains(e.target)) { + ignoreOutsideClick = true; + } + }; + }; + }; + + const handleModalClick = (instance, domCache, dismissWith) => { + domCache.container.onclick = e => { + const innerParams = privateProps.innerParams.get(instance); + + if (ignoreOutsideClick) { + ignoreOutsideClick = false; + return; + } + + if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) { + dismissWith(DismissReason.backdrop); + } + }; + }; + + function _main(userParams, mixinParams = {}) { + showWarningsForParams(Object.assign({}, mixinParams, userParams)); + + if (globalState.currentInstance) { + globalState.currentInstance._destroy(); + + if (isModal()) { + unsetAriaHidden(); + } + } + + globalState.currentInstance = this; + const innerParams = prepareParams(userParams, mixinParams); + setParameters(innerParams); + Object.freeze(innerParams); // clear the previous timer + + if (globalState.timeout) { + globalState.timeout.stop(); + delete globalState.timeout; + } // clear the restore focus timeout + + + clearTimeout(globalState.restoreFocusTimeout); + const domCache = populateDomCache(this); + render(this, innerParams); + privateProps.innerParams.set(this, innerParams); + return swalPromise(this, domCache, innerParams); + } + + const prepareParams = (userParams, mixinParams) => { + const templateParams = getTemplateParams(userParams); + const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 + + params.showClass = Object.assign({}, defaultParams.showClass, params.showClass); + params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass); + return params; + }; + + const swalPromise = (instance, domCache, innerParams) => { + return new Promise(resolve => { + // functions to handle all closings/dismissals + const dismissWith = dismiss => { + instance.closePopup({ + isDismissed: true, + dismiss + }); + }; + + privateMethods.swalPromiseResolve.set(instance, resolve); + + domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance); + + domCache.denyButton.onclick = () => handleDenyButtonClick(instance); + + domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith); + + domCache.closeButton.onclick = () => dismissWith(DismissReason.close); + + handlePopupClick(instance, domCache, dismissWith); + addKeydownHandler(instance, globalState, innerParams, dismissWith); + handleInputOptionsAndValue(instance, innerParams); + openPopup(innerParams); + setupTimer(globalState, innerParams, dismissWith); + initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946) + + setTimeout(() => { + domCache.container.scrollTop = 0; + }); + }); + }; + + const populateDomCache = instance => { + const domCache = { + popup: getPopup(), + container: getContainer(), + actions: getActions(), + confirmButton: getConfirmButton(), + denyButton: getDenyButton(), + cancelButton: getCancelButton(), + loader: getLoader(), + closeButton: getCloseButton(), + validationMessage: getValidationMessage(), + progressSteps: getProgressSteps() + }; + privateProps.domCache.set(instance, domCache); + return domCache; + }; + + const setupTimer = (globalState$$1, innerParams, dismissWith) => { + const timerProgressBar = getTimerProgressBar(); + hide(timerProgressBar); + + if (innerParams.timer) { + globalState$$1.timeout = new Timer(() => { + dismissWith('timer'); + delete globalState$$1.timeout; + }, innerParams.timer); + + if (innerParams.timerProgressBar) { + show(timerProgressBar); + setTimeout(() => { + if (globalState$$1.timeout && globalState$$1.timeout.running) { + // timer can be already stopped or unset at this point + animateTimerProgressBar(innerParams.timer); + } + }); + } + } + }; + + const initFocus = (domCache, innerParams) => { + if (innerParams.toast) { + return; + } + + if (!callIfFunction(innerParams.allowEnterKey)) { + return blurActiveElement(); + } + + if (!focusButton(domCache, innerParams)) { + setFocus(innerParams, -1, 1); + } + }; + + const focusButton = (domCache, innerParams) => { + if (innerParams.focusDeny && isVisible(domCache.denyButton)) { + domCache.denyButton.focus(); + return true; + } + + if (innerParams.focusCancel && isVisible(domCache.cancelButton)) { + domCache.cancelButton.focus(); + return true; + } + + if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) { + domCache.confirmButton.focus(); + return true; + } + + return false; + }; + + const blurActiveElement = () => { + if (document.activeElement && typeof document.activeElement.blur === 'function') { + document.activeElement.blur(); + } + }; + + /** + * Updates popup parameters. + */ + + function update(params) { + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(this); + + if (!popup || hasClass(popup, innerParams.hideClass.popup)) { + return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup."); + } + + const validUpdatableParams = {}; // assign valid params from `params` to `defaults` + + Object.keys(params).forEach(param => { + if (Swal.isUpdatableParameter(param)) { + validUpdatableParams[param] = params[param]; + } else { + warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md")); + } + }); + const updatedParams = Object.assign({}, innerParams, validUpdatableParams); + render(this, updatedParams); + privateProps.innerParams.set(this, updatedParams); + Object.defineProperties(this, { + params: { + value: Object.assign({}, this.params, params), + writable: false, + enumerable: true + } + }); + } + + function _destroy() { + const domCache = privateProps.domCache.get(this); + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams) { + return; // This instance has already been destroyed + } // Check if there is another Swal closing + + + if (domCache.popup && globalState.swalCloseEventFinishedCallback) { + globalState.swalCloseEventFinishedCallback(); + delete globalState.swalCloseEventFinishedCallback; + } // Check if there is a swal disposal defer timer + + + if (globalState.deferDisposalTimer) { + clearTimeout(globalState.deferDisposalTimer); + delete globalState.deferDisposalTimer; + } + + if (typeof innerParams.didDestroy === 'function') { + innerParams.didDestroy(); + } + + disposeSwal(this); + } + + const disposeSwal = instance => { + // Unset this.params so GC will dispose it (#1569) + delete instance.params; // Unset globalState props so GC will dispose globalState (#1569) + + delete globalState.keydownHandler; + delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569) + + unsetWeakMaps(privateProps); + unsetWeakMaps(privateMethods); // Unset currentInstance + + delete globalState.currentInstance; + }; + + const unsetWeakMaps = obj => { + for (const i in obj) { + obj[i] = new WeakMap(); + } + }; + + + + var instanceMethods = /*#__PURE__*/Object.freeze({ + hideLoading: hideLoading, + disableLoading: hideLoading, + getInput: getInput$1, + close: close, + closePopup: close, + closeModal: close, + closeToast: close, + enableButtons: enableButtons, + disableButtons: disableButtons, + enableInput: enableInput, + disableInput: disableInput, + showValidationMessage: showValidationMessage, + resetValidationMessage: resetValidationMessage$1, + getProgressSteps: getProgressSteps$1, + _main: _main, + update: update, + _destroy: _destroy + }); + + let currentInstance; + + class SweetAlert { + constructor(...args) { + // Prevent run in Node env + if (typeof window === 'undefined') { + return; + } + + currentInstance = this; + const outerParams = Object.freeze(this.constructor.argsToParams(args)); + Object.defineProperties(this, { + params: { + value: outerParams, + writable: false, + enumerable: true, + configurable: true + } + }); + + const promise = this._main(this.params); + + privateProps.promise.set(this, promise); + } // `catch` cannot be the name of a module export, so we define our thenable methods here instead + + + then(onFulfilled) { + const promise = privateProps.promise.get(this); + return promise.then(onFulfilled); + } + + finally(onFinally) { + const promise = privateProps.promise.get(this); + return promise.finally(onFinally); + } + + } // Assign instance methods from src/instanceMethods/*.js to prototype + + + Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor + + Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility + + Object.keys(instanceMethods).forEach(key => { + SweetAlert[key] = function (...args) { + if (currentInstance) { + return currentInstance[key](...args); + } + }; + }); + SweetAlert.DismissReason = DismissReason; + SweetAlert.version = '11.1.7'; + + const Swal = SweetAlert; + Swal.default = Swal; + + return Swal; + +})); +if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2} + +"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}"); \ No newline at end of file diff --git a/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js new file mode 100644 index 0000000..7a84d6c --- /dev/null +++ b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n
    \n \n
      \n
      \n \n

      \n
      \n \n \n
      \n \n \n
      \n \n
      \n \n \n
      \n
      \n
      \n \n \n \n
      \n
      \n
      \n
      \n
      \n
      \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
      \n \n
      \n
      \n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'
      ').concat(e,"
      "),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join("
      ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); +"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}"); \ No newline at end of file diff --git a/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.css b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.css new file mode 100644 index 0000000..3c7543d --- /dev/null +++ b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.css @@ -0,0 +1,1316 @@ +.swal2-popup.swal2-toast { + box-sizing: border-box; + grid-column: 1/4 !important; + grid-row: 1/4 !important; + grid-template-columns: 1fr 99fr 1fr; + padding: 1em; + overflow-y: hidden; + background: #fff; + box-shadow: 0 0 1px rgba(0, 0, 0, 0.075), 0 1px 2px rgba(0, 0, 0, 0.075), 1px 2px 4px rgba(0, 0, 0, 0.075), 1px 3px 8px rgba(0, 0, 0, 0.075), 2px 4px 16px rgba(0, 0, 0, 0.075); + pointer-events: all; +} +.swal2-popup.swal2-toast > * { + grid-column: 2; +} +.swal2-popup.swal2-toast .swal2-title { + margin: 0.5em 1em; + padding: 0; + font-size: 1em; + text-align: initial; +} +.swal2-popup.swal2-toast .swal2-loading { + justify-content: center; +} +.swal2-popup.swal2-toast .swal2-input { + height: 2em; + margin: 0.5em; + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-validation-message { + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-footer { + margin: 0.5em 0 0; + padding: 0.5em 0 0; + font-size: 0.8em; +} +.swal2-popup.swal2-toast .swal2-close { + grid-column: 3/3; + grid-row: 1/99; + align-self: center; + width: 0.8em; + height: 0.8em; + margin: 0; + font-size: 2em; +} +.swal2-popup.swal2-toast .swal2-html-container { + margin: 0.5em 1em; + padding: 0; + font-size: 1em; + text-align: initial; +} +.swal2-popup.swal2-toast .swal2-html-container:empty { + padding: 0; +} +.swal2-popup.swal2-toast .swal2-loader { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + height: 2em; + margin: 0.25em; +} +.swal2-popup.swal2-toast .swal2-icon { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + min-width: 2em; + height: 2em; + margin: 0 0.5em 0 0; +} +.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content { + display: flex; + align-items: center; + font-size: 1.8em; + font-weight: bold; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] { + top: 0.875em; + width: 1.375em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + left: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + right: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-actions { + justify-content: flex-start; + height: auto; + margin: 0; + margin-top: 0.5em; + padding: 0 0.5em; +} +.swal2-popup.swal2-toast .swal2-styled { + margin: 0.25em 0.5em; + padding: 0.4em 0.6em; + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-success { + border-color: #a5dc86; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line] { + position: absolute; + width: 1.6em; + height: 3em; + transform: rotate(45deg); + border-radius: 50%; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] { + top: -0.8em; + left: -0.5em; + transform: rotate(-45deg); + transform-origin: 2em 2em; + border-radius: 4em 0 0 4em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] { + top: -0.25em; + left: 0.9375em; + transform-origin: 0 1.5em; + border-radius: 0 4em 4em 0; +} +.swal2-popup.swal2-toast .swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} +.swal2-popup.swal2-toast .swal2-success .swal2-success-fix { + top: 0; + left: 0.4375em; + width: 0.4375em; + height: 2.6875em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line] { + height: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] { + top: 1.125em; + left: 0.1875em; + width: 0.75em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; +} +.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip { + -webkit-animation: swal2-toast-animate-success-line-tip 0.75s; + animation: swal2-toast-animate-success-line-tip 0.75s; +} +.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long { + -webkit-animation: swal2-toast-animate-success-line-long 0.75s; + animation: swal2-toast-animate-success-line-long 0.75s; +} +.swal2-popup.swal2-toast.swal2-show { + -webkit-animation: swal2-toast-show 0.5s; + animation: swal2-toast-show 0.5s; +} +.swal2-popup.swal2-toast.swal2-hide { + -webkit-animation: swal2-toast-hide 0.1s forwards; + animation: swal2-toast-hide 0.1s forwards; +} + +.swal2-container { + display: grid; + position: fixed; + z-index: 1060; + top: 0; + right: 0; + bottom: 0; + left: 0; + box-sizing: border-box; + grid-template-areas: "top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end"; + grid-template-rows: minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto); + grid-template-rows: minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto); + height: 100%; + padding: 0.625em; + overflow-x: hidden; + transition: background-color 0.1s; + -webkit-overflow-scrolling: touch; +} +.swal2-container.swal2-backdrop-show, .swal2-container.swal2-noanimation { + background: rgba(0, 0, 0, 0.4); +} +.swal2-container.swal2-backdrop-hide { + background: transparent !important; +} +.swal2-container.swal2-top-start, .swal2-container.swal2-center-start, .swal2-container.swal2-bottom-start { + grid-template-columns: minmax(0, 1fr) auto auto; +} +.swal2-container.swal2-top, .swal2-container.swal2-center, .swal2-container.swal2-bottom { + grid-template-columns: auto minmax(0, 1fr) auto; +} +.swal2-container.swal2-top-end, .swal2-container.swal2-center-end, .swal2-container.swal2-bottom-end { + grid-template-columns: auto auto minmax(0, 1fr); +} +.swal2-container.swal2-top-start > .swal2-popup { + align-self: start; +} +.swal2-container.swal2-top > .swal2-popup { + grid-column: 2; + align-self: start; + justify-self: center; +} +.swal2-container.swal2-top-end > .swal2-popup, .swal2-container.swal2-top-right > .swal2-popup { + grid-column: 3; + align-self: start; + justify-self: end; +} +.swal2-container.swal2-center-start > .swal2-popup, .swal2-container.swal2-center-left > .swal2-popup { + grid-row: 2; + align-self: center; +} +.swal2-container.swal2-center > .swal2-popup { + grid-column: 2; + grid-row: 2; + align-self: center; + justify-self: center; +} +.swal2-container.swal2-center-end > .swal2-popup, .swal2-container.swal2-center-right > .swal2-popup { + grid-column: 3; + grid-row: 2; + align-self: center; + justify-self: end; +} +.swal2-container.swal2-bottom-start > .swal2-popup, .swal2-container.swal2-bottom-left > .swal2-popup { + grid-column: 1; + grid-row: 3; + align-self: end; +} +.swal2-container.swal2-bottom > .swal2-popup { + grid-column: 2; + grid-row: 3; + justify-self: center; + align-self: end; +} +.swal2-container.swal2-bottom-end > .swal2-popup, .swal2-container.swal2-bottom-right > .swal2-popup { + grid-column: 3; + grid-row: 3; + align-self: end; + justify-self: end; +} +.swal2-container.swal2-grow-row > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup { + grid-column: 1/4; + width: 100%; +} +.swal2-container.swal2-grow-column > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup { + grid-row: 1/4; + align-self: stretch; +} +.swal2-container.swal2-no-transition { + transition: none !important; +} + +.swal2-popup { + display: none; + position: relative; + box-sizing: border-box; + grid-template-columns: minmax(0, 100%); + width: 32em; + max-width: 100%; + padding: 0 0 1.25em; + border: none; + border-radius: 5px; + background: #fff; + color: #545454; + font-family: inherit; + font-size: 1rem; +} +.swal2-popup:focus { + outline: none; +} +.swal2-popup.swal2-loading { + overflow-y: hidden; +} + +.swal2-title { + position: relative; + max-width: 100%; + margin: 0; + padding: 0.8em 1em 0; + color: #595959; + font-size: 1.875em; + font-weight: 600; + text-align: center; + text-transform: none; + word-wrap: break-word; +} + +.swal2-actions { + display: flex; + z-index: 1; + box-sizing: border-box; + flex-wrap: wrap; + align-items: center; + justify-content: center; + width: auto; + margin: 1.25em auto 0; + padding: 0; +} +.swal2-actions:not(.swal2-loading) .swal2-styled[disabled] { + opacity: 0.4; +} +.swal2-actions:not(.swal2-loading) .swal2-styled:hover { + background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)); +} +.swal2-actions:not(.swal2-loading) .swal2-styled:active { + background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); +} + +.swal2-loader { + display: none; + align-items: center; + justify-content: center; + width: 2.2em; + height: 2.2em; + margin: 0 1.875em; + -webkit-animation: swal2-rotate-loading 1.5s linear 0s infinite normal; + animation: swal2-rotate-loading 1.5s linear 0s infinite normal; + border-width: 0.25em; + border-style: solid; + border-radius: 100%; + border-color: #2778c4 transparent #2778c4 transparent; +} + +.swal2-styled { + margin: 0.3125em; + padding: 0.625em 1.1em; + transition: box-shadow 0.1s; + box-shadow: 0 0 0 3px transparent; + font-weight: 500; +} +.swal2-styled:not([disabled]) { + cursor: pointer; +} +.swal2-styled.swal2-confirm { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #7367f0; + color: #fff; + font-size: 1em; +} +.swal2-styled.swal2-confirm:focus { + box-shadow: 0 0 0 3px rgba(115, 103, 240, 0.5); +} +.swal2-styled.swal2-deny { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #ea5455; + color: #fff; + font-size: 1em; +} +.swal2-styled.swal2-deny:focus { + box-shadow: 0 0 0 3px rgba(234, 84, 85, 0.5); +} +.swal2-styled.swal2-cancel { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #6e7d88; + color: #fff; + font-size: 1em; +} +.swal2-styled.swal2-cancel:focus { + box-shadow: 0 0 0 3px rgba(110, 125, 136, 0.5); +} +.swal2-styled.swal2-default-outline:focus { + box-shadow: 0 0 0 3px rgba(100, 150, 200, 0.5); +} +.swal2-styled:focus { + outline: none; +} +.swal2-styled::-moz-focus-inner { + border: 0; +} + +.swal2-footer { + justify-content: center; + margin: 1em 0 0; + padding: 1em 1em 0; + border-top: 1px solid #eee; + color: #545454; + font-size: 1em; +} + +.swal2-timer-progress-bar-container { + position: absolute; + right: 0; + bottom: 0; + left: 0; + grid-column: auto !important; + height: 0.25em; + overflow: hidden; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} + +.swal2-timer-progress-bar { + width: 100%; + height: 0.25em; + background: rgba(0, 0, 0, 0.2); +} + +.swal2-image { + max-width: 100%; + margin: 2em auto 1em; +} + +.swal2-close { + z-index: 2; + align-items: center; + justify-content: center; + width: 1.2em; + height: 1.2em; + margin-top: 0; + margin-right: 0; + margin-bottom: -1.2em; + padding: 0; + overflow: hidden; + transition: color 0.1s, box-shadow 0.1s; + border: none; + border-radius: 5px; + background: transparent; + color: #ccc; + font-family: serif; + font-family: monospace; + font-size: 2.5em; + cursor: pointer; + justify-self: end; +} +.swal2-close:hover { + transform: none; + background: transparent; + color: #f27474; +} +.swal2-close:focus { + outline: none; + box-shadow: inset 0 0 0 3px rgba(100, 150, 200, 0.5); +} +.swal2-close::-moz-focus-inner { + border: 0; +} + +.swal2-html-container { + z-index: 1; + justify-content: center; + margin: 1em 1.6em 0.3em; + padding: 0; + overflow: auto; + color: #545454; + font-size: 1.125em; + font-weight: normal; + line-height: normal; + text-align: center; + word-wrap: break-word; + word-break: break-word; +} + +.swal2-input, +.swal2-file, +.swal2-textarea, +.swal2-select, +.swal2-radio, +.swal2-checkbox { + margin: 1em 2em 0; +} + +.swal2-input, +.swal2-file, +.swal2-textarea { + box-sizing: border-box; + width: auto; + transition: border-color 0.1s, box-shadow 0.1s; + border: 1px solid #d9d9d9; + border-radius: 0.1875em; + background: inherit; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent; + color: inherit; + font-size: 1.125em; +} +.swal2-input.swal2-inputerror, +.swal2-file.swal2-inputerror, +.swal2-textarea.swal2-inputerror { + border-color: #f27474 !important; + box-shadow: 0 0 2px #f27474 !important; +} +.swal2-input:focus, +.swal2-file:focus, +.swal2-textarea:focus { + border: 1px solid #b4dbed; + outline: none; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px rgba(100, 150, 200, 0.5); +} +.swal2-input::-moz-placeholder, .swal2-file::-moz-placeholder, .swal2-textarea::-moz-placeholder { + color: #ccc; +} +.swal2-input:-ms-input-placeholder, .swal2-file:-ms-input-placeholder, .swal2-textarea:-ms-input-placeholder { + color: #ccc; +} +.swal2-input::placeholder, +.swal2-file::placeholder, +.swal2-textarea::placeholder { + color: #ccc; +} + +.swal2-range { + margin: 1em 2em 0; + background: #fff; +} +.swal2-range input { + width: 80%; +} +.swal2-range output { + width: 20%; + color: inherit; + font-weight: 600; + text-align: center; +} +.swal2-range input, +.swal2-range output { + height: 2.625em; + padding: 0; + font-size: 1.125em; + line-height: 2.625em; +} + +.swal2-input { + height: 2.625em; + padding: 0 0.75em; +} + +.swal2-file { + width: 75%; + margin-right: auto; + margin-left: auto; + background: inherit; + font-size: 1.125em; +} + +.swal2-textarea { + height: 6.75em; + padding: 0.75em; +} + +.swal2-select { + min-width: 50%; + max-width: 100%; + padding: 0.375em 0.625em; + background: inherit; + color: inherit; + font-size: 1.125em; +} + +.swal2-radio, +.swal2-checkbox { + align-items: center; + justify-content: center; + background: #fff; + color: inherit; +} +.swal2-radio label, +.swal2-checkbox label { + margin: 0 0.6em; + font-size: 1.125em; +} +.swal2-radio input, +.swal2-checkbox input { + flex-shrink: 0; + margin: 0 0.4em; +} + +.swal2-input-label { + display: flex; + justify-content: center; + margin: 1em auto 0; +} + +.swal2-validation-message { + align-items: center; + justify-content: center; + margin: 1em 0 0; + padding: 0.625em; + overflow: hidden; + background: #f0f0f0; + color: #666666; + font-size: 1em; + font-weight: 300; +} +.swal2-validation-message::before { + content: "!"; + display: inline-block; + width: 1.5em; + min-width: 1.5em; + height: 1.5em; + margin: 0 0.625em; + border-radius: 50%; + background-color: #f27474; + color: #fff; + font-weight: 600; + line-height: 1.5em; + text-align: center; +} + +.swal2-icon { + position: relative; + box-sizing: content-box; + justify-content: center; + width: 5em; + height: 5em; + margin: 2.5em auto 0.6em; + border: 0.25em solid transparent; + border-radius: 50%; + border-color: #000; + font-family: inherit; + line-height: 5em; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.swal2-icon .swal2-icon-content { + display: flex; + align-items: center; + font-size: 3.75em; +} +.swal2-icon.swal2-error { + border-color: #f27474; + color: #f27474; +} +.swal2-icon.swal2-error .swal2-x-mark { + position: relative; + flex-grow: 1; +} +.swal2-icon.swal2-error [class^=swal2-x-mark-line] { + display: block; + position: absolute; + top: 2.3125em; + width: 2.9375em; + height: 0.3125em; + border-radius: 0.125em; + background-color: #f27474; +} +.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + left: 1.0625em; + transform: rotate(45deg); +} +.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + right: 1em; + transform: rotate(-45deg); +} +.swal2-icon.swal2-error.swal2-icon-show { + -webkit-animation: swal2-animate-error-icon 0.5s; + animation: swal2-animate-error-icon 0.5s; +} +.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark { + -webkit-animation: swal2-animate-error-x-mark 0.5s; + animation: swal2-animate-error-x-mark 0.5s; +} +.swal2-icon.swal2-warning { + border-color: #facea8; + color: #f8bb86; +} +.swal2-icon.swal2-info { + border-color: #9de0f6; + color: #3fc3ee; +} +.swal2-icon.swal2-question { + border-color: #c9dae1; + color: #87adbd; +} +.swal2-icon.swal2-success { + border-color: #a5dc86; + color: #a5dc86; +} +.swal2-icon.swal2-success [class^=swal2-success-circular-line] { + position: absolute; + width: 3.75em; + height: 7.5em; + transform: rotate(45deg); + border-radius: 50%; +} +.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left] { + top: -0.4375em; + left: -2.0635em; + transform: rotate(-45deg); + transform-origin: 3.75em 3.75em; + border-radius: 7.5em 0 0 7.5em; +} +.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right] { + top: -0.6875em; + left: 1.875em; + transform: rotate(-45deg); + transform-origin: 0 3.75em; + border-radius: 0 7.5em 7.5em 0; +} +.swal2-icon.swal2-success .swal2-success-ring { + position: absolute; + z-index: 2; + top: -0.25em; + left: -0.25em; + box-sizing: content-box; + width: 100%; + height: 100%; + border: 0.25em solid rgba(165, 220, 134, 0.3); + border-radius: 50%; +} +.swal2-icon.swal2-success .swal2-success-fix { + position: absolute; + z-index: 1; + top: 0.5em; + left: 1.625em; + width: 0.4375em; + height: 5.625em; + transform: rotate(-45deg); +} +.swal2-icon.swal2-success [class^=swal2-success-line] { + display: block; + position: absolute; + z-index: 2; + height: 0.3125em; + border-radius: 0.125em; + background-color: #a5dc86; +} +.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip] { + top: 2.875em; + left: 0.8125em; + width: 1.5625em; + transform: rotate(45deg); +} +.swal2-icon.swal2-success [class^=swal2-success-line][class$=long] { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + transform: rotate(-45deg); +} +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip { + -webkit-animation: swal2-animate-success-line-tip 0.75s; + animation: swal2-animate-success-line-tip 0.75s; +} +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long { + -webkit-animation: swal2-animate-success-line-long 0.75s; + animation: swal2-animate-success-line-long 0.75s; +} +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right { + -webkit-animation: swal2-rotate-success-circular-line 4.25s ease-in; + animation: swal2-rotate-success-circular-line 4.25s ease-in; +} + +.swal2-progress-steps { + flex-wrap: wrap; + align-items: center; + max-width: 100%; + margin: 1.25em auto; + padding: 0; + background: inherit; + font-weight: 600; +} +.swal2-progress-steps li { + display: inline-block; + position: relative; +} +.swal2-progress-steps .swal2-progress-step { + z-index: 20; + flex-shrink: 0; + width: 2em; + height: 2em; + border-radius: 2em; + background: #2778c4; + color: #fff; + line-height: 2em; + text-align: center; +} +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step { + background: #2778c4; +} +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step { + background: #add8e6; + color: #fff; +} +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step-line { + background: #add8e6; +} +.swal2-progress-steps .swal2-progress-step-line { + z-index: 10; + flex-shrink: 0; + width: 2.5em; + height: 0.4em; + margin: 0 -1px; + background: #2778c4; +} + +[class^=swal2] { + -webkit-tap-highlight-color: transparent; +} + +.swal2-show { + -webkit-animation: swal2-show 0.3s; + animation: swal2-show 0.3s; +} + +.swal2-hide { + -webkit-animation: swal2-hide 0.15s forwards; + animation: swal2-hide 0.15s forwards; +} + +.swal2-noanimation { + transition: none; +} + +.swal2-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +.swal2-rtl .swal2-close { + margin-right: initial; + margin-left: 0; +} +.swal2-rtl .swal2-timer-progress-bar { + right: 0; + left: auto; +} + +@-webkit-keyframes swal2-toast-show { + 0% { + transform: translateY(-0.625em) rotateZ(2deg); + } + 33% { + transform: translateY(0) rotateZ(-2deg); + } + 66% { + transform: translateY(0.3125em) rotateZ(2deg); + } + 100% { + transform: translateY(0) rotateZ(0deg); + } +} + +@keyframes swal2-toast-show { + 0% { + transform: translateY(-0.625em) rotateZ(2deg); + } + 33% { + transform: translateY(0) rotateZ(-2deg); + } + 66% { + transform: translateY(0.3125em) rotateZ(2deg); + } + 100% { + transform: translateY(0) rotateZ(0deg); + } +} +@-webkit-keyframes swal2-toast-hide { + 100% { + transform: rotateZ(1deg); + opacity: 0; + } +} +@keyframes swal2-toast-hide { + 100% { + transform: rotateZ(1deg); + opacity: 0; + } +} +@-webkit-keyframes swal2-toast-animate-success-line-tip { + 0% { + top: 0.5625em; + left: 0.0625em; + width: 0; + } + 54% { + top: 0.125em; + left: 0.125em; + width: 0; + } + 70% { + top: 0.625em; + left: -0.25em; + width: 1.625em; + } + 84% { + top: 1.0625em; + left: 0.75em; + width: 0.5em; + } + 100% { + top: 1.125em; + left: 0.1875em; + width: 0.75em; + } +} +@keyframes swal2-toast-animate-success-line-tip { + 0% { + top: 0.5625em; + left: 0.0625em; + width: 0; + } + 54% { + top: 0.125em; + left: 0.125em; + width: 0; + } + 70% { + top: 0.625em; + left: -0.25em; + width: 1.625em; + } + 84% { + top: 1.0625em; + left: 0.75em; + width: 0.5em; + } + 100% { + top: 1.125em; + left: 0.1875em; + width: 0.75em; + } +} +@-webkit-keyframes swal2-toast-animate-success-line-long { + 0% { + top: 1.625em; + right: 1.375em; + width: 0; + } + 65% { + top: 1.25em; + right: 0.9375em; + width: 0; + } + 84% { + top: 0.9375em; + right: 0; + width: 1.125em; + } + 100% { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; + } +} +@keyframes swal2-toast-animate-success-line-long { + 0% { + top: 1.625em; + right: 1.375em; + width: 0; + } + 65% { + top: 1.25em; + right: 0.9375em; + width: 0; + } + 84% { + top: 0.9375em; + right: 0; + width: 1.125em; + } + 100% { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; + } +} +@-webkit-keyframes swal2-show { + 0% { + transform: scale(0.7); + } + 45% { + transform: scale(1.05); + } + 80% { + transform: scale(0.95); + } + 100% { + transform: scale(1); + } +} +@keyframes swal2-show { + 0% { + transform: scale(0.7); + } + 45% { + transform: scale(1.05); + } + 80% { + transform: scale(0.95); + } + 100% { + transform: scale(1); + } +} +@-webkit-keyframes swal2-hide { + 0% { + transform: scale(1); + opacity: 1; + } + 100% { + transform: scale(0.5); + opacity: 0; + } +} +@keyframes swal2-hide { + 0% { + transform: scale(1); + opacity: 1; + } + 100% { + transform: scale(0.5); + opacity: 0; + } +} +@-webkit-keyframes swal2-animate-success-line-tip { + 0% { + top: 1.1875em; + left: 0.0625em; + width: 0; + } + 54% { + top: 1.0625em; + left: 0.125em; + width: 0; + } + 70% { + top: 2.1875em; + left: -0.375em; + width: 3.125em; + } + 84% { + top: 3em; + left: 1.3125em; + width: 1.0625em; + } + 100% { + top: 2.8125em; + left: 0.8125em; + width: 1.5625em; + } +} +@keyframes swal2-animate-success-line-tip { + 0% { + top: 1.1875em; + left: 0.0625em; + width: 0; + } + 54% { + top: 1.0625em; + left: 0.125em; + width: 0; + } + 70% { + top: 2.1875em; + left: -0.375em; + width: 3.125em; + } + 84% { + top: 3em; + left: 1.3125em; + width: 1.0625em; + } + 100% { + top: 2.8125em; + left: 0.8125em; + width: 1.5625em; + } +} +@-webkit-keyframes swal2-animate-success-line-long { + 0% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 65% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 84% { + top: 2.1875em; + right: 0; + width: 3.4375em; + } + 100% { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + } +} +@keyframes swal2-animate-success-line-long { + 0% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 65% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 84% { + top: 2.1875em; + right: 0; + width: 3.4375em; + } + 100% { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + } +} +@-webkit-keyframes swal2-rotate-success-circular-line { + 0% { + transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + } + 100% { + transform: rotate(-405deg); + } +} +@keyframes swal2-rotate-success-circular-line { + 0% { + transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + } + 100% { + transform: rotate(-405deg); + } +} +@-webkit-keyframes swal2-animate-error-x-mark { + 0% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 50% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 80% { + margin-top: -0.375em; + transform: scale(1.15); + } + 100% { + margin-top: 0; + transform: scale(1); + opacity: 1; + } +} +@keyframes swal2-animate-error-x-mark { + 0% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 50% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 80% { + margin-top: -0.375em; + transform: scale(1.15); + } + 100% { + margin-top: 0; + transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes swal2-animate-error-icon { + 0% { + transform: rotateX(100deg); + opacity: 0; + } + 100% { + transform: rotateX(0deg); + opacity: 1; + } +} +@keyframes swal2-animate-error-icon { + 0% { + transform: rotateX(100deg); + opacity: 0; + } + 100% { + transform: rotateX(0deg); + opacity: 1; + } +} +@-webkit-keyframes swal2-rotate-loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +@keyframes swal2-rotate-loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) { + overflow: hidden; +} +body.swal2-height-auto { + height: auto !important; +} +body.swal2-no-backdrop .swal2-container { + background-color: transparent !important; + pointer-events: none; +} +body.swal2-no-backdrop .swal2-container .swal2-popup { + pointer-events: all; +} +body.swal2-no-backdrop .swal2-container .swal2-modal { + box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); +} +@media print { + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) { + overflow-y: scroll !important; + } + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) > [aria-hidden=true] { + display: none; + } + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container { + position: static !important; + } +} +body.swal2-toast-shown .swal2-container { + box-sizing: border-box; + width: 360px; + max-width: 100%; + background-color: transparent; + pointer-events: none; +} +body.swal2-toast-shown .swal2-container.swal2-top { + top: 0; + right: auto; + bottom: auto; + left: 50%; + transform: translateX(-50%); +} +body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .swal2-container.swal2-top-right { + top: 0; + right: 0; + bottom: auto; + left: auto; +} +body.swal2-toast-shown .swal2-container.swal2-top-start, body.swal2-toast-shown .swal2-container.swal2-top-left { + top: 0; + right: auto; + bottom: auto; + left: 0; +} +body.swal2-toast-shown .swal2-container.swal2-center-start, body.swal2-toast-shown .swal2-container.swal2-center-left { + top: 50%; + right: auto; + bottom: auto; + left: 0; + transform: translateY(-50%); +} +body.swal2-toast-shown .swal2-container.swal2-center { + top: 50%; + right: auto; + bottom: auto; + left: 50%; + transform: translate(-50%, -50%); +} +body.swal2-toast-shown .swal2-container.swal2-center-end, body.swal2-toast-shown .swal2-container.swal2-center-right { + top: 50%; + right: 0; + bottom: auto; + left: auto; + transform: translateY(-50%); +} +body.swal2-toast-shown .swal2-container.swal2-bottom-start, body.swal2-toast-shown .swal2-container.swal2-bottom-left { + top: auto; + right: auto; + bottom: 0; + left: 0; +} +body.swal2-toast-shown .swal2-container.swal2-bottom { + top: auto; + right: auto; + bottom: 0; + left: 50%; + transform: translateX(-50%); +} +body.swal2-toast-shown .swal2-container.swal2-bottom-end, body.swal2-toast-shown .swal2-container.swal2-bottom-right { + top: auto; + right: 0; + bottom: 0; + left: auto; +} \ No newline at end of file diff --git a/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.js b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.js new file mode 100644 index 0000000..5bda432 --- /dev/null +++ b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.js @@ -0,0 +1,3120 @@ +/*! +* sweetalert2 v11.1.7 +* Released under the MIT License. +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.Sweetalert2 = factory()); +}(this, function () { 'use strict'; + + const DismissReason = Object.freeze({ + cancel: 'cancel', + backdrop: 'backdrop', + close: 'close', + esc: 'esc', + timer: 'timer' + }); + + const consolePrefix = 'SweetAlert2:'; + /** + * Filter the unique values into a new array + * @param arr + */ + + const uniqueArray = arr => { + const result = []; + + for (let i = 0; i < arr.length; i++) { + if (result.indexOf(arr[i]) === -1) { + result.push(arr[i]); + } + } + + return result; + }; + /** + * Capitalize the first letter of a string + * @param str + */ + + const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1); + /** + * Convert NodeList to Array + * @param nodeList + */ + + const toArray = nodeList => Array.prototype.slice.call(nodeList); + /** + * Standardise console warnings + * @param message + */ + + const warn = message => { + console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message)); + }; + /** + * Standardise console errors + * @param message + */ + + const error = message => { + console.error("".concat(consolePrefix, " ").concat(message)); + }; + /** + * Private global state for `warnOnce` + * @type {Array} + * @private + */ + + const previousWarnOnceMessages = []; + /** + * Show a console warning, but only if it hasn't already been shown + * @param message + */ + + const warnOnce = message => { + if (!previousWarnOnceMessages.includes(message)) { + previousWarnOnceMessages.push(message); + warn(message); + } + }; + /** + * Show a one-time console warning about deprecated params/methods + */ + + const warnAboutDeprecation = (deprecatedParam, useInstead) => { + warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead.")); + }; + /** + * If `arg` is a function, call it (with no arguments or context) and return the result. + * Otherwise, just pass the value through + * @param arg + */ + + const callIfFunction = arg => typeof arg === 'function' ? arg() : arg; + const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function'; + const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg); + const isPromise = arg => arg && Promise.resolve(arg) === arg; + + const isJqueryElement = elem => typeof elem === 'object' && elem.jquery; + + const isElement = elem => elem instanceof Element || isJqueryElement(elem); + + const argsToParams = args => { + const params = {}; + + if (typeof args[0] === 'object' && !isElement(args[0])) { + Object.assign(params, args[0]); + } else { + ['title', 'html', 'icon'].forEach((name, index) => { + const arg = args[index]; + + if (typeof arg === 'string' || isElement(arg)) { + params[name] = arg; + } else if (arg !== undefined) { + error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg)); + } + }); + } + + return params; + }; + + const swalPrefix = 'swal2-'; + const prefix = items => { + const result = {}; + + for (const i in items) { + result[items[i]] = swalPrefix + items[i]; + } + + return result; + }; + const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']); + const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']); + + const getContainer = () => document.body.querySelector(".".concat(swalClasses.container)); + const elementBySelector = selectorString => { + const container = getContainer(); + return container ? container.querySelector(selectorString) : null; + }; + + const elementByClass = className => { + return elementBySelector(".".concat(className)); + }; + + const getPopup = () => elementByClass(swalClasses.popup); + const getIcon = () => elementByClass(swalClasses.icon); + const getTitle = () => elementByClass(swalClasses.title); + const getHtmlContainer = () => elementByClass(swalClasses['html-container']); + const getImage = () => elementByClass(swalClasses.image); + const getProgressSteps = () => elementByClass(swalClasses['progress-steps']); + const getValidationMessage = () => elementByClass(swalClasses['validation-message']); + const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm)); + const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny)); + const getInputLabel = () => elementByClass(swalClasses['input-label']); + const getLoader = () => elementBySelector(".".concat(swalClasses.loader)); + const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel)); + const getActions = () => elementByClass(swalClasses.actions); + const getFooter = () => elementByClass(swalClasses.footer); + const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']); + const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js + + const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n"; + const getFocusableElements = () => { + const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex + .sort((a, b) => { + a = parseInt(a.getAttribute('tabindex')); + b = parseInt(b.getAttribute('tabindex')); + + if (a > b) { + return 1; + } else if (a < b) { + return -1; + } + + return 0; + }); + const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1'); + return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el)); + }; + const isModal = () => { + return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']); + }; + const isToast = () => { + return document.body.classList.contains(swalClasses['toast-shown']); + }; + const isLoading = () => { + return getPopup().hasAttribute('data-loading'); + }; + + const states = { + previousBodyPadding: null + }; + const setInnerHtml = (elem, html) => { + // #1926 + elem.textContent = ''; + + if (html) { + const parser = new DOMParser(); + const parsed = parser.parseFromString(html, "text/html"); + toArray(parsed.querySelector('head').childNodes).forEach(child => { + elem.appendChild(child); + }); + toArray(parsed.querySelector('body').childNodes).forEach(child => { + elem.appendChild(child); + }); + } + }; + const hasClass = (elem, className) => { + if (!className) { + return false; + } + + const classList = className.split(/\s+/); + + for (let i = 0; i < classList.length; i++) { + if (!elem.classList.contains(classList[i])) { + return false; + } + } + + return true; + }; + + const removeCustomClasses = (elem, params) => { + toArray(elem.classList).forEach(className => { + if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) { + elem.classList.remove(className); + } + }); + }; + + const applyCustomClass = (elem, params, className) => { + removeCustomClasses(elem, params); + + if (params.customClass && params.customClass[className]) { + if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) { + return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\"")); + } + + addClass(elem, params.customClass[className]); + } + }; + const getInput = (popup, inputType) => { + if (!inputType) { + return null; + } + + switch (inputType) { + case 'select': + case 'textarea': + case 'file': + return getChildByClass(popup, swalClasses[inputType]); + + case 'checkbox': + return popup.querySelector(".".concat(swalClasses.checkbox, " input")); + + case 'radio': + return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child")); + + case 'range': + return popup.querySelector(".".concat(swalClasses.range, " input")); + + default: + return getChildByClass(popup, swalClasses.input); + } + }; + const focusInput = input => { + input.focus(); // place cursor at end of text in text input + + if (input.type !== 'file') { + // http://stackoverflow.com/a/2345915 + const val = input.value; + input.value = ''; + input.value = val; + } + }; + const toggleClass = (target, classList, condition) => { + if (!target || !classList) { + return; + } + + if (typeof classList === 'string') { + classList = classList.split(/\s+/).filter(Boolean); + } + + classList.forEach(className => { + if (target.forEach) { + target.forEach(elem => { + condition ? elem.classList.add(className) : elem.classList.remove(className); + }); + } else { + condition ? target.classList.add(className) : target.classList.remove(className); + } + }); + }; + const addClass = (target, classList) => { + toggleClass(target, classList, true); + }; + const removeClass = (target, classList) => { + toggleClass(target, classList, false); + }; + const getChildByClass = (elem, className) => { + for (let i = 0; i < elem.childNodes.length; i++) { + if (hasClass(elem.childNodes[i], className)) { + return elem.childNodes[i]; + } + } + }; + const applyNumericalStyle = (elem, property, value) => { + if (value === "".concat(parseInt(value))) { + value = parseInt(value); + } + + if (value || parseInt(value) === 0) { + elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value; + } else { + elem.style.removeProperty(property); + } + }; + const show = (elem, display = 'flex') => { + elem.style.display = display; + }; + const hide = elem => { + elem.style.display = 'none'; + }; + const setStyle = (parent, selector, property, value) => { + const el = parent.querySelector(selector); + + if (el) { + el.style[property] = value; + } + }; + const toggle = (elem, condition, display) => { + condition ? show(elem, display) : hide(elem); + }; // borrowed from jquery $(elem).is(':visible') implementation + + const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length)); + const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton()); + const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119 + + const hasCssAnimation = elem => { + const style = window.getComputedStyle(elem); + const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0'); + const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0'); + return animDuration > 0 || transDuration > 0; + }; + const animateTimerProgressBar = (timer, reset = false) => { + const timerProgressBar = getTimerProgressBar(); + + if (isVisible(timerProgressBar)) { + if (reset) { + timerProgressBar.style.transition = 'none'; + timerProgressBar.style.width = '100%'; + } + + setTimeout(() => { + timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear"); + timerProgressBar.style.width = '0%'; + }, 10); + } + }; + const stopTimerProgressBar = () => { + const timerProgressBar = getTimerProgressBar(); + const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + timerProgressBar.style.removeProperty('transition'); + timerProgressBar.style.width = '100%'; + const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100); + timerProgressBar.style.removeProperty('transition'); + timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%"); + }; + + // Detect Node env + const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined'; + + const sweetHTML = "\n
      \n \n
        \n
        \n \n

        \n
        \n \n \n
        \n \n \n
        \n \n
        \n \n \n
        \n
        \n
        \n \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n").replace(/(^|\n)\s*/g, ''); + + const resetOldContainer = () => { + const oldContainer = getContainer(); + + if (!oldContainer) { + return false; + } + + oldContainer.remove(); + removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]); + return true; + }; + + const resetValidationMessage = () => { + if (Swal.isVisible()) { + Swal.resetValidationMessage(); + } + }; + + const addInputChangeListeners = () => { + const popup = getPopup(); + const input = getChildByClass(popup, swalClasses.input); + const file = getChildByClass(popup, swalClasses.file); + const range = popup.querySelector(".".concat(swalClasses.range, " input")); + const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output")); + const select = getChildByClass(popup, swalClasses.select); + const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input")); + const textarea = getChildByClass(popup, swalClasses.textarea); + input.oninput = resetValidationMessage; + file.onchange = resetValidationMessage; + select.onchange = resetValidationMessage; + checkbox.onchange = resetValidationMessage; + textarea.oninput = resetValidationMessage; + + range.oninput = () => { + resetValidationMessage(); + rangeOutput.value = range.value; + }; + + range.onchange = () => { + resetValidationMessage(); + range.nextSibling.value = range.value; + }; + }; + + const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target; + + const setupAccessibility = params => { + const popup = getPopup(); + popup.setAttribute('role', params.toast ? 'alert' : 'dialog'); + popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); + + if (!params.toast) { + popup.setAttribute('aria-modal', 'true'); + } + }; + + const setupRTL = targetElement => { + if (window.getComputedStyle(targetElement).direction === 'rtl') { + addClass(getContainer(), swalClasses.rtl); + } + }; + /* + * Add modal + backdrop to DOM + */ + + + const init = params => { + // Clean up the old popup container if it exists + const oldContainerExisted = resetOldContainer(); + /* istanbul ignore if */ + + if (isNodeEnv()) { + error('SweetAlert2 requires document to initialize'); + return; + } + + const container = document.createElement('div'); + container.className = swalClasses.container; + + if (oldContainerExisted) { + addClass(container, swalClasses['no-transition']); + } + + setInnerHtml(container, sweetHTML); + const targetElement = getTarget(params.target); + targetElement.appendChild(container); + setupAccessibility(params); + setupRTL(targetElement); + addInputChangeListeners(); + }; + + const parseHtmlToContainer = (param, target) => { + // DOM element + if (param instanceof HTMLElement) { + target.appendChild(param); // Object + } else if (typeof param === 'object') { + handleObject(param, target); // Plain string + } else if (param) { + setInnerHtml(target, param); + } + }; + + const handleObject = (param, target) => { + // JQuery element(s) + if (param.jquery) { + handleJqueryElem(target, param); // For other objects use their string representation + } else { + setInnerHtml(target, param.toString()); + } + }; + + const handleJqueryElem = (target, elem) => { + target.textContent = ''; + + if (0 in elem) { + for (let i = 0; (i in elem); i++) { + target.appendChild(elem[i].cloneNode(true)); + } + } else { + target.appendChild(elem.cloneNode(true)); + } + }; + + const animationEndEvent = (() => { + // Prevent run in Node env + + /* istanbul ignore if */ + if (isNodeEnv()) { + return false; + } + + const testEl = document.createElement('div'); + const transEndEventNames = { + WebkitAnimation: 'webkitAnimationEnd', + OAnimation: 'oAnimationEnd oanimationend', + animation: 'animationend' + }; + + for (const i in transEndEventNames) { + if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') { + return transEndEventNames[i]; + } + } + + return false; + })(); + + // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js + + const measureScrollbar = () => { + const scrollDiv = document.createElement('div'); + scrollDiv.className = swalClasses['scrollbar-measure']; + document.body.appendChild(scrollDiv); + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; + + const renderActions = (instance, params) => { + const actions = getActions(); + const loader = getLoader(); + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); // Actions (buttons) wrapper + + if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) { + hide(actions); + } else { + show(actions); + } // Custom class + + + applyCustomClass(actions, params, 'actions'); // Render buttons + + renderButton(confirmButton, 'confirm', params); + renderButton(denyButton, 'deny', params); + renderButton(cancelButton, 'cancel', params); + handleButtonsStyling(confirmButton, denyButton, cancelButton, params); + + if (params.reverseButtons) { + actions.insertBefore(cancelButton, loader); + actions.insertBefore(denyButton, loader); + actions.insertBefore(confirmButton, loader); + } // Loader + + + setInnerHtml(loader, params.loaderHtml); + applyCustomClass(loader, params, 'loader'); + }; + + function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) { + if (!params.buttonsStyling) { + return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled); + } + + addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors + + if (params.confirmButtonColor) { + confirmButton.style.backgroundColor = params.confirmButtonColor; + addClass(confirmButton, swalClasses['default-outline']); + } + + if (params.denyButtonColor) { + denyButton.style.backgroundColor = params.denyButtonColor; + addClass(denyButton, swalClasses['default-outline']); + } + + if (params.cancelButtonColor) { + cancelButton.style.backgroundColor = params.cancelButtonColor; + addClass(cancelButton, swalClasses['default-outline']); + } + } + + function renderButton(button, buttonType, params) { + toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block'); + setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text + + button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label + // Add buttons custom classes + + button.className = swalClasses[buttonType]; + applyCustomClass(button, params, "".concat(buttonType, "Button")); + addClass(button, params["".concat(buttonType, "ButtonClass")]); + } + + function handleBackdropParam(container, backdrop) { + if (typeof backdrop === 'string') { + container.style.background = backdrop; + } else if (!backdrop) { + addClass([document.documentElement, document.body], swalClasses['no-backdrop']); + } + } + + function handlePositionParam(container, position) { + if (position in swalClasses) { + addClass(container, swalClasses[position]); + } else { + warn('The "position" parameter is not valid, defaulting to "center"'); + addClass(container, swalClasses.center); + } + } + + function handleGrowParam(container, grow) { + if (grow && typeof grow === 'string') { + const growClass = "grow-".concat(grow); + + if (growClass in swalClasses) { + addClass(container, swalClasses[growClass]); + } + } + } + + const renderContainer = (instance, params) => { + const container = getContainer(); + + if (!container) { + return; + } + + handleBackdropParam(container, params.backdrop); + handlePositionParam(container, params.position); + handleGrowParam(container, params.grow); // Custom class + + applyCustomClass(container, params, 'container'); + }; + + /** + * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. + * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` + * This is the approach that Babel will probably take to implement private methods/fields + * https://github.com/tc39/proposal-private-methods + * https://github.com/babel/babel/pull/7555 + * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* + * then we can use that language feature. + */ + var privateProps = { + promise: new WeakMap(), + innerParams: new WeakMap(), + domCache: new WeakMap() + }; + + const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; + const renderInput = (instance, params) => { + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(instance); + const rerender = !innerParams || params.input !== innerParams.input; + inputTypes.forEach(inputType => { + const inputClass = swalClasses[inputType]; + const inputContainer = getChildByClass(popup, inputClass); // set attributes + + setAttributes(inputType, params.inputAttributes); // set class + + inputContainer.className = inputClass; + + if (rerender) { + hide(inputContainer); + } + }); + + if (params.input) { + if (rerender) { + showInput(params); + } // set custom class + + + setCustomClass(params); + } + }; + + const showInput = params => { + if (!renderInputType[params.input]) { + return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\"")); + } + + const inputContainer = getInputContainer(params.input); + const input = renderInputType[params.input](inputContainer, params); + show(input); // input autofocus + + setTimeout(() => { + focusInput(input); + }); + }; + + const removeAttributes = input => { + for (let i = 0; i < input.attributes.length; i++) { + const attrName = input.attributes[i].name; + + if (!['type', 'value', 'style'].includes(attrName)) { + input.removeAttribute(attrName); + } + } + }; + + const setAttributes = (inputType, inputAttributes) => { + const input = getInput(getPopup(), inputType); + + if (!input) { + return; + } + + removeAttributes(input); + + for (const attr in inputAttributes) { + input.setAttribute(attr, inputAttributes[attr]); + } + }; + + const setCustomClass = params => { + const inputContainer = getInputContainer(params.input); + + if (params.customClass) { + addClass(inputContainer, params.customClass.input); + } + }; + + const setInputPlaceholder = (input, params) => { + if (!input.placeholder || params.inputPlaceholder) { + input.placeholder = params.inputPlaceholder; + } + }; + + const setInputLabel = (input, prependTo, params) => { + if (params.inputLabel) { + input.id = swalClasses.input; + const label = document.createElement('label'); + const labelClass = swalClasses['input-label']; + label.setAttribute('for', input.id); + label.className = labelClass; + addClass(label, params.customClass.inputLabel); + label.innerText = params.inputLabel; + prependTo.insertAdjacentElement('beforebegin', label); + } + }; + + const getInputContainer = inputType => { + const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input; + return getChildByClass(getPopup(), inputClass); + }; + + const renderInputType = {}; + + renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => { + if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') { + input.value = params.inputValue; + } else if (!isPromise(params.inputValue)) { + warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\"")); + } + + setInputLabel(input, input, params); + setInputPlaceholder(input, params); + input.type = params.input; + return input; + }; + + renderInputType.file = (input, params) => { + setInputLabel(input, input, params); + setInputPlaceholder(input, params); + return input; + }; + + renderInputType.range = (range, params) => { + const rangeInput = range.querySelector('input'); + const rangeOutput = range.querySelector('output'); + rangeInput.value = params.inputValue; + rangeInput.type = params.input; + rangeOutput.value = params.inputValue; + setInputLabel(rangeInput, range, params); + return range; + }; + + renderInputType.select = (select, params) => { + select.textContent = ''; + + if (params.inputPlaceholder) { + const placeholder = document.createElement('option'); + setInnerHtml(placeholder, params.inputPlaceholder); + placeholder.value = ''; + placeholder.disabled = true; + placeholder.selected = true; + select.appendChild(placeholder); + } + + setInputLabel(select, select, params); + return select; + }; + + renderInputType.radio = radio => { + radio.textContent = ''; + return radio; + }; + + renderInputType.checkbox = (checkboxContainer, params) => { + const checkbox = getInput(getPopup(), 'checkbox'); + checkbox.value = 1; + checkbox.id = swalClasses.checkbox; + checkbox.checked = Boolean(params.inputValue); + const label = checkboxContainer.querySelector('span'); + setInnerHtml(label, params.inputPlaceholder); + return checkboxContainer; + }; + + renderInputType.textarea = (textarea, params) => { + textarea.value = params.inputValue; + setInputPlaceholder(textarea, params); + setInputLabel(textarea, textarea, params); + + const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); + + setTimeout(() => { + // #2291 + if ('MutationObserver' in window) { + // #1699 + const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); + + const textareaResizeHandler = () => { + const textareaWidth = textarea.offsetWidth + getMargin(textarea); + + if (textareaWidth > initialPopupWidth) { + getPopup().style.width = "".concat(textareaWidth, "px"); + } else { + getPopup().style.width = null; + } + }; + + new MutationObserver(textareaResizeHandler).observe(textarea, { + attributes: true, + attributeFilter: ['style'] + }); + } + }); + return textarea; + }; + + const renderContent = (instance, params) => { + const htmlContainer = getHtmlContainer(); + applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML + + if (params.html) { + parseHtmlToContainer(params.html, htmlContainer); + show(htmlContainer, 'block'); // Content as plain text + } else if (params.text) { + htmlContainer.textContent = params.text; + show(htmlContainer, 'block'); // No content + } else { + hide(htmlContainer); + } + + renderInput(instance, params); + }; + + const renderFooter = (instance, params) => { + const footer = getFooter(); + toggle(footer, params.footer); + + if (params.footer) { + parseHtmlToContainer(params.footer, footer); + } // Custom class + + + applyCustomClass(footer, params, 'footer'); + }; + + const renderCloseButton = (instance, params) => { + const closeButton = getCloseButton(); + setInnerHtml(closeButton, params.closeButtonHtml); // Custom class + + applyCustomClass(closeButton, params, 'closeButton'); + toggle(closeButton, params.showCloseButton); + closeButton.setAttribute('aria-label', params.closeButtonAriaLabel); + }; + + const renderIcon = (instance, params) => { + const innerParams = privateProps.innerParams.get(instance); + const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon + + if (innerParams && params.icon === innerParams.icon) { + // Custom or default content + setContent(icon, params); + applyStyles(icon, params); + return; + } + + if (!params.icon && !params.iconHtml) { + return hide(icon); + } + + if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) { + error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\"")); + return hide(icon); + } + + show(icon); // Custom or default content + + setContent(icon, params); + applyStyles(icon, params); // Animate icon + + addClass(icon, params.showClass.icon); + }; + + const applyStyles = (icon, params) => { + for (const iconType in iconTypes) { + if (params.icon !== iconType) { + removeClass(icon, iconTypes[iconType]); + } + } + + addClass(icon, iconTypes[params.icon]); // Icon color + + setColor(icon, params); // Success icon background color + + adjustSuccessIconBackgoundColor(); // Custom class + + applyCustomClass(icon, params, 'icon'); + }; // Adjust success icon background color to match the popup background color + + + const adjustSuccessIconBackgoundColor = () => { + const popup = getPopup(); + const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); + const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); + + for (let i = 0; i < successIconParts.length; i++) { + successIconParts[i].style.backgroundColor = popupBackgroundColor; + } + }; + + const setContent = (icon, params) => { + icon.textContent = ''; + + if (params.iconHtml) { + setInnerHtml(icon, iconContent(params.iconHtml)); + } else if (params.icon === 'success') { + setInnerHtml(icon, "\n
        \n \n
        \n
        \n "); + } else if (params.icon === 'error') { + setInnerHtml(icon, "\n \n \n \n \n "); + } else { + const defaultIconHtml = { + question: '?', + warning: '!', + info: 'i' + }; + setInnerHtml(icon, iconContent(defaultIconHtml[params.icon])); + } + }; + + const setColor = (icon, params) => { + if (!params.iconColor) { + return; + } + + icon.style.color = params.iconColor; + icon.style.borderColor = params.iconColor; + + for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) { + setStyle(icon, sel, 'backgroundColor', params.iconColor); + } + + setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor); + }; + + const iconContent = content => "
        ").concat(content, "
        "); + + const renderImage = (instance, params) => { + const image = getImage(); + + if (!params.imageUrl) { + return hide(image); + } + + show(image, ''); // Src, alt + + image.setAttribute('src', params.imageUrl); + image.setAttribute('alt', params.imageAlt); // Width, height + + applyNumericalStyle(image, 'width', params.imageWidth); + applyNumericalStyle(image, 'height', params.imageHeight); // Class + + image.className = swalClasses.image; + applyCustomClass(image, params, 'image'); + }; + + const createStepElement = step => { + const stepEl = document.createElement('li'); + addClass(stepEl, swalClasses['progress-step']); + setInnerHtml(stepEl, step); + return stepEl; + }; + + const createLineElement = params => { + const lineEl = document.createElement('li'); + addClass(lineEl, swalClasses['progress-step-line']); + + if (params.progressStepsDistance) { + lineEl.style.width = params.progressStepsDistance; + } + + return lineEl; + }; + + const renderProgressSteps = (instance, params) => { + const progressStepsContainer = getProgressSteps(); + + if (!params.progressSteps || params.progressSteps.length === 0) { + return hide(progressStepsContainer); + } + + show(progressStepsContainer); + progressStepsContainer.textContent = ''; + + if (params.currentProgressStep >= params.progressSteps.length) { + warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); + } + + params.progressSteps.forEach((step, index) => { + const stepEl = createStepElement(step); + progressStepsContainer.appendChild(stepEl); + + if (index === params.currentProgressStep) { + addClass(stepEl, swalClasses['active-progress-step']); + } + + if (index !== params.progressSteps.length - 1) { + const lineEl = createLineElement(params); + progressStepsContainer.appendChild(lineEl); + } + }); + }; + + const renderTitle = (instance, params) => { + const title = getTitle(); + toggle(title, params.title || params.titleText, 'block'); + + if (params.title) { + parseHtmlToContainer(params.title, title); + } + + if (params.titleText) { + title.innerText = params.titleText; + } // Custom class + + + applyCustomClass(title, params, 'title'); + }; + + const renderPopup = (instance, params) => { + const container = getContainer(); + const popup = getPopup(); // Width + + if (params.toast) { + // #2170 + applyNumericalStyle(container, 'width', params.width); + popup.style.width = '100%'; + popup.insertBefore(getLoader(), getIcon()); + } else { + applyNumericalStyle(popup, 'width', params.width); + } // Padding + + + applyNumericalStyle(popup, 'padding', params.padding); // Background + + if (params.background) { + popup.style.background = params.background; + } + + hide(getValidationMessage()); // Classes + + addClasses(popup, params); + }; + + const addClasses = (popup, params) => { + // Default Class + showClass when updating Swal.update({}) + popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : ''); + + if (params.toast) { + addClass([document.documentElement, document.body], swalClasses['toast-shown']); + addClass(popup, swalClasses.toast); + } else { + addClass(popup, swalClasses.modal); + } // Custom class + + + applyCustomClass(popup, params, 'popup'); + + if (typeof params.customClass === 'string') { + addClass(popup, params.customClass); + } // Icon class (#1842) + + + if (params.icon) { + addClass(popup, swalClasses["icon-".concat(params.icon)]); + } + }; + + const render = (instance, params) => { + renderPopup(instance, params); + renderContainer(instance, params); + renderProgressSteps(instance, params); + renderIcon(instance, params); + renderImage(instance, params); + renderTitle(instance, params); + renderCloseButton(instance, params); + renderContent(instance, params); + renderActions(instance, params); + renderFooter(instance, params); + + if (typeof params.didRender === 'function') { + params.didRender(getPopup()); + } + }; + + /* + * Global function to determine if SweetAlert2 popup is shown + */ + + const isVisible$1 = () => { + return isVisible(getPopup()); + }; + /* + * Global function to click 'Confirm' button + */ + + const clickConfirm = () => getConfirmButton() && getConfirmButton().click(); + /* + * Global function to click 'Deny' button + */ + + const clickDeny = () => getDenyButton() && getDenyButton().click(); + /* + * Global function to click 'Cancel' button + */ + + const clickCancel = () => getCancelButton() && getCancelButton().click(); + + function fire(...args) { + const Swal = this; + return new Swal(...args); + } + + /** + * Returns an extended version of `Swal` containing `params` as defaults. + * Useful for reusing Swal configuration. + * + * For example: + * + * Before: + * const textPromptOptions = { input: 'text', showCancelButton: true } + * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' }) + * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' }) + * + * After: + * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true }) + * const {value: firstName} = await TextPrompt('What is your first name?') + * const {value: lastName} = await TextPrompt('What is your last name?') + * + * @param mixinParams + */ + function mixin(mixinParams) { + class MixinSwal extends this { + _main(params, priorityMixinParams) { + return super._main(params, Object.assign({}, mixinParams, priorityMixinParams)); + } + + } + + return MixinSwal; + } + + /** + * Shows loader (spinner), this is useful with AJAX requests. + * By default the loader be shown instead of the "Confirm" button. + */ + + const showLoading = buttonToReplace => { + let popup = getPopup(); + + if (!popup) { + Swal.fire(); + } + + popup = getPopup(); + const loader = getLoader(); + + if (isToast()) { + hide(getIcon()); + } else { + replaceButton(popup, buttonToReplace); + } + + show(loader); + popup.setAttribute('data-loading', true); + popup.setAttribute('aria-busy', true); + popup.focus(); + }; + + const replaceButton = (popup, buttonToReplace) => { + const actions = getActions(); + const loader = getLoader(); + + if (!buttonToReplace && isVisible(getConfirmButton())) { + buttonToReplace = getConfirmButton(); + } + + show(actions); + + if (buttonToReplace) { + hide(buttonToReplace); + loader.setAttribute('data-button-to-replace', buttonToReplace.className); + } + + loader.parentNode.insertBefore(loader, buttonToReplace); + addClass([popup, actions], swalClasses.loading); + }; + + const RESTORE_FOCUS_TIMEOUT = 100; + + const globalState = {}; + + const focusPreviousActiveElement = () => { + if (globalState.previousActiveElement && globalState.previousActiveElement.focus) { + globalState.previousActiveElement.focus(); + globalState.previousActiveElement = null; + } else if (document.body) { + document.body.focus(); + } + }; // Restore previous active (focused) element + + + const restoreActiveElement = returnFocus => { + return new Promise(resolve => { + if (!returnFocus) { + return resolve(); + } + + const x = window.scrollX; + const y = window.scrollY; + globalState.restoreFocusTimeout = setTimeout(() => { + focusPreviousActiveElement(); + resolve(); + }, RESTORE_FOCUS_TIMEOUT); // issues/900 + + window.scrollTo(x, y); + }); + }; + + /** + * If `timer` parameter is set, returns number of milliseconds of timer remained. + * Otherwise, returns undefined. + */ + + const getTimerLeft = () => { + return globalState.timeout && globalState.timeout.getTimerLeft(); + }; + /** + * Stop timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const stopTimer = () => { + if (globalState.timeout) { + stopTimerProgressBar(); + return globalState.timeout.stop(); + } + }; + /** + * Resume timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const resumeTimer = () => { + if (globalState.timeout) { + const remaining = globalState.timeout.start(); + animateTimerProgressBar(remaining); + return remaining; + } + }; + /** + * Resume timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const toggleTimer = () => { + const timer = globalState.timeout; + return timer && (timer.running ? stopTimer() : resumeTimer()); + }; + /** + * Increase timer. Returns number of milliseconds of an updated timer. + * If `timer` parameter isn't set, returns undefined. + */ + + const increaseTimer = n => { + if (globalState.timeout) { + const remaining = globalState.timeout.increase(n); + animateTimerProgressBar(remaining, true); + return remaining; + } + }; + /** + * Check if timer is running. Returns true if timer is running + * or false if timer is paused or stopped. + * If `timer` parameter isn't set, returns undefined + */ + + const isTimerRunning = () => { + return globalState.timeout && globalState.timeout.isRunning(); + }; + + let bodyClickListenerAdded = false; + const clickHandlers = {}; + function bindClickHandler(attr = 'data-swal-template') { + clickHandlers[attr] = this; + + if (!bodyClickListenerAdded) { + document.body.addEventListener('click', bodyClickListener); + bodyClickListenerAdded = true; + } + } + + const bodyClickListener = event => { + for (let el = event.target; el && el !== document; el = el.parentNode) { + for (const attr in clickHandlers) { + const template = el.getAttribute(attr); + + if (template) { + clickHandlers[attr].fire({ + template + }); + return; + } + } + } + }; + + const defaultParams = { + title: '', + titleText: '', + text: '', + html: '', + footer: '', + icon: undefined, + iconColor: undefined, + iconHtml: undefined, + template: undefined, + toast: false, + showClass: { + popup: 'swal2-show', + backdrop: 'swal2-backdrop-show', + icon: 'swal2-icon-show' + }, + hideClass: { + popup: 'swal2-hide', + backdrop: 'swal2-backdrop-hide', + icon: 'swal2-icon-hide' + }, + customClass: {}, + target: 'body', + backdrop: true, + heightAuto: true, + allowOutsideClick: true, + allowEscapeKey: true, + allowEnterKey: true, + stopKeydownPropagation: true, + keydownListenerCapture: false, + showConfirmButton: true, + showDenyButton: false, + showCancelButton: false, + preConfirm: undefined, + preDeny: undefined, + confirmButtonText: 'OK', + confirmButtonAriaLabel: '', + confirmButtonColor: undefined, + denyButtonText: 'No', + denyButtonAriaLabel: '', + denyButtonColor: undefined, + cancelButtonText: 'Cancel', + cancelButtonAriaLabel: '', + cancelButtonColor: undefined, + buttonsStyling: true, + reverseButtons: false, + focusConfirm: true, + focusDeny: false, + focusCancel: false, + returnFocus: true, + showCloseButton: false, + closeButtonHtml: '×', + closeButtonAriaLabel: 'Close this dialog', + loaderHtml: '', + showLoaderOnConfirm: false, + showLoaderOnDeny: false, + imageUrl: undefined, + imageWidth: undefined, + imageHeight: undefined, + imageAlt: '', + timer: undefined, + timerProgressBar: false, + width: undefined, + padding: undefined, + background: undefined, + input: undefined, + inputPlaceholder: '', + inputLabel: '', + inputValue: '', + inputOptions: {}, + inputAutoTrim: true, + inputAttributes: {}, + inputValidator: undefined, + returnInputValueOnDeny: false, + validationMessage: undefined, + grow: false, + position: 'center', + progressSteps: [], + currentProgressStep: undefined, + progressStepsDistance: undefined, + willOpen: undefined, + didOpen: undefined, + didRender: undefined, + willClose: undefined, + didClose: undefined, + didDestroy: undefined, + scrollbarPadding: true + }; + const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose']; + const deprecatedParams = {}; + const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture']; + /** + * Is valid parameter + * @param {String} paramName + */ + + const isValidParameter = paramName => { + return Object.prototype.hasOwnProperty.call(defaultParams, paramName); + }; + /** + * Is valid parameter for Swal.update() method + * @param {String} paramName + */ + + const isUpdatableParameter = paramName => { + return updatableParams.indexOf(paramName) !== -1; + }; + /** + * Is deprecated parameter + * @param {String} paramName + */ + + const isDeprecatedParameter = paramName => { + return deprecatedParams[paramName]; + }; + + const checkIfParamIsValid = param => { + if (!isValidParameter(param)) { + warn("Unknown parameter \"".concat(param, "\"")); + } + }; + + const checkIfToastParamIsValid = param => { + if (toastIncompatibleParams.includes(param)) { + warn("The parameter \"".concat(param, "\" is incompatible with toasts")); + } + }; + + const checkIfParamIsDeprecated = param => { + if (isDeprecatedParameter(param)) { + warnAboutDeprecation(param, isDeprecatedParameter(param)); + } + }; + /** + * Show relevant warnings for given params + * + * @param params + */ + + + const showWarningsForParams = params => { + if (!params.backdrop && params.allowOutsideClick) { + warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); + } + + for (const param in params) { + checkIfParamIsValid(param); + + if (params.toast) { + checkIfToastParamIsValid(param); + } + + checkIfParamIsDeprecated(param); + } + }; + + + + var staticMethods = /*#__PURE__*/Object.freeze({ + isValidParameter: isValidParameter, + isUpdatableParameter: isUpdatableParameter, + isDeprecatedParameter: isDeprecatedParameter, + argsToParams: argsToParams, + isVisible: isVisible$1, + clickConfirm: clickConfirm, + clickDeny: clickDeny, + clickCancel: clickCancel, + getContainer: getContainer, + getPopup: getPopup, + getTitle: getTitle, + getHtmlContainer: getHtmlContainer, + getImage: getImage, + getIcon: getIcon, + getInputLabel: getInputLabel, + getCloseButton: getCloseButton, + getActions: getActions, + getConfirmButton: getConfirmButton, + getDenyButton: getDenyButton, + getCancelButton: getCancelButton, + getLoader: getLoader, + getFooter: getFooter, + getTimerProgressBar: getTimerProgressBar, + getFocusableElements: getFocusableElements, + getValidationMessage: getValidationMessage, + isLoading: isLoading, + fire: fire, + mixin: mixin, + showLoading: showLoading, + enableLoading: showLoading, + getTimerLeft: getTimerLeft, + stopTimer: stopTimer, + resumeTimer: resumeTimer, + toggleTimer: toggleTimer, + increaseTimer: increaseTimer, + isTimerRunning: isTimerRunning, + bindClickHandler: bindClickHandler + }); + + /** + * Hides loader and shows back the button which was hidden by .showLoading() + */ + + function hideLoading() { + // do nothing if popup is closed + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams) { + return; + } + + const domCache = privateProps.domCache.get(this); + hide(domCache.loader); + + if (isToast()) { + if (innerParams.icon) { + show(getIcon()); + } + } else { + showRelatedButton(domCache); + } + + removeClass([domCache.popup, domCache.actions], swalClasses.loading); + domCache.popup.removeAttribute('aria-busy'); + domCache.popup.removeAttribute('data-loading'); + domCache.confirmButton.disabled = false; + domCache.denyButton.disabled = false; + domCache.cancelButton.disabled = false; + } + + const showRelatedButton = domCache => { + const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace')); + + if (buttonToReplace.length) { + show(buttonToReplace[0], 'inline-block'); + } else if (allButtonsAreHidden()) { + hide(domCache.actions); + } + }; + + function getInput$1(instance) { + const innerParams = privateProps.innerParams.get(instance || this); + const domCache = privateProps.domCache.get(instance || this); + + if (!domCache) { + return null; + } + + return getInput(domCache.popup, innerParams.input); + } + + const fixScrollbar = () => { + // for queues, do not do this more than once + if (states.previousBodyPadding !== null) { + return; + } // if the body has overflow + + + if (document.body.scrollHeight > window.innerHeight) { + // add padding so the content doesn't shift after removal of scrollbar + states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right')); + document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px"); + } + }; + const undoScrollbar = () => { + if (states.previousBodyPadding !== null) { + document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px"); + states.previousBodyPadding = null; + } + }; + + /* istanbul ignore file */ + + const iOSfix = () => { + const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1; + + if (iOS && !hasClass(document.body, swalClasses.iosfix)) { + const offset = document.body.scrollTop; + document.body.style.top = "".concat(offset * -1, "px"); + addClass(document.body, swalClasses.iosfix); + lockBodyScroll(); + addBottomPaddingForTallPopups(); // #1948 + } + }; + + const addBottomPaddingForTallPopups = () => { + const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i); + + if (safari) { + const bottomPanelHeight = 44; + + if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) { + getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px"); + } + } + }; + + const lockBodyScroll = () => { + // #1246 + const container = getContainer(); + let preventTouchMove; + + container.ontouchstart = e => { + preventTouchMove = shouldPreventTouchMove(e); + }; + + container.ontouchmove = e => { + if (preventTouchMove) { + e.preventDefault(); + e.stopPropagation(); + } + }; + }; + + const shouldPreventTouchMove = event => { + const target = event.target; + const container = getContainer(); + + if (isStylys(event) || isZoom(event)) { + return false; + } + + if (target === container) { + return true; + } + + if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603 + target.tagName !== 'TEXTAREA' && // #2266 + !(isScrollable(getHtmlContainer()) && // #1944 + getHtmlContainer().contains(target))) { + return true; + } + + return false; + }; + + const isStylys = event => { + // #1786 + return event.touches && event.touches.length && event.touches[0].touchType === 'stylus'; + }; + + const isZoom = event => { + // #1891 + return event.touches && event.touches.length > 1; + }; + + const undoIOSfix = () => { + if (hasClass(document.body, swalClasses.iosfix)) { + const offset = parseInt(document.body.style.top, 10); + removeClass(document.body, swalClasses.iosfix); + document.body.style.top = ''; + document.body.scrollTop = offset * -1; + } + }; + + // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that + // elements not within the active modal dialog will not be surfaced if a user opens a screen + // reader’s list of elements (headings, form controls, landmarks, etc.) in the document. + + const setAriaHidden = () => { + const bodyChildren = toArray(document.body.children); + bodyChildren.forEach(el => { + if (el === getContainer() || el.contains(getContainer())) { + return; + } + + if (el.hasAttribute('aria-hidden')) { + el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden')); + } + + el.setAttribute('aria-hidden', 'true'); + }); + }; + const unsetAriaHidden = () => { + const bodyChildren = toArray(document.body.children); + bodyChildren.forEach(el => { + if (el.hasAttribute('data-previous-aria-hidden')) { + el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden')); + el.removeAttribute('data-previous-aria-hidden'); + } else { + el.removeAttribute('aria-hidden'); + } + }); + }; + + /** + * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. + * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` + * This is the approach that Babel will probably take to implement private methods/fields + * https://github.com/tc39/proposal-private-methods + * https://github.com/babel/babel/pull/7555 + * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* + * then we can use that language feature. + */ + var privateMethods = { + swalPromiseResolve: new WeakMap() + }; + + /* + * Instance method to close sweetAlert + */ + + function removePopupAndResetState(instance, container, returnFocus, didClose) { + if (isToast()) { + triggerDidCloseAndDispose(instance, didClose); + } else { + restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose)); + globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = false; + } + + const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088 + // for some reason removing the container in Safari will scroll the document to bottom + + if (isSafari) { + container.setAttribute('style', 'display:none !important'); + container.removeAttribute('class'); + container.innerHTML = ''; + } else { + container.remove(); + } + + if (isModal()) { + undoScrollbar(); + undoIOSfix(); + unsetAriaHidden(); + } + + removeBodyClasses(); + } + + function removeBodyClasses() { + removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]); + } + + function close(resolveValue) { + const popup = getPopup(); + + if (!popup) { + return; + } + + resolveValue = prepareResolveValue(resolveValue); + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) { + return; + } + + const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); + removeClass(popup, innerParams.showClass.popup); + addClass(popup, innerParams.hideClass.popup); + const backdrop = getContainer(); + removeClass(backdrop, innerParams.showClass.backdrop); + addClass(backdrop, innerParams.hideClass.backdrop); + handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise + + swalPromiseResolve(resolveValue); + } + + const prepareResolveValue = resolveValue => { + // When user calls Swal.close() + if (typeof resolveValue === 'undefined') { + return { + isConfirmed: false, + isDenied: false, + isDismissed: true + }; + } + + return Object.assign({ + isConfirmed: false, + isDenied: false, + isDismissed: false + }, resolveValue); + }; + + const handlePopupAnimation = (instance, popup, innerParams) => { + const container = getContainer(); // If animation is supported, animate + + const animationIsSupported = animationEndEvent && hasCssAnimation(popup); + + if (typeof innerParams.willClose === 'function') { + innerParams.willClose(popup); + } + + if (animationIsSupported) { + animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose); + } else { + // Otherwise, remove immediately + removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose); + } + }; + + const animatePopup = (instance, popup, container, returnFocus, didClose) => { + globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose); + popup.addEventListener(animationEndEvent, function (e) { + if (e.target === popup) { + globalState.swalCloseEventFinishedCallback(); + delete globalState.swalCloseEventFinishedCallback; + } + }); + }; + + const triggerDidCloseAndDispose = (instance, didClose) => { + setTimeout(() => { + if (typeof didClose === 'function') { + didClose.bind(instance.params)(); + } + + instance._destroy(); + }); + }; + + function setButtonsDisabled(instance, buttons, disabled) { + const domCache = privateProps.domCache.get(instance); + buttons.forEach(button => { + domCache[button].disabled = disabled; + }); + } + + function setInputDisabled(input, disabled) { + if (!input) { + return false; + } + + if (input.type === 'radio') { + const radiosContainer = input.parentNode.parentNode; + const radios = radiosContainer.querySelectorAll('input'); + + for (let i = 0; i < radios.length; i++) { + radios[i].disabled = disabled; + } + } else { + input.disabled = disabled; + } + } + + function enableButtons() { + setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false); + } + function disableButtons() { + setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true); + } + function enableInput() { + return setInputDisabled(this.getInput(), false); + } + function disableInput() { + return setInputDisabled(this.getInput(), true); + } + + function showValidationMessage(error) { + const domCache = privateProps.domCache.get(this); + const params = privateProps.innerParams.get(this); + setInnerHtml(domCache.validationMessage, error); + domCache.validationMessage.className = swalClasses['validation-message']; + + if (params.customClass && params.customClass.validationMessage) { + addClass(domCache.validationMessage, params.customClass.validationMessage); + } + + show(domCache.validationMessage); + const input = this.getInput(); + + if (input) { + input.setAttribute('aria-invalid', true); + input.setAttribute('aria-describedby', swalClasses['validation-message']); + focusInput(input); + addClass(input, swalClasses.inputerror); + } + } // Hide block with validation message + + function resetValidationMessage$1() { + const domCache = privateProps.domCache.get(this); + + if (domCache.validationMessage) { + hide(domCache.validationMessage); + } + + const input = this.getInput(); + + if (input) { + input.removeAttribute('aria-invalid'); + input.removeAttribute('aria-describedby'); + removeClass(input, swalClasses.inputerror); + } + } + + function getProgressSteps$1() { + const domCache = privateProps.domCache.get(this); + return domCache.progressSteps; + } + + class Timer { + constructor(callback, delay) { + this.callback = callback; + this.remaining = delay; + this.running = false; + this.start(); + } + + start() { + if (!this.running) { + this.running = true; + this.started = new Date(); + this.id = setTimeout(this.callback, this.remaining); + } + + return this.remaining; + } + + stop() { + if (this.running) { + this.running = false; + clearTimeout(this.id); + this.remaining -= new Date() - this.started; + } + + return this.remaining; + } + + increase(n) { + const running = this.running; + + if (running) { + this.stop(); + } + + this.remaining += n; + + if (running) { + this.start(); + } + + return this.remaining; + } + + getTimerLeft() { + if (this.running) { + this.stop(); + this.start(); + } + + return this.remaining; + } + + isRunning() { + return this.running; + } + + } + + var defaultInputValidators = { + email: (string, validationMessage) => { + return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address'); + }, + url: (string, validationMessage) => { + // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013 + return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL'); + } + }; + + function setDefaultInputValidators(params) { + // Use default `inputValidator` for supported input types if not provided + if (!params.inputValidator) { + Object.keys(defaultInputValidators).forEach(key => { + if (params.input === key) { + params.inputValidator = defaultInputValidators[key]; + } + }); + } + } + + function validateCustomTargetElement(params) { + // Determine if the custom target element is valid + if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) { + warn('Target parameter is not valid, defaulting to "body"'); + params.target = 'body'; + } + } + /** + * Set type, text and actions on popup + * + * @param params + * @returns {boolean} + */ + + + function setParameters(params) { + setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm + + if (params.showLoaderOnConfirm && !params.preConfirm) { + warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request'); + } + + validateCustomTargetElement(params); // Replace newlines with
        in title + + if (typeof params.title === 'string') { + params.title = params.title.split('\n').join('
        '); + } + + init(params); + } + + const swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; + const getTemplateParams = params => { + const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template; + + if (!template) { + return {}; + } + + const templateContent = template.content; + showWarningsForElements(templateContent); + const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); + return result; + }; + + const getSwalParams = templateContent => { + const result = {}; + toArray(templateContent.querySelectorAll('swal-param')).forEach(param => { + showWarningsForAttributes(param, ['name', 'value']); + const paramName = param.getAttribute('name'); + let value = param.getAttribute('value'); + + if (typeof defaultParams[paramName] === 'boolean' && value === 'false') { + value = false; + } + + if (typeof defaultParams[paramName] === 'object') { + value = JSON.parse(value); + } + + result[paramName] = value; + }); + return result; + }; + + const getSwalButtons = templateContent => { + const result = {}; + toArray(templateContent.querySelectorAll('swal-button')).forEach(button => { + showWarningsForAttributes(button, ['type', 'color', 'aria-label']); + const type = button.getAttribute('type'); + result["".concat(type, "ButtonText")] = button.innerHTML; + result["show".concat(capitalizeFirstLetter(type), "Button")] = true; + + if (button.hasAttribute('color')) { + result["".concat(type, "ButtonColor")] = button.getAttribute('color'); + } + + if (button.hasAttribute('aria-label')) { + result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label'); + } + }); + return result; + }; + + const getSwalImage = templateContent => { + const result = {}; + const image = templateContent.querySelector('swal-image'); + + if (image) { + showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']); + + if (image.hasAttribute('src')) { + result.imageUrl = image.getAttribute('src'); + } + + if (image.hasAttribute('width')) { + result.imageWidth = image.getAttribute('width'); + } + + if (image.hasAttribute('height')) { + result.imageHeight = image.getAttribute('height'); + } + + if (image.hasAttribute('alt')) { + result.imageAlt = image.getAttribute('alt'); + } + } + + return result; + }; + + const getSwalIcon = templateContent => { + const result = {}; + const icon = templateContent.querySelector('swal-icon'); + + if (icon) { + showWarningsForAttributes(icon, ['type', 'color']); + + if (icon.hasAttribute('type')) { + result.icon = icon.getAttribute('type'); + } + + if (icon.hasAttribute('color')) { + result.iconColor = icon.getAttribute('color'); + } + + result.iconHtml = icon.innerHTML; + } + + return result; + }; + + const getSwalInput = templateContent => { + const result = {}; + const input = templateContent.querySelector('swal-input'); + + if (input) { + showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']); + result.input = input.getAttribute('type') || 'text'; + + if (input.hasAttribute('label')) { + result.inputLabel = input.getAttribute('label'); + } + + if (input.hasAttribute('placeholder')) { + result.inputPlaceholder = input.getAttribute('placeholder'); + } + + if (input.hasAttribute('value')) { + result.inputValue = input.getAttribute('value'); + } + } + + const inputOptions = templateContent.querySelectorAll('swal-input-option'); + + if (inputOptions.length) { + result.inputOptions = {}; + toArray(inputOptions).forEach(option => { + showWarningsForAttributes(option, ['value']); + const optionValue = option.getAttribute('value'); + const optionName = option.innerHTML; + result.inputOptions[optionValue] = optionName; + }); + } + + return result; + }; + + const getSwalStringParams = (templateContent, paramNames) => { + const result = {}; + + for (const i in paramNames) { + const paramName = paramNames[i]; + const tag = templateContent.querySelector(paramName); + + if (tag) { + showWarningsForAttributes(tag, []); + result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim(); + } + } + + return result; + }; + + const showWarningsForElements = template => { + const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); + toArray(template.children).forEach(el => { + const tagName = el.tagName.toLowerCase(); + + if (allowedElements.indexOf(tagName) === -1) { + warn("Unrecognized element <".concat(tagName, ">")); + } + }); + }; + + const showWarningsForAttributes = (el, allowedAttributes) => { + toArray(el.attributes).forEach(attribute => { + if (allowedAttributes.indexOf(attribute.name) === -1) { + warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]); + } + }); + }; + + const SHOW_CLASS_TIMEOUT = 10; + /** + * Open popup, add necessary classes and styles, fix scrollbar + * + * @param params + */ + + const openPopup = params => { + const container = getContainer(); + const popup = getPopup(); + + if (typeof params.willOpen === 'function') { + params.willOpen(popup); + } + + const bodyStyles = window.getComputedStyle(document.body); + const initialBodyOverflow = bodyStyles.overflowY; + addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto' + + setTimeout(() => { + setScrollingVisibility(container, popup); + }, SHOW_CLASS_TIMEOUT); + + if (isModal()) { + fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow); + setAriaHidden(); + } + + if (!isToast() && !globalState.previousActiveElement) { + globalState.previousActiveElement = document.activeElement; + } + + if (typeof params.didOpen === 'function') { + setTimeout(() => params.didOpen(popup)); + } + + removeClass(container, swalClasses['no-transition']); + }; + + const swalOpenAnimationFinished = event => { + const popup = getPopup(); + + if (event.target !== popup) { + return; + } + + const container = getContainer(); + popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished); + container.style.overflowY = 'auto'; + }; + + const setScrollingVisibility = (container, popup) => { + if (animationEndEvent && hasCssAnimation(popup)) { + container.style.overflowY = 'hidden'; + popup.addEventListener(animationEndEvent, swalOpenAnimationFinished); + } else { + container.style.overflowY = 'auto'; + } + }; + + const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => { + iOSfix(); + + if (scrollbarPadding && initialBodyOverflow !== 'hidden') { + fixScrollbar(); + } // sweetalert2/issues/1247 + + + setTimeout(() => { + container.scrollTop = 0; + }); + }; + + const addClasses$1 = (container, popup, params) => { + addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059 + + popup.style.setProperty('opacity', '0', 'important'); + show(popup, 'grid'); + setTimeout(() => { + // Animate popup right after showing it + addClass(popup, params.showClass.popup); // and remove the opacity workaround + + popup.style.removeProperty('opacity'); + }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062 + + addClass([document.documentElement, document.body], swalClasses.shown); + + if (params.heightAuto && params.backdrop && !params.toast) { + addClass([document.documentElement, document.body], swalClasses['height-auto']); + } + }; + + const handleInputOptionsAndValue = (instance, params) => { + if (params.input === 'select' || params.input === 'radio') { + handleInputOptions(instance, params); + } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { + showLoading(getConfirmButton()); + handleInputValue(instance, params); + } + }; + const getInputValue = (instance, innerParams) => { + const input = instance.getInput(); + + if (!input) { + return null; + } + + switch (innerParams.input) { + case 'checkbox': + return getCheckboxValue(input); + + case 'radio': + return getRadioValue(input); + + case 'file': + return getFileValue(input); + + default: + return innerParams.inputAutoTrim ? input.value.trim() : input.value; + } + }; + + const getCheckboxValue = input => input.checked ? 1 : 0; + + const getRadioValue = input => input.checked ? input.value : null; + + const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; + + const handleInputOptions = (instance, params) => { + const popup = getPopup(); + + const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params); + + if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) { + showLoading(getConfirmButton()); + asPromise(params.inputOptions).then(inputOptions => { + instance.hideLoading(); + processInputOptions(inputOptions); + }); + } else if (typeof params.inputOptions === 'object') { + processInputOptions(params.inputOptions); + } else { + error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions)); + } + }; + + const handleInputValue = (instance, params) => { + const input = instance.getInput(); + hide(input); + asPromise(params.inputValue).then(inputValue => { + input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue); + show(input); + input.focus(); + instance.hideLoading(); + }).catch(err => { + error("Error in inputValue promise: ".concat(err)); + input.value = ''; + show(input); + input.focus(); + instance.hideLoading(); + }); + }; + + const populateInputOptions = { + select: (popup, inputOptions, params) => { + const select = getChildByClass(popup, swalClasses.select); + + const renderOption = (parent, optionLabel, optionValue) => { + const option = document.createElement('option'); + option.value = optionValue; + setInnerHtml(option, optionLabel); + option.selected = isSelected(optionValue, params.inputValue); + parent.appendChild(option); + }; + + inputOptions.forEach(inputOption => { + const optionValue = inputOption[0]; + const optionLabel = inputOption[1]; // spec: + // https://www.w3.org/TR/html401/interact/forms.html#h-17.6 + // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..." + // check whether this is a + + if (Array.isArray(optionLabel)) { + // if it is an array, then it is an + const optgroup = document.createElement('optgroup'); + optgroup.label = optionValue; + optgroup.disabled = false; // not configurable for now + + select.appendChild(optgroup); + optionLabel.forEach(o => renderOption(optgroup, o[1], o[0])); + } else { + // case of + valueFormatted = formatInputOptions(valueFormatted); + } + + result.push([key, valueFormatted]); + }); + } else { + Object.keys(inputOptions).forEach(key => { + let valueFormatted = inputOptions[key]; + + if (typeof valueFormatted === 'object') { + // case of + valueFormatted = formatInputOptions(valueFormatted); + } + + result.push([key, valueFormatted]); + }); + } + + return result; + }; + + const isSelected = (optionValue, inputValue) => { + return inputValue && inputValue.toString() === optionValue.toString(); + }; + + const handleConfirmButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableButtons(); + + if (innerParams.input) { + handleConfirmOrDenyWithInput(instance, 'confirm'); + } else { + confirm(instance, true); + } + }; + const handleDenyButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableButtons(); + + if (innerParams.returnInputValueOnDeny) { + handleConfirmOrDenyWithInput(instance, 'deny'); + } else { + deny(instance, false); + } + }; + const handleCancelButtonClick = (instance, dismissWith) => { + instance.disableButtons(); + dismissWith(DismissReason.cancel); + }; + + const handleConfirmOrDenyWithInput = (instance, type + /* 'confirm' | 'deny' */ + ) => { + const innerParams = privateProps.innerParams.get(instance); + const inputValue = getInputValue(instance, innerParams); + + if (innerParams.inputValidator) { + handleInputValidator(instance, inputValue, type); + } else if (!instance.getInput().checkValidity()) { + instance.enableButtons(); + instance.showValidationMessage(innerParams.validationMessage); + } else if (type === 'deny') { + deny(instance, inputValue); + } else { + confirm(instance, inputValue); + } + }; + + const handleInputValidator = (instance, inputValue, type + /* 'confirm' | 'deny' */ + ) => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableInput(); + const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage))); + validationPromise.then(validationMessage => { + instance.enableButtons(); + instance.enableInput(); + + if (validationMessage) { + instance.showValidationMessage(validationMessage); + } else if (type === 'deny') { + deny(instance, inputValue); + } else { + confirm(instance, inputValue); + } + }); + }; + + const deny = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); + + if (innerParams.showLoaderOnDeny) { + showLoading(getDenyButton()); + } + + if (innerParams.preDeny) { + const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage))); + preDenyPromise.then(preDenyValue => { + if (preDenyValue === false) { + instance.hideLoading(); + } else { + instance.closePopup({ + isDenied: true, + value: typeof preDenyValue === 'undefined' ? value : preDenyValue + }); + } + }); + } else { + instance.closePopup({ + isDenied: true, + value + }); + } + }; + + const succeedWith = (instance, value) => { + instance.closePopup({ + isConfirmed: true, + value + }); + }; + + const confirm = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); + + if (innerParams.showLoaderOnConfirm) { + showLoading(); + } + + if (innerParams.preConfirm) { + instance.resetValidationMessage(); + const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage))); + preConfirmPromise.then(preConfirmValue => { + if (isVisible(getValidationMessage()) || preConfirmValue === false) { + instance.hideLoading(); + } else { + succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue); + } + }); + } else { + succeedWith(instance, value); + } + }; + + const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => { + if (globalState.keydownTarget && globalState.keydownHandlerAdded) { + globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = false; + } + + if (!innerParams.toast) { + globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith); + + globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup(); + globalState.keydownListenerCapture = innerParams.keydownListenerCapture; + globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = true; + } + }; // Focus handling + + const setFocus = (innerParams, index, increment) => { + const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match + + if (focusableElements.length) { + index = index + increment; // rollover to first item + + if (index === focusableElements.length) { + index = 0; // go to last item + } else if (index === -1) { + index = focusableElements.length - 1; + } + + return focusableElements[index].focus(); + } // no visible focusable elements, focus the popup + + + getPopup().focus(); + }; + const arrowKeysNextButton = ['ArrowRight', 'ArrowDown']; + const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp']; + + const keydownHandler = (instance, e, dismissWith) => { + const innerParams = privateProps.innerParams.get(instance); + + if (!innerParams) { + return; // This instance has already been destroyed + } + + if (innerParams.stopKeydownPropagation) { + e.stopPropagation(); + } // ENTER + + + if (e.key === 'Enter') { + handleEnter(instance, e, innerParams); // TAB + } else if (e.key === 'Tab') { + handleTab(e, innerParams); // ARROWS - switch focus between buttons + } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) { + handleArrows(e.key); // ESC + } else if (e.key === 'Escape') { + handleEsc(e, innerParams, dismissWith); + } + }; + + const handleEnter = (instance, e, innerParams) => { + // #720 #721 + if (e.isComposing) { + return; + } + + if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) { + if (['textarea', 'file'].includes(innerParams.input)) { + return; // do not submit + } + + clickConfirm(); + e.preventDefault(); + } + }; + + const handleTab = (e, innerParams) => { + const targetElement = e.target; + const focusableElements = getFocusableElements(); + let btnIndex = -1; + + for (let i = 0; i < focusableElements.length; i++) { + if (targetElement === focusableElements[i]) { + btnIndex = i; + break; + } + } + + if (!e.shiftKey) { + // Cycle to the next button + setFocus(innerParams, btnIndex, 1); + } else { + // Cycle to the prev button + setFocus(innerParams, btnIndex, -1); + } + + e.stopPropagation(); + e.preventDefault(); + }; + + const handleArrows = key => { + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); + + if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) { + return; + } + + const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling'; + const buttonToFocus = document.activeElement[sibling]; + + if (buttonToFocus) { + buttonToFocus.focus(); + } + }; + + const handleEsc = (e, innerParams, dismissWith) => { + if (callIfFunction(innerParams.allowEscapeKey)) { + e.preventDefault(); + dismissWith(DismissReason.esc); + } + }; + + const handlePopupClick = (instance, domCache, dismissWith) => { + const innerParams = privateProps.innerParams.get(instance); + + if (innerParams.toast) { + handleToastClick(instance, domCache, dismissWith); + } else { + // Ignore click events that had mousedown on the popup but mouseup on the container + // This can happen when the user drags a slider + handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup + + handleContainerMousedown(domCache); + handleModalClick(instance, domCache, dismissWith); + } + }; + + const handleToastClick = (instance, domCache, dismissWith) => { + // Closing toast by internal click + domCache.popup.onclick = () => { + const innerParams = privateProps.innerParams.get(instance); + + if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) { + return; + } + + dismissWith(DismissReason.close); + }; + }; + + let ignoreOutsideClick = false; + + const handleModalMousedown = domCache => { + domCache.popup.onmousedown = () => { + domCache.container.onmouseup = function (e) { + domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't + // have any other direct children aside of the popup + + if (e.target === domCache.container) { + ignoreOutsideClick = true; + } + }; + }; + }; + + const handleContainerMousedown = domCache => { + domCache.container.onmousedown = () => { + domCache.popup.onmouseup = function (e) { + domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup + + if (e.target === domCache.popup || domCache.popup.contains(e.target)) { + ignoreOutsideClick = true; + } + }; + }; + }; + + const handleModalClick = (instance, domCache, dismissWith) => { + domCache.container.onclick = e => { + const innerParams = privateProps.innerParams.get(instance); + + if (ignoreOutsideClick) { + ignoreOutsideClick = false; + return; + } + + if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) { + dismissWith(DismissReason.backdrop); + } + }; + }; + + function _main(userParams, mixinParams = {}) { + showWarningsForParams(Object.assign({}, mixinParams, userParams)); + + if (globalState.currentInstance) { + globalState.currentInstance._destroy(); + + if (isModal()) { + unsetAriaHidden(); + } + } + + globalState.currentInstance = this; + const innerParams = prepareParams(userParams, mixinParams); + setParameters(innerParams); + Object.freeze(innerParams); // clear the previous timer + + if (globalState.timeout) { + globalState.timeout.stop(); + delete globalState.timeout; + } // clear the restore focus timeout + + + clearTimeout(globalState.restoreFocusTimeout); + const domCache = populateDomCache(this); + render(this, innerParams); + privateProps.innerParams.set(this, innerParams); + return swalPromise(this, domCache, innerParams); + } + + const prepareParams = (userParams, mixinParams) => { + const templateParams = getTemplateParams(userParams); + const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 + + params.showClass = Object.assign({}, defaultParams.showClass, params.showClass); + params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass); + return params; + }; + + const swalPromise = (instance, domCache, innerParams) => { + return new Promise(resolve => { + // functions to handle all closings/dismissals + const dismissWith = dismiss => { + instance.closePopup({ + isDismissed: true, + dismiss + }); + }; + + privateMethods.swalPromiseResolve.set(instance, resolve); + + domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance); + + domCache.denyButton.onclick = () => handleDenyButtonClick(instance); + + domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith); + + domCache.closeButton.onclick = () => dismissWith(DismissReason.close); + + handlePopupClick(instance, domCache, dismissWith); + addKeydownHandler(instance, globalState, innerParams, dismissWith); + handleInputOptionsAndValue(instance, innerParams); + openPopup(innerParams); + setupTimer(globalState, innerParams, dismissWith); + initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946) + + setTimeout(() => { + domCache.container.scrollTop = 0; + }); + }); + }; + + const populateDomCache = instance => { + const domCache = { + popup: getPopup(), + container: getContainer(), + actions: getActions(), + confirmButton: getConfirmButton(), + denyButton: getDenyButton(), + cancelButton: getCancelButton(), + loader: getLoader(), + closeButton: getCloseButton(), + validationMessage: getValidationMessage(), + progressSteps: getProgressSteps() + }; + privateProps.domCache.set(instance, domCache); + return domCache; + }; + + const setupTimer = (globalState$$1, innerParams, dismissWith) => { + const timerProgressBar = getTimerProgressBar(); + hide(timerProgressBar); + + if (innerParams.timer) { + globalState$$1.timeout = new Timer(() => { + dismissWith('timer'); + delete globalState$$1.timeout; + }, innerParams.timer); + + if (innerParams.timerProgressBar) { + show(timerProgressBar); + setTimeout(() => { + if (globalState$$1.timeout && globalState$$1.timeout.running) { + // timer can be already stopped or unset at this point + animateTimerProgressBar(innerParams.timer); + } + }); + } + } + }; + + const initFocus = (domCache, innerParams) => { + if (innerParams.toast) { + return; + } + + if (!callIfFunction(innerParams.allowEnterKey)) { + return blurActiveElement(); + } + + if (!focusButton(domCache, innerParams)) { + setFocus(innerParams, -1, 1); + } + }; + + const focusButton = (domCache, innerParams) => { + if (innerParams.focusDeny && isVisible(domCache.denyButton)) { + domCache.denyButton.focus(); + return true; + } + + if (innerParams.focusCancel && isVisible(domCache.cancelButton)) { + domCache.cancelButton.focus(); + return true; + } + + if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) { + domCache.confirmButton.focus(); + return true; + } + + return false; + }; + + const blurActiveElement = () => { + if (document.activeElement && typeof document.activeElement.blur === 'function') { + document.activeElement.blur(); + } + }; + + /** + * Updates popup parameters. + */ + + function update(params) { + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(this); + + if (!popup || hasClass(popup, innerParams.hideClass.popup)) { + return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup."); + } + + const validUpdatableParams = {}; // assign valid params from `params` to `defaults` + + Object.keys(params).forEach(param => { + if (Swal.isUpdatableParameter(param)) { + validUpdatableParams[param] = params[param]; + } else { + warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md")); + } + }); + const updatedParams = Object.assign({}, innerParams, validUpdatableParams); + render(this, updatedParams); + privateProps.innerParams.set(this, updatedParams); + Object.defineProperties(this, { + params: { + value: Object.assign({}, this.params, params), + writable: false, + enumerable: true + } + }); + } + + function _destroy() { + const domCache = privateProps.domCache.get(this); + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams) { + return; // This instance has already been destroyed + } // Check if there is another Swal closing + + + if (domCache.popup && globalState.swalCloseEventFinishedCallback) { + globalState.swalCloseEventFinishedCallback(); + delete globalState.swalCloseEventFinishedCallback; + } // Check if there is a swal disposal defer timer + + + if (globalState.deferDisposalTimer) { + clearTimeout(globalState.deferDisposalTimer); + delete globalState.deferDisposalTimer; + } + + if (typeof innerParams.didDestroy === 'function') { + innerParams.didDestroy(); + } + + disposeSwal(this); + } + + const disposeSwal = instance => { + // Unset this.params so GC will dispose it (#1569) + delete instance.params; // Unset globalState props so GC will dispose globalState (#1569) + + delete globalState.keydownHandler; + delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569) + + unsetWeakMaps(privateProps); + unsetWeakMaps(privateMethods); // Unset currentInstance + + delete globalState.currentInstance; + }; + + const unsetWeakMaps = obj => { + for (const i in obj) { + obj[i] = new WeakMap(); + } + }; + + + + var instanceMethods = /*#__PURE__*/Object.freeze({ + hideLoading: hideLoading, + disableLoading: hideLoading, + getInput: getInput$1, + close: close, + closePopup: close, + closeModal: close, + closeToast: close, + enableButtons: enableButtons, + disableButtons: disableButtons, + enableInput: enableInput, + disableInput: disableInput, + showValidationMessage: showValidationMessage, + resetValidationMessage: resetValidationMessage$1, + getProgressSteps: getProgressSteps$1, + _main: _main, + update: update, + _destroy: _destroy + }); + + let currentInstance; + + class SweetAlert { + constructor(...args) { + // Prevent run in Node env + if (typeof window === 'undefined') { + return; + } + + currentInstance = this; + const outerParams = Object.freeze(this.constructor.argsToParams(args)); + Object.defineProperties(this, { + params: { + value: outerParams, + writable: false, + enumerable: true, + configurable: true + } + }); + + const promise = this._main(this.params); + + privateProps.promise.set(this, promise); + } // `catch` cannot be the name of a module export, so we define our thenable methods here instead + + + then(onFulfilled) { + const promise = privateProps.promise.get(this); + return promise.then(onFulfilled); + } + + finally(onFinally) { + const promise = privateProps.promise.get(this); + return promise.finally(onFinally); + } + + } // Assign instance methods from src/instanceMethods/*.js to prototype + + + Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor + + Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility + + Object.keys(instanceMethods).forEach(key => { + SweetAlert[key] = function (...args) { + if (currentInstance) { + return currentInstance[key](...args); + } + }; + }); + SweetAlert.DismissReason = DismissReason; + SweetAlert.version = '11.1.7'; + + const Swal = SweetAlert; + Swal.default = Swal; + + return Swal; + +})); +if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2} diff --git a/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.min.css b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.min.css new file mode 100644 index 0000000..342b3be --- /dev/null +++ b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.min.css @@ -0,0 +1 @@ +.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto} \ No newline at end of file diff --git a/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.min.js b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.min.js new file mode 100644 index 0000000..fe84b24 --- /dev/null +++ b/src/EventHub.IdentityServer/wwwroot/libs/sweetalert2/sweetalert2.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n
        \n \n
          \n
          \n \n

          \n
          \n \n \n
          \n \n \n
          \n \n
          \n \n \n
          \n
          \n
          \n \n \n \n
          \n
          \n
          \n
          \n
          \n
          \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
          \n \n
          \n
          \n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'
          ').concat(e,"
          "),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join("
          ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); \ No newline at end of file diff --git a/src/EventHub.IdentityServer/yarn.lock b/src/EventHub.IdentityServer/yarn.lock index f185071..1cbfd5e 100644 --- a/src/EventHub.IdentityServer/yarn.lock +++ b/src/EventHub.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.0-rc.1.tgz#327a26fd71183ea2b4264ce12e4558310e8243b3" - integrity sha512-YycorI8c5EUx0Wi50R+Vrvd3m52RTntDB51y0u+2/UebEP9TkJfw0BowLDRqISLKQ1cqnrh5U+JlwPIUFD9hTA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.0-rc.1.tgz#fe3b8aab3db2a5406b68db0355942e1267c1c81e" - integrity sha512-QA861zNC2nrNxy5P7A7YtJrA6cRz6yvGIZEnasqYUQ3pqrmkV526AoPJrxIYfn8gjs2FiUHcEIirYx9IriL0Pg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.0-rc.1" - "@abp/bootstrap" "~4.4.0-rc.1" - "@abp/bootstrap-datepicker" "~4.4.0-rc.1" - "@abp/datatables.net-bs4" "~4.4.0-rc.1" - "@abp/font-awesome" "~4.4.0-rc.1" - "@abp/jquery-form" "~4.4.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.4.0-rc.1" - "@abp/lodash" "~4.4.0-rc.1" - "@abp/luxon" "~4.4.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.0-rc.1" - "@abp/select2" "~4.4.0-rc.1" - "@abp/sweetalert" "~4.4.0-rc.1" - "@abp/timeago" "~4.4.0-rc.1" - "@abp/toastr" "~4.4.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.0-rc.1.tgz#c086d5b1b4fa2b977779ed6e666e897879c7f3cf" - integrity sha512-cBzMQYmPJiXxo3z6PhLV5Sq61sWTN5e4139tpQepma4ctYBlV1+jQnNxmfCRVQio98YDk72kdkOtt7qQtP+TlA== +"@abp/aspnetcore.mvc.ui.theme.basic@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae" + integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6" + integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1" + "@abp/bootstrap" "~5.0.0-beta.1" + "@abp/bootstrap-datepicker" "~5.0.0-beta.1" + "@abp/datatables.net-bs4" "~5.0.0-beta.1" + "@abp/font-awesome" "~5.0.0-beta.1" + "@abp/jquery-form" "~5.0.0-beta.1" + "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1" + "@abp/lodash" "~5.0.0-beta.1" + "@abp/luxon" "~5.0.0-beta.1" + "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1" + "@abp/select2" "~5.0.0-beta.1" + "@abp/sweetalert2" "~5.0.0-beta.1" + "@abp/timeago" "~5.0.0-beta.1" + "@abp/toastr" "~5.0.0-beta.1" + +"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996" + integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.0-rc.1.tgz#9885772427e4dbcc98d76a404a6a85e84e32671f" - integrity sha512-Rb27WGmTTk4duDkQP8wO6N1xjSgXvmgW7zbKsoyzBPrySDsT+MyCXKWyslyEBg0Fk4HUhiRARVRAecOBnFq+dg== +"@abp/bootstrap-datepicker@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d" + integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.0-rc.1.tgz#cf5caf4e33e3afcd763603622c22c1585f49d21b" - integrity sha512-TytaRAVAxH/zIA3xLv/Kt909dou4EO57lnqz/wNorzoBxXdwmSDcIGx7IZkmQwXih8Sj+opC4QORJ6w02FMprA== +"@abp/bootstrap@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad" + integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.0-rc.1.tgz#cf31b5a0136e388d6d300b5274ccaedd6f886b42" - integrity sha512-q8yh3nQhBV85hfn3D0K3yWoj7wxvTw7ZjYA3+YpIClyG3/W4+PB/eAC7+VjybMxX4BMpt/694kYHNd7s78DxRA== +"@abp/core@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739" + integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg== dependencies: - "@abp/utils" "^4.4.0-rc.1" + "@abp/utils" "^5.0.0-beta.1" -"@abp/datatables.net-bs4@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.0-rc.1.tgz#8b597f4205c5cf6eeab252968767f27bead51cbf" - integrity sha512-Tuoa5qOv4XPo7EJHU9lzFYFn0DFVG3jFTaCxruKLybPXnNCmyzgwLuQmD0U2hI/oRGb0JILcD6QCfOqfOs7Jsg== +"@abp/datatables.net-bs4@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd" + integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ== dependencies: - "@abp/datatables.net" "~4.4.0-rc.1" + "@abp/datatables.net" "~5.0.0-beta.1" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.0-rc.1.tgz#c8996770323bd4310c4d2b057d5ceb396aa159f2" - integrity sha512-67Gy/nNE3z8XfGUdQGpA491r6NOPpyBChrqnenhsMiNq65ZJVcJDgtc5KLc8hDXMvNFtuTXNRBgLpK8Xs5R/LQ== +"@abp/datatables.net@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713" + integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.0-rc.1.tgz#8305b6e26b22afd29a71407c033362bdf3cf6eec" - integrity sha512-vmPn7Kvy2F1WHFzypymnGKQtYCkYSZMH288wuhdvqEPosHsmK583eqFuoF1kXE4T2D84nhyXC/mGxv2053NvQQ== +"@abp/font-awesome@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1" + integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.0-rc.1.tgz#ba4c468014cd3f95641daf856e024ad5153268a4" - integrity sha512-hWEousKP7h4C8IQj9a/4aYSCi7HXiBQemRt9tCyERQMMD1lz22+PYVrFJvnVJT0nh/t9tbfKzpW6pRHorQu4fA== +"@abp/jquery-form@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6" + integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.0-rc.1.tgz#399c82f2d5818f484998a90776a19fd89fb09ff4" - integrity sha512-GSQaOp3xjhQp91C6rbPFpTC78yv6wqy8N21ZV0Ncl1f5jTMi34XBD2ysT5ruhzjDhEEmihULwzGZdkNTBCmmkw== +"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83" + integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ== dependencies: - "@abp/jquery-validation" "~4.4.0-rc.1" + "@abp/jquery-validation" "~5.0.0-beta.1" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.0-rc.1.tgz#f27e0ecf9787a7b4a733067f28dd757bbd2a1b86" - integrity sha512-nATvgXwLoZVJrOV8NGo2QyOrLbblethTBiJ8TgonOXJAiWOQlIKNgsVKeyy8/nF3W48NqDgsZagt1JNXNEbcYg== +"@abp/jquery-validation@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5" + integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.0-rc.1.tgz#de1d8824b422ac96e4a07ee167058c00411786d9" - integrity sha512-StOe74MNhXqTNAdnCkrG/UM77keR9TYEiZ2vLOW23cteOgV8ohhJXH7xhNKfFkiQBla88utt7Txyx8VNA12E/Q== +"@abp/jquery@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3" + integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" jquery "~3.6.0" -"@abp/lodash@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.0-rc.1.tgz#1a07a87e9f360a4a1f2ed4fd19743145aa411e33" - integrity sha512-Gm10DDUTulWIw4XnPDXiy7A2xfGPD1UueRqLhrJ0JT0mgnys6Kaib49tsnzDhPJBv07Oufnw+p57Aq+YUOF4fg== +"@abp/lodash@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3" + integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" lodash "^4.17.15" -"@abp/luxon@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.0-rc.1.tgz#5c3f4ac1fcdfb80d79a4dd50381eaff38637949f" - integrity sha512-bfLgQJE3WAEIC3HxfCFTdMNWNs/nCe9pDGN8qsiUmQ0P0ZEQzkXvNSRe9idQP2Cbn/0q0+y44oa9v2sLT1LGsQ== +"@abp/luxon@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf" + integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.0-rc.1.tgz#370a459024f62abfb58c73cc63c42e3183374e82" - integrity sha512-bzlQDE9u99nPw0XOqORSUd57IwN2N7EmJgSrsZ1kY5YRqA1KXZFMoUBxuBHvYR38+IAN6h79wF2yMxT79dTU6w== +"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9" + integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.0-rc.1.tgz#219e3999bae4bae26bfaf2290e9cc6b79f3632eb" - integrity sha512-qhJZOt6e9mTggS8Qn779OtUZADwbvtErZa4xgRgwS4lzBJEpQjZzfBVnKQZ7K74MOn7nHRFvC4dTEDbzhcfukg== +"@abp/select2@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e" + integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" select2 "^4.0.13" -"@abp/sweetalert@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.0-rc.1.tgz#35f678daca1bb9839e8789c0a8da58c7423f5faa" - integrity sha512-lY7lYcR9fs+k468Cr9l5kZaH6+FAqc765teSsJrIAdr1fxnDPzZWxoSSqNc3a8mEg125c2NwOD8L+AYOGqMFiQ== +"@abp/sweetalert2@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da" + integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w== dependencies: - "@abp/core" "~4.4.0-rc.1" - sweetalert "^2.1.2" + "@abp/core" "~5.0.0-beta.1" + sweetalert2 "^11.0.18" -"@abp/timeago@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.0-rc.1.tgz#ba6c9c01727016b06e70eacfbc218bbe033b3a93" - integrity sha512-fxRMdYrnZTC2FbBXJfX5nlKVILXFmxRdZ4PW+DhSolsDSG2FR3yesbqS2SWoLuGvr81oBIkXbECaf7S/oWA2Iw== +"@abp/timeago@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42" + integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" timeago "^1.6.7" -"@abp/toastr@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.0-rc.1.tgz#a559665b3516f0f1eaba1c2b6fdd91d47cf25b62" - integrity sha512-7BUywNmL/hXzR4hpcQejcA9YMsLGRisqdOTpZy7abkD4wicuchHy1tr9cBSLbDIgA8oMIqM9ubh3VvPoe6pl4A== +"@abp/toastr@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f" + integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" toastr "^2.1.4" -"@abp/utils@^4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.0-rc.1.tgz#704764e60aae7beec2fc3ac9fff6217c1c70ddf6" - integrity sha512-HOmxzOKueogv5mZ6b7SLzBlANYmtL3R8XFypPTky98qYYYWktSxgDkEnyvpe20+yuxKkzVW7sf/swKWEt2onIQ== +"@abp/utils@^5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c" + integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA== dependencies: just-compare "^1.3.0" @@ -777,11 +777,6 @@ es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-object-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" - integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= - es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" @@ -2054,11 +2049,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== -promise-polyfill@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" - integrity sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc= - pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -2474,13 +2464,10 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -sweetalert@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79" - integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA== - dependencies: - es6-object-assign "^1.1.0" - promise-polyfill "^6.0.2" +sweetalert2@^11.0.18: + version "11.1.7" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.1.7.tgz#0ff2851eae77a76a3fe0ab289d3c32493e811b6d" + integrity sha512-7MHQVtKCTORfA9e58g9ZOfT3X58DkSBtvoCQJnqSHobXXb5C7aB8Yg/tAccTFnefCUBU41PoStjXMkzG3bNeig== tar@^4: version "4.4.10" diff --git a/src/EventHub.Web.Theme/EventHub.Web.Theme.csproj b/src/EventHub.Web.Theme/EventHub.Web.Theme.csproj index 26b89e3..bb08651 100644 --- a/src/EventHub.Web.Theme/EventHub.Web.Theme.csproj +++ b/src/EventHub.Web.Theme/EventHub.Web.Theme.csproj @@ -30,8 +30,8 @@
          - - + + diff --git a/src/EventHub.Web/EventHub.Web.csproj b/src/EventHub.Web/EventHub.Web.csproj index ab8d004..a1e01bc 100644 --- a/src/EventHub.Web/EventHub.Web.csproj +++ b/src/EventHub.Web/EventHub.Web.csproj @@ -26,15 +26,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/src/EventHub.Web/package.json b/src/EventHub.Web/package.json index 02bbe72..8fdb7e3 100644 --- a/src/EventHub.Web/package.json +++ b/src/EventHub.Web/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~4.4.0-rc.1", + "@abp/aspnetcore.mvc.ui.theme.basic": "~5.0.0-beta.1", "daterangepicker": "^3.1.0", "owl.carousel": "^2.3.4" } diff --git a/src/EventHub.Web/wwwroot/libs/sweetalert/sweetalert.min.js b/src/EventHub.Web/wwwroot/libs/sweetalert/sweetalert.min.js deleted file mode 100644 index dc8f5e7..0000000 --- a/src/EventHub.Web/wwwroot/libs/sweetalert/sweetalert.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n
          ',e.titleMarkup='\n
          \n',e.textMarkup='\n
          ',e.footerMarkup='\n
          \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='
          \n
          ';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n
          \n \n \n
          \n '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n \n \n \n '},e.successIconMarkup=function(){var t=r+"--success";return'\n \n \n\n
          \n
          \n '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n
          \n\n
          \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n
          \n\n \n\n
          \n
          \n
          \n
          \n
          \n\n
          \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e { + const result = []; + + for (let i = 0; i < arr.length; i++) { + if (result.indexOf(arr[i]) === -1) { + result.push(arr[i]); + } + } + + return result; + }; + /** + * Capitalize the first letter of a string + * @param str + */ + + const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1); + /** + * Convert NodeList to Array + * @param nodeList + */ + + const toArray = nodeList => Array.prototype.slice.call(nodeList); + /** + * Standardise console warnings + * @param message + */ + + const warn = message => { + console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message)); + }; + /** + * Standardise console errors + * @param message + */ + + const error = message => { + console.error("".concat(consolePrefix, " ").concat(message)); + }; + /** + * Private global state for `warnOnce` + * @type {Array} + * @private + */ + + const previousWarnOnceMessages = []; + /** + * Show a console warning, but only if it hasn't already been shown + * @param message + */ + + const warnOnce = message => { + if (!previousWarnOnceMessages.includes(message)) { + previousWarnOnceMessages.push(message); + warn(message); + } + }; + /** + * Show a one-time console warning about deprecated params/methods + */ + + const warnAboutDeprecation = (deprecatedParam, useInstead) => { + warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead.")); + }; + /** + * If `arg` is a function, call it (with no arguments or context) and return the result. + * Otherwise, just pass the value through + * @param arg + */ + + const callIfFunction = arg => typeof arg === 'function' ? arg() : arg; + const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function'; + const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg); + const isPromise = arg => arg && Promise.resolve(arg) === arg; + + const isJqueryElement = elem => typeof elem === 'object' && elem.jquery; + + const isElement = elem => elem instanceof Element || isJqueryElement(elem); + + const argsToParams = args => { + const params = {}; + + if (typeof args[0] === 'object' && !isElement(args[0])) { + Object.assign(params, args[0]); + } else { + ['title', 'html', 'icon'].forEach((name, index) => { + const arg = args[index]; + + if (typeof arg === 'string' || isElement(arg)) { + params[name] = arg; + } else if (arg !== undefined) { + error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg)); + } + }); + } + + return params; + }; + + const swalPrefix = 'swal2-'; + const prefix = items => { + const result = {}; + + for (const i in items) { + result[items[i]] = swalPrefix + items[i]; + } + + return result; + }; + const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']); + const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']); + + const getContainer = () => document.body.querySelector(".".concat(swalClasses.container)); + const elementBySelector = selectorString => { + const container = getContainer(); + return container ? container.querySelector(selectorString) : null; + }; + + const elementByClass = className => { + return elementBySelector(".".concat(className)); + }; + + const getPopup = () => elementByClass(swalClasses.popup); + const getIcon = () => elementByClass(swalClasses.icon); + const getTitle = () => elementByClass(swalClasses.title); + const getHtmlContainer = () => elementByClass(swalClasses['html-container']); + const getImage = () => elementByClass(swalClasses.image); + const getProgressSteps = () => elementByClass(swalClasses['progress-steps']); + const getValidationMessage = () => elementByClass(swalClasses['validation-message']); + const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm)); + const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny)); + const getInputLabel = () => elementByClass(swalClasses['input-label']); + const getLoader = () => elementBySelector(".".concat(swalClasses.loader)); + const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel)); + const getActions = () => elementByClass(swalClasses.actions); + const getFooter = () => elementByClass(swalClasses.footer); + const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']); + const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js + + const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n"; + const getFocusableElements = () => { + const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex + .sort((a, b) => { + a = parseInt(a.getAttribute('tabindex')); + b = parseInt(b.getAttribute('tabindex')); + + if (a > b) { + return 1; + } else if (a < b) { + return -1; + } + + return 0; + }); + const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1'); + return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el)); + }; + const isModal = () => { + return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']); + }; + const isToast = () => { + return document.body.classList.contains(swalClasses['toast-shown']); + }; + const isLoading = () => { + return getPopup().hasAttribute('data-loading'); + }; + + const states = { + previousBodyPadding: null + }; + const setInnerHtml = (elem, html) => { + // #1926 + elem.textContent = ''; + + if (html) { + const parser = new DOMParser(); + const parsed = parser.parseFromString(html, "text/html"); + toArray(parsed.querySelector('head').childNodes).forEach(child => { + elem.appendChild(child); + }); + toArray(parsed.querySelector('body').childNodes).forEach(child => { + elem.appendChild(child); + }); + } + }; + const hasClass = (elem, className) => { + if (!className) { + return false; + } + + const classList = className.split(/\s+/); + + for (let i = 0; i < classList.length; i++) { + if (!elem.classList.contains(classList[i])) { + return false; + } + } + + return true; + }; + + const removeCustomClasses = (elem, params) => { + toArray(elem.classList).forEach(className => { + if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) { + elem.classList.remove(className); + } + }); + }; + + const applyCustomClass = (elem, params, className) => { + removeCustomClasses(elem, params); + + if (params.customClass && params.customClass[className]) { + if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) { + return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\"")); + } + + addClass(elem, params.customClass[className]); + } + }; + const getInput = (popup, inputType) => { + if (!inputType) { + return null; + } + + switch (inputType) { + case 'select': + case 'textarea': + case 'file': + return getChildByClass(popup, swalClasses[inputType]); + + case 'checkbox': + return popup.querySelector(".".concat(swalClasses.checkbox, " input")); + + case 'radio': + return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child")); + + case 'range': + return popup.querySelector(".".concat(swalClasses.range, " input")); + + default: + return getChildByClass(popup, swalClasses.input); + } + }; + const focusInput = input => { + input.focus(); // place cursor at end of text in text input + + if (input.type !== 'file') { + // http://stackoverflow.com/a/2345915 + const val = input.value; + input.value = ''; + input.value = val; + } + }; + const toggleClass = (target, classList, condition) => { + if (!target || !classList) { + return; + } + + if (typeof classList === 'string') { + classList = classList.split(/\s+/).filter(Boolean); + } + + classList.forEach(className => { + if (target.forEach) { + target.forEach(elem => { + condition ? elem.classList.add(className) : elem.classList.remove(className); + }); + } else { + condition ? target.classList.add(className) : target.classList.remove(className); + } + }); + }; + const addClass = (target, classList) => { + toggleClass(target, classList, true); + }; + const removeClass = (target, classList) => { + toggleClass(target, classList, false); + }; + const getChildByClass = (elem, className) => { + for (let i = 0; i < elem.childNodes.length; i++) { + if (hasClass(elem.childNodes[i], className)) { + return elem.childNodes[i]; + } + } + }; + const applyNumericalStyle = (elem, property, value) => { + if (value === "".concat(parseInt(value))) { + value = parseInt(value); + } + + if (value || parseInt(value) === 0) { + elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value; + } else { + elem.style.removeProperty(property); + } + }; + const show = (elem, display = 'flex') => { + elem.style.display = display; + }; + const hide = elem => { + elem.style.display = 'none'; + }; + const setStyle = (parent, selector, property, value) => { + const el = parent.querySelector(selector); + + if (el) { + el.style[property] = value; + } + }; + const toggle = (elem, condition, display) => { + condition ? show(elem, display) : hide(elem); + }; // borrowed from jquery $(elem).is(':visible') implementation + + const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length)); + const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton()); + const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119 + + const hasCssAnimation = elem => { + const style = window.getComputedStyle(elem); + const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0'); + const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0'); + return animDuration > 0 || transDuration > 0; + }; + const animateTimerProgressBar = (timer, reset = false) => { + const timerProgressBar = getTimerProgressBar(); + + if (isVisible(timerProgressBar)) { + if (reset) { + timerProgressBar.style.transition = 'none'; + timerProgressBar.style.width = '100%'; + } + + setTimeout(() => { + timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear"); + timerProgressBar.style.width = '0%'; + }, 10); + } + }; + const stopTimerProgressBar = () => { + const timerProgressBar = getTimerProgressBar(); + const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + timerProgressBar.style.removeProperty('transition'); + timerProgressBar.style.width = '100%'; + const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100); + timerProgressBar.style.removeProperty('transition'); + timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%"); + }; + + // Detect Node env + const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined'; + + const sweetHTML = "\n
          \n \n
            \n
            \n \n

            \n
            \n \n \n
            \n \n \n
            \n \n
            \n \n \n
            \n
            \n
            \n \n \n \n
            \n
            \n
            \n
            \n
            \n
            \n").replace(/(^|\n)\s*/g, ''); + + const resetOldContainer = () => { + const oldContainer = getContainer(); + + if (!oldContainer) { + return false; + } + + oldContainer.remove(); + removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]); + return true; + }; + + const resetValidationMessage = () => { + if (Swal.isVisible()) { + Swal.resetValidationMessage(); + } + }; + + const addInputChangeListeners = () => { + const popup = getPopup(); + const input = getChildByClass(popup, swalClasses.input); + const file = getChildByClass(popup, swalClasses.file); + const range = popup.querySelector(".".concat(swalClasses.range, " input")); + const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output")); + const select = getChildByClass(popup, swalClasses.select); + const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input")); + const textarea = getChildByClass(popup, swalClasses.textarea); + input.oninput = resetValidationMessage; + file.onchange = resetValidationMessage; + select.onchange = resetValidationMessage; + checkbox.onchange = resetValidationMessage; + textarea.oninput = resetValidationMessage; + + range.oninput = () => { + resetValidationMessage(); + rangeOutput.value = range.value; + }; + + range.onchange = () => { + resetValidationMessage(); + range.nextSibling.value = range.value; + }; + }; + + const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target; + + const setupAccessibility = params => { + const popup = getPopup(); + popup.setAttribute('role', params.toast ? 'alert' : 'dialog'); + popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); + + if (!params.toast) { + popup.setAttribute('aria-modal', 'true'); + } + }; + + const setupRTL = targetElement => { + if (window.getComputedStyle(targetElement).direction === 'rtl') { + addClass(getContainer(), swalClasses.rtl); + } + }; + /* + * Add modal + backdrop to DOM + */ + + + const init = params => { + // Clean up the old popup container if it exists + const oldContainerExisted = resetOldContainer(); + /* istanbul ignore if */ + + if (isNodeEnv()) { + error('SweetAlert2 requires document to initialize'); + return; + } + + const container = document.createElement('div'); + container.className = swalClasses.container; + + if (oldContainerExisted) { + addClass(container, swalClasses['no-transition']); + } + + setInnerHtml(container, sweetHTML); + const targetElement = getTarget(params.target); + targetElement.appendChild(container); + setupAccessibility(params); + setupRTL(targetElement); + addInputChangeListeners(); + }; + + const parseHtmlToContainer = (param, target) => { + // DOM element + if (param instanceof HTMLElement) { + target.appendChild(param); // Object + } else if (typeof param === 'object') { + handleObject(param, target); // Plain string + } else if (param) { + setInnerHtml(target, param); + } + }; + + const handleObject = (param, target) => { + // JQuery element(s) + if (param.jquery) { + handleJqueryElem(target, param); // For other objects use their string representation + } else { + setInnerHtml(target, param.toString()); + } + }; + + const handleJqueryElem = (target, elem) => { + target.textContent = ''; + + if (0 in elem) { + for (let i = 0; (i in elem); i++) { + target.appendChild(elem[i].cloneNode(true)); + } + } else { + target.appendChild(elem.cloneNode(true)); + } + }; + + const animationEndEvent = (() => { + // Prevent run in Node env + + /* istanbul ignore if */ + if (isNodeEnv()) { + return false; + } + + const testEl = document.createElement('div'); + const transEndEventNames = { + WebkitAnimation: 'webkitAnimationEnd', + OAnimation: 'oAnimationEnd oanimationend', + animation: 'animationend' + }; + + for (const i in transEndEventNames) { + if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') { + return transEndEventNames[i]; + } + } + + return false; + })(); + + // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js + + const measureScrollbar = () => { + const scrollDiv = document.createElement('div'); + scrollDiv.className = swalClasses['scrollbar-measure']; + document.body.appendChild(scrollDiv); + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; + + const renderActions = (instance, params) => { + const actions = getActions(); + const loader = getLoader(); + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); // Actions (buttons) wrapper + + if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) { + hide(actions); + } else { + show(actions); + } // Custom class + + + applyCustomClass(actions, params, 'actions'); // Render buttons + + renderButton(confirmButton, 'confirm', params); + renderButton(denyButton, 'deny', params); + renderButton(cancelButton, 'cancel', params); + handleButtonsStyling(confirmButton, denyButton, cancelButton, params); + + if (params.reverseButtons) { + actions.insertBefore(cancelButton, loader); + actions.insertBefore(denyButton, loader); + actions.insertBefore(confirmButton, loader); + } // Loader + + + setInnerHtml(loader, params.loaderHtml); + applyCustomClass(loader, params, 'loader'); + }; + + function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) { + if (!params.buttonsStyling) { + return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled); + } + + addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors + + if (params.confirmButtonColor) { + confirmButton.style.backgroundColor = params.confirmButtonColor; + addClass(confirmButton, swalClasses['default-outline']); + } + + if (params.denyButtonColor) { + denyButton.style.backgroundColor = params.denyButtonColor; + addClass(denyButton, swalClasses['default-outline']); + } + + if (params.cancelButtonColor) { + cancelButton.style.backgroundColor = params.cancelButtonColor; + addClass(cancelButton, swalClasses['default-outline']); + } + } + + function renderButton(button, buttonType, params) { + toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block'); + setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text + + button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label + // Add buttons custom classes + + button.className = swalClasses[buttonType]; + applyCustomClass(button, params, "".concat(buttonType, "Button")); + addClass(button, params["".concat(buttonType, "ButtonClass")]); + } + + function handleBackdropParam(container, backdrop) { + if (typeof backdrop === 'string') { + container.style.background = backdrop; + } else if (!backdrop) { + addClass([document.documentElement, document.body], swalClasses['no-backdrop']); + } + } + + function handlePositionParam(container, position) { + if (position in swalClasses) { + addClass(container, swalClasses[position]); + } else { + warn('The "position" parameter is not valid, defaulting to "center"'); + addClass(container, swalClasses.center); + } + } + + function handleGrowParam(container, grow) { + if (grow && typeof grow === 'string') { + const growClass = "grow-".concat(grow); + + if (growClass in swalClasses) { + addClass(container, swalClasses[growClass]); + } + } + } + + const renderContainer = (instance, params) => { + const container = getContainer(); + + if (!container) { + return; + } + + handleBackdropParam(container, params.backdrop); + handlePositionParam(container, params.position); + handleGrowParam(container, params.grow); // Custom class + + applyCustomClass(container, params, 'container'); + }; + + /** + * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. + * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` + * This is the approach that Babel will probably take to implement private methods/fields + * https://github.com/tc39/proposal-private-methods + * https://github.com/babel/babel/pull/7555 + * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* + * then we can use that language feature. + */ + var privateProps = { + promise: new WeakMap(), + innerParams: new WeakMap(), + domCache: new WeakMap() + }; + + const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; + const renderInput = (instance, params) => { + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(instance); + const rerender = !innerParams || params.input !== innerParams.input; + inputTypes.forEach(inputType => { + const inputClass = swalClasses[inputType]; + const inputContainer = getChildByClass(popup, inputClass); // set attributes + + setAttributes(inputType, params.inputAttributes); // set class + + inputContainer.className = inputClass; + + if (rerender) { + hide(inputContainer); + } + }); + + if (params.input) { + if (rerender) { + showInput(params); + } // set custom class + + + setCustomClass(params); + } + }; + + const showInput = params => { + if (!renderInputType[params.input]) { + return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\"")); + } + + const inputContainer = getInputContainer(params.input); + const input = renderInputType[params.input](inputContainer, params); + show(input); // input autofocus + + setTimeout(() => { + focusInput(input); + }); + }; + + const removeAttributes = input => { + for (let i = 0; i < input.attributes.length; i++) { + const attrName = input.attributes[i].name; + + if (!['type', 'value', 'style'].includes(attrName)) { + input.removeAttribute(attrName); + } + } + }; + + const setAttributes = (inputType, inputAttributes) => { + const input = getInput(getPopup(), inputType); + + if (!input) { + return; + } + + removeAttributes(input); + + for (const attr in inputAttributes) { + input.setAttribute(attr, inputAttributes[attr]); + } + }; + + const setCustomClass = params => { + const inputContainer = getInputContainer(params.input); + + if (params.customClass) { + addClass(inputContainer, params.customClass.input); + } + }; + + const setInputPlaceholder = (input, params) => { + if (!input.placeholder || params.inputPlaceholder) { + input.placeholder = params.inputPlaceholder; + } + }; + + const setInputLabel = (input, prependTo, params) => { + if (params.inputLabel) { + input.id = swalClasses.input; + const label = document.createElement('label'); + const labelClass = swalClasses['input-label']; + label.setAttribute('for', input.id); + label.className = labelClass; + addClass(label, params.customClass.inputLabel); + label.innerText = params.inputLabel; + prependTo.insertAdjacentElement('beforebegin', label); + } + }; + + const getInputContainer = inputType => { + const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input; + return getChildByClass(getPopup(), inputClass); + }; + + const renderInputType = {}; + + renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => { + if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') { + input.value = params.inputValue; + } else if (!isPromise(params.inputValue)) { + warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\"")); + } + + setInputLabel(input, input, params); + setInputPlaceholder(input, params); + input.type = params.input; + return input; + }; + + renderInputType.file = (input, params) => { + setInputLabel(input, input, params); + setInputPlaceholder(input, params); + return input; + }; + + renderInputType.range = (range, params) => { + const rangeInput = range.querySelector('input'); + const rangeOutput = range.querySelector('output'); + rangeInput.value = params.inputValue; + rangeInput.type = params.input; + rangeOutput.value = params.inputValue; + setInputLabel(rangeInput, range, params); + return range; + }; + + renderInputType.select = (select, params) => { + select.textContent = ''; + + if (params.inputPlaceholder) { + const placeholder = document.createElement('option'); + setInnerHtml(placeholder, params.inputPlaceholder); + placeholder.value = ''; + placeholder.disabled = true; + placeholder.selected = true; + select.appendChild(placeholder); + } + + setInputLabel(select, select, params); + return select; + }; + + renderInputType.radio = radio => { + radio.textContent = ''; + return radio; + }; + + renderInputType.checkbox = (checkboxContainer, params) => { + const checkbox = getInput(getPopup(), 'checkbox'); + checkbox.value = 1; + checkbox.id = swalClasses.checkbox; + checkbox.checked = Boolean(params.inputValue); + const label = checkboxContainer.querySelector('span'); + setInnerHtml(label, params.inputPlaceholder); + return checkboxContainer; + }; + + renderInputType.textarea = (textarea, params) => { + textarea.value = params.inputValue; + setInputPlaceholder(textarea, params); + setInputLabel(textarea, textarea, params); + + const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); + + setTimeout(() => { + // #2291 + if ('MutationObserver' in window) { + // #1699 + const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); + + const textareaResizeHandler = () => { + const textareaWidth = textarea.offsetWidth + getMargin(textarea); + + if (textareaWidth > initialPopupWidth) { + getPopup().style.width = "".concat(textareaWidth, "px"); + } else { + getPopup().style.width = null; + } + }; + + new MutationObserver(textareaResizeHandler).observe(textarea, { + attributes: true, + attributeFilter: ['style'] + }); + } + }); + return textarea; + }; + + const renderContent = (instance, params) => { + const htmlContainer = getHtmlContainer(); + applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML + + if (params.html) { + parseHtmlToContainer(params.html, htmlContainer); + show(htmlContainer, 'block'); // Content as plain text + } else if (params.text) { + htmlContainer.textContent = params.text; + show(htmlContainer, 'block'); // No content + } else { + hide(htmlContainer); + } + + renderInput(instance, params); + }; + + const renderFooter = (instance, params) => { + const footer = getFooter(); + toggle(footer, params.footer); + + if (params.footer) { + parseHtmlToContainer(params.footer, footer); + } // Custom class + + + applyCustomClass(footer, params, 'footer'); + }; + + const renderCloseButton = (instance, params) => { + const closeButton = getCloseButton(); + setInnerHtml(closeButton, params.closeButtonHtml); // Custom class + + applyCustomClass(closeButton, params, 'closeButton'); + toggle(closeButton, params.showCloseButton); + closeButton.setAttribute('aria-label', params.closeButtonAriaLabel); + }; + + const renderIcon = (instance, params) => { + const innerParams = privateProps.innerParams.get(instance); + const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon + + if (innerParams && params.icon === innerParams.icon) { + // Custom or default content + setContent(icon, params); + applyStyles(icon, params); + return; + } + + if (!params.icon && !params.iconHtml) { + return hide(icon); + } + + if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) { + error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\"")); + return hide(icon); + } + + show(icon); // Custom or default content + + setContent(icon, params); + applyStyles(icon, params); // Animate icon + + addClass(icon, params.showClass.icon); + }; + + const applyStyles = (icon, params) => { + for (const iconType in iconTypes) { + if (params.icon !== iconType) { + removeClass(icon, iconTypes[iconType]); + } + } + + addClass(icon, iconTypes[params.icon]); // Icon color + + setColor(icon, params); // Success icon background color + + adjustSuccessIconBackgoundColor(); // Custom class + + applyCustomClass(icon, params, 'icon'); + }; // Adjust success icon background color to match the popup background color + + + const adjustSuccessIconBackgoundColor = () => { + const popup = getPopup(); + const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); + const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); + + for (let i = 0; i < successIconParts.length; i++) { + successIconParts[i].style.backgroundColor = popupBackgroundColor; + } + }; + + const setContent = (icon, params) => { + icon.textContent = ''; + + if (params.iconHtml) { + setInnerHtml(icon, iconContent(params.iconHtml)); + } else if (params.icon === 'success') { + setInnerHtml(icon, "\n
            \n \n
            \n
            \n "); + } else if (params.icon === 'error') { + setInnerHtml(icon, "\n \n \n \n \n "); + } else { + const defaultIconHtml = { + question: '?', + warning: '!', + info: 'i' + }; + setInnerHtml(icon, iconContent(defaultIconHtml[params.icon])); + } + }; + + const setColor = (icon, params) => { + if (!params.iconColor) { + return; + } + + icon.style.color = params.iconColor; + icon.style.borderColor = params.iconColor; + + for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) { + setStyle(icon, sel, 'backgroundColor', params.iconColor); + } + + setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor); + }; + + const iconContent = content => "
            ").concat(content, "
            "); + + const renderImage = (instance, params) => { + const image = getImage(); + + if (!params.imageUrl) { + return hide(image); + } + + show(image, ''); // Src, alt + + image.setAttribute('src', params.imageUrl); + image.setAttribute('alt', params.imageAlt); // Width, height + + applyNumericalStyle(image, 'width', params.imageWidth); + applyNumericalStyle(image, 'height', params.imageHeight); // Class + + image.className = swalClasses.image; + applyCustomClass(image, params, 'image'); + }; + + const createStepElement = step => { + const stepEl = document.createElement('li'); + addClass(stepEl, swalClasses['progress-step']); + setInnerHtml(stepEl, step); + return stepEl; + }; + + const createLineElement = params => { + const lineEl = document.createElement('li'); + addClass(lineEl, swalClasses['progress-step-line']); + + if (params.progressStepsDistance) { + lineEl.style.width = params.progressStepsDistance; + } + + return lineEl; + }; + + const renderProgressSteps = (instance, params) => { + const progressStepsContainer = getProgressSteps(); + + if (!params.progressSteps || params.progressSteps.length === 0) { + return hide(progressStepsContainer); + } + + show(progressStepsContainer); + progressStepsContainer.textContent = ''; + + if (params.currentProgressStep >= params.progressSteps.length) { + warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); + } + + params.progressSteps.forEach((step, index) => { + const stepEl = createStepElement(step); + progressStepsContainer.appendChild(stepEl); + + if (index === params.currentProgressStep) { + addClass(stepEl, swalClasses['active-progress-step']); + } + + if (index !== params.progressSteps.length - 1) { + const lineEl = createLineElement(params); + progressStepsContainer.appendChild(lineEl); + } + }); + }; + + const renderTitle = (instance, params) => { + const title = getTitle(); + toggle(title, params.title || params.titleText, 'block'); + + if (params.title) { + parseHtmlToContainer(params.title, title); + } + + if (params.titleText) { + title.innerText = params.titleText; + } // Custom class + + + applyCustomClass(title, params, 'title'); + }; + + const renderPopup = (instance, params) => { + const container = getContainer(); + const popup = getPopup(); // Width + + if (params.toast) { + // #2170 + applyNumericalStyle(container, 'width', params.width); + popup.style.width = '100%'; + popup.insertBefore(getLoader(), getIcon()); + } else { + applyNumericalStyle(popup, 'width', params.width); + } // Padding + + + applyNumericalStyle(popup, 'padding', params.padding); // Background + + if (params.background) { + popup.style.background = params.background; + } + + hide(getValidationMessage()); // Classes + + addClasses(popup, params); + }; + + const addClasses = (popup, params) => { + // Default Class + showClass when updating Swal.update({}) + popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : ''); + + if (params.toast) { + addClass([document.documentElement, document.body], swalClasses['toast-shown']); + addClass(popup, swalClasses.toast); + } else { + addClass(popup, swalClasses.modal); + } // Custom class + + + applyCustomClass(popup, params, 'popup'); + + if (typeof params.customClass === 'string') { + addClass(popup, params.customClass); + } // Icon class (#1842) + + + if (params.icon) { + addClass(popup, swalClasses["icon-".concat(params.icon)]); + } + }; + + const render = (instance, params) => { + renderPopup(instance, params); + renderContainer(instance, params); + renderProgressSteps(instance, params); + renderIcon(instance, params); + renderImage(instance, params); + renderTitle(instance, params); + renderCloseButton(instance, params); + renderContent(instance, params); + renderActions(instance, params); + renderFooter(instance, params); + + if (typeof params.didRender === 'function') { + params.didRender(getPopup()); + } + }; + + /* + * Global function to determine if SweetAlert2 popup is shown + */ + + const isVisible$1 = () => { + return isVisible(getPopup()); + }; + /* + * Global function to click 'Confirm' button + */ + + const clickConfirm = () => getConfirmButton() && getConfirmButton().click(); + /* + * Global function to click 'Deny' button + */ + + const clickDeny = () => getDenyButton() && getDenyButton().click(); + /* + * Global function to click 'Cancel' button + */ + + const clickCancel = () => getCancelButton() && getCancelButton().click(); + + function fire(...args) { + const Swal = this; + return new Swal(...args); + } + + /** + * Returns an extended version of `Swal` containing `params` as defaults. + * Useful for reusing Swal configuration. + * + * For example: + * + * Before: + * const textPromptOptions = { input: 'text', showCancelButton: true } + * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' }) + * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' }) + * + * After: + * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true }) + * const {value: firstName} = await TextPrompt('What is your first name?') + * const {value: lastName} = await TextPrompt('What is your last name?') + * + * @param mixinParams + */ + function mixin(mixinParams) { + class MixinSwal extends this { + _main(params, priorityMixinParams) { + return super._main(params, Object.assign({}, mixinParams, priorityMixinParams)); + } + + } + + return MixinSwal; + } + + /** + * Shows loader (spinner), this is useful with AJAX requests. + * By default the loader be shown instead of the "Confirm" button. + */ + + const showLoading = buttonToReplace => { + let popup = getPopup(); + + if (!popup) { + Swal.fire(); + } + + popup = getPopup(); + const loader = getLoader(); + + if (isToast()) { + hide(getIcon()); + } else { + replaceButton(popup, buttonToReplace); + } + + show(loader); + popup.setAttribute('data-loading', true); + popup.setAttribute('aria-busy', true); + popup.focus(); + }; + + const replaceButton = (popup, buttonToReplace) => { + const actions = getActions(); + const loader = getLoader(); + + if (!buttonToReplace && isVisible(getConfirmButton())) { + buttonToReplace = getConfirmButton(); + } + + show(actions); + + if (buttonToReplace) { + hide(buttonToReplace); + loader.setAttribute('data-button-to-replace', buttonToReplace.className); + } + + loader.parentNode.insertBefore(loader, buttonToReplace); + addClass([popup, actions], swalClasses.loading); + }; + + const RESTORE_FOCUS_TIMEOUT = 100; + + const globalState = {}; + + const focusPreviousActiveElement = () => { + if (globalState.previousActiveElement && globalState.previousActiveElement.focus) { + globalState.previousActiveElement.focus(); + globalState.previousActiveElement = null; + } else if (document.body) { + document.body.focus(); + } + }; // Restore previous active (focused) element + + + const restoreActiveElement = returnFocus => { + return new Promise(resolve => { + if (!returnFocus) { + return resolve(); + } + + const x = window.scrollX; + const y = window.scrollY; + globalState.restoreFocusTimeout = setTimeout(() => { + focusPreviousActiveElement(); + resolve(); + }, RESTORE_FOCUS_TIMEOUT); // issues/900 + + window.scrollTo(x, y); + }); + }; + + /** + * If `timer` parameter is set, returns number of milliseconds of timer remained. + * Otherwise, returns undefined. + */ + + const getTimerLeft = () => { + return globalState.timeout && globalState.timeout.getTimerLeft(); + }; + /** + * Stop timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const stopTimer = () => { + if (globalState.timeout) { + stopTimerProgressBar(); + return globalState.timeout.stop(); + } + }; + /** + * Resume timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const resumeTimer = () => { + if (globalState.timeout) { + const remaining = globalState.timeout.start(); + animateTimerProgressBar(remaining); + return remaining; + } + }; + /** + * Resume timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const toggleTimer = () => { + const timer = globalState.timeout; + return timer && (timer.running ? stopTimer() : resumeTimer()); + }; + /** + * Increase timer. Returns number of milliseconds of an updated timer. + * If `timer` parameter isn't set, returns undefined. + */ + + const increaseTimer = n => { + if (globalState.timeout) { + const remaining = globalState.timeout.increase(n); + animateTimerProgressBar(remaining, true); + return remaining; + } + }; + /** + * Check if timer is running. Returns true if timer is running + * or false if timer is paused or stopped. + * If `timer` parameter isn't set, returns undefined + */ + + const isTimerRunning = () => { + return globalState.timeout && globalState.timeout.isRunning(); + }; + + let bodyClickListenerAdded = false; + const clickHandlers = {}; + function bindClickHandler(attr = 'data-swal-template') { + clickHandlers[attr] = this; + + if (!bodyClickListenerAdded) { + document.body.addEventListener('click', bodyClickListener); + bodyClickListenerAdded = true; + } + } + + const bodyClickListener = event => { + for (let el = event.target; el && el !== document; el = el.parentNode) { + for (const attr in clickHandlers) { + const template = el.getAttribute(attr); + + if (template) { + clickHandlers[attr].fire({ + template + }); + return; + } + } + } + }; + + const defaultParams = { + title: '', + titleText: '', + text: '', + html: '', + footer: '', + icon: undefined, + iconColor: undefined, + iconHtml: undefined, + template: undefined, + toast: false, + showClass: { + popup: 'swal2-show', + backdrop: 'swal2-backdrop-show', + icon: 'swal2-icon-show' + }, + hideClass: { + popup: 'swal2-hide', + backdrop: 'swal2-backdrop-hide', + icon: 'swal2-icon-hide' + }, + customClass: {}, + target: 'body', + backdrop: true, + heightAuto: true, + allowOutsideClick: true, + allowEscapeKey: true, + allowEnterKey: true, + stopKeydownPropagation: true, + keydownListenerCapture: false, + showConfirmButton: true, + showDenyButton: false, + showCancelButton: false, + preConfirm: undefined, + preDeny: undefined, + confirmButtonText: 'OK', + confirmButtonAriaLabel: '', + confirmButtonColor: undefined, + denyButtonText: 'No', + denyButtonAriaLabel: '', + denyButtonColor: undefined, + cancelButtonText: 'Cancel', + cancelButtonAriaLabel: '', + cancelButtonColor: undefined, + buttonsStyling: true, + reverseButtons: false, + focusConfirm: true, + focusDeny: false, + focusCancel: false, + returnFocus: true, + showCloseButton: false, + closeButtonHtml: '×', + closeButtonAriaLabel: 'Close this dialog', + loaderHtml: '', + showLoaderOnConfirm: false, + showLoaderOnDeny: false, + imageUrl: undefined, + imageWidth: undefined, + imageHeight: undefined, + imageAlt: '', + timer: undefined, + timerProgressBar: false, + width: undefined, + padding: undefined, + background: undefined, + input: undefined, + inputPlaceholder: '', + inputLabel: '', + inputValue: '', + inputOptions: {}, + inputAutoTrim: true, + inputAttributes: {}, + inputValidator: undefined, + returnInputValueOnDeny: false, + validationMessage: undefined, + grow: false, + position: 'center', + progressSteps: [], + currentProgressStep: undefined, + progressStepsDistance: undefined, + willOpen: undefined, + didOpen: undefined, + didRender: undefined, + willClose: undefined, + didClose: undefined, + didDestroy: undefined, + scrollbarPadding: true + }; + const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose']; + const deprecatedParams = {}; + const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture']; + /** + * Is valid parameter + * @param {String} paramName + */ + + const isValidParameter = paramName => { + return Object.prototype.hasOwnProperty.call(defaultParams, paramName); + }; + /** + * Is valid parameter for Swal.update() method + * @param {String} paramName + */ + + const isUpdatableParameter = paramName => { + return updatableParams.indexOf(paramName) !== -1; + }; + /** + * Is deprecated parameter + * @param {String} paramName + */ + + const isDeprecatedParameter = paramName => { + return deprecatedParams[paramName]; + }; + + const checkIfParamIsValid = param => { + if (!isValidParameter(param)) { + warn("Unknown parameter \"".concat(param, "\"")); + } + }; + + const checkIfToastParamIsValid = param => { + if (toastIncompatibleParams.includes(param)) { + warn("The parameter \"".concat(param, "\" is incompatible with toasts")); + } + }; + + const checkIfParamIsDeprecated = param => { + if (isDeprecatedParameter(param)) { + warnAboutDeprecation(param, isDeprecatedParameter(param)); + } + }; + /** + * Show relevant warnings for given params + * + * @param params + */ + + + const showWarningsForParams = params => { + if (!params.backdrop && params.allowOutsideClick) { + warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); + } + + for (const param in params) { + checkIfParamIsValid(param); + + if (params.toast) { + checkIfToastParamIsValid(param); + } + + checkIfParamIsDeprecated(param); + } + }; + + + + var staticMethods = /*#__PURE__*/Object.freeze({ + isValidParameter: isValidParameter, + isUpdatableParameter: isUpdatableParameter, + isDeprecatedParameter: isDeprecatedParameter, + argsToParams: argsToParams, + isVisible: isVisible$1, + clickConfirm: clickConfirm, + clickDeny: clickDeny, + clickCancel: clickCancel, + getContainer: getContainer, + getPopup: getPopup, + getTitle: getTitle, + getHtmlContainer: getHtmlContainer, + getImage: getImage, + getIcon: getIcon, + getInputLabel: getInputLabel, + getCloseButton: getCloseButton, + getActions: getActions, + getConfirmButton: getConfirmButton, + getDenyButton: getDenyButton, + getCancelButton: getCancelButton, + getLoader: getLoader, + getFooter: getFooter, + getTimerProgressBar: getTimerProgressBar, + getFocusableElements: getFocusableElements, + getValidationMessage: getValidationMessage, + isLoading: isLoading, + fire: fire, + mixin: mixin, + showLoading: showLoading, + enableLoading: showLoading, + getTimerLeft: getTimerLeft, + stopTimer: stopTimer, + resumeTimer: resumeTimer, + toggleTimer: toggleTimer, + increaseTimer: increaseTimer, + isTimerRunning: isTimerRunning, + bindClickHandler: bindClickHandler + }); + + /** + * Hides loader and shows back the button which was hidden by .showLoading() + */ + + function hideLoading() { + // do nothing if popup is closed + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams) { + return; + } + + const domCache = privateProps.domCache.get(this); + hide(domCache.loader); + + if (isToast()) { + if (innerParams.icon) { + show(getIcon()); + } + } else { + showRelatedButton(domCache); + } + + removeClass([domCache.popup, domCache.actions], swalClasses.loading); + domCache.popup.removeAttribute('aria-busy'); + domCache.popup.removeAttribute('data-loading'); + domCache.confirmButton.disabled = false; + domCache.denyButton.disabled = false; + domCache.cancelButton.disabled = false; + } + + const showRelatedButton = domCache => { + const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace')); + + if (buttonToReplace.length) { + show(buttonToReplace[0], 'inline-block'); + } else if (allButtonsAreHidden()) { + hide(domCache.actions); + } + }; + + function getInput$1(instance) { + const innerParams = privateProps.innerParams.get(instance || this); + const domCache = privateProps.domCache.get(instance || this); + + if (!domCache) { + return null; + } + + return getInput(domCache.popup, innerParams.input); + } + + const fixScrollbar = () => { + // for queues, do not do this more than once + if (states.previousBodyPadding !== null) { + return; + } // if the body has overflow + + + if (document.body.scrollHeight > window.innerHeight) { + // add padding so the content doesn't shift after removal of scrollbar + states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right')); + document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px"); + } + }; + const undoScrollbar = () => { + if (states.previousBodyPadding !== null) { + document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px"); + states.previousBodyPadding = null; + } + }; + + /* istanbul ignore file */ + + const iOSfix = () => { + const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1; + + if (iOS && !hasClass(document.body, swalClasses.iosfix)) { + const offset = document.body.scrollTop; + document.body.style.top = "".concat(offset * -1, "px"); + addClass(document.body, swalClasses.iosfix); + lockBodyScroll(); + addBottomPaddingForTallPopups(); // #1948 + } + }; + + const addBottomPaddingForTallPopups = () => { + const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i); + + if (safari) { + const bottomPanelHeight = 44; + + if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) { + getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px"); + } + } + }; + + const lockBodyScroll = () => { + // #1246 + const container = getContainer(); + let preventTouchMove; + + container.ontouchstart = e => { + preventTouchMove = shouldPreventTouchMove(e); + }; + + container.ontouchmove = e => { + if (preventTouchMove) { + e.preventDefault(); + e.stopPropagation(); + } + }; + }; + + const shouldPreventTouchMove = event => { + const target = event.target; + const container = getContainer(); + + if (isStylys(event) || isZoom(event)) { + return false; + } + + if (target === container) { + return true; + } + + if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603 + target.tagName !== 'TEXTAREA' && // #2266 + !(isScrollable(getHtmlContainer()) && // #1944 + getHtmlContainer().contains(target))) { + return true; + } + + return false; + }; + + const isStylys = event => { + // #1786 + return event.touches && event.touches.length && event.touches[0].touchType === 'stylus'; + }; + + const isZoom = event => { + // #1891 + return event.touches && event.touches.length > 1; + }; + + const undoIOSfix = () => { + if (hasClass(document.body, swalClasses.iosfix)) { + const offset = parseInt(document.body.style.top, 10); + removeClass(document.body, swalClasses.iosfix); + document.body.style.top = ''; + document.body.scrollTop = offset * -1; + } + }; + + // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that + // elements not within the active modal dialog will not be surfaced if a user opens a screen + // reader’s list of elements (headings, form controls, landmarks, etc.) in the document. + + const setAriaHidden = () => { + const bodyChildren = toArray(document.body.children); + bodyChildren.forEach(el => { + if (el === getContainer() || el.contains(getContainer())) { + return; + } + + if (el.hasAttribute('aria-hidden')) { + el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden')); + } + + el.setAttribute('aria-hidden', 'true'); + }); + }; + const unsetAriaHidden = () => { + const bodyChildren = toArray(document.body.children); + bodyChildren.forEach(el => { + if (el.hasAttribute('data-previous-aria-hidden')) { + el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden')); + el.removeAttribute('data-previous-aria-hidden'); + } else { + el.removeAttribute('aria-hidden'); + } + }); + }; + + /** + * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. + * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` + * This is the approach that Babel will probably take to implement private methods/fields + * https://github.com/tc39/proposal-private-methods + * https://github.com/babel/babel/pull/7555 + * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* + * then we can use that language feature. + */ + var privateMethods = { + swalPromiseResolve: new WeakMap() + }; + + /* + * Instance method to close sweetAlert + */ + + function removePopupAndResetState(instance, container, returnFocus, didClose) { + if (isToast()) { + triggerDidCloseAndDispose(instance, didClose); + } else { + restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose)); + globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = false; + } + + const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088 + // for some reason removing the container in Safari will scroll the document to bottom + + if (isSafari) { + container.setAttribute('style', 'display:none !important'); + container.removeAttribute('class'); + container.innerHTML = ''; + } else { + container.remove(); + } + + if (isModal()) { + undoScrollbar(); + undoIOSfix(); + unsetAriaHidden(); + } + + removeBodyClasses(); + } + + function removeBodyClasses() { + removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]); + } + + function close(resolveValue) { + const popup = getPopup(); + + if (!popup) { + return; + } + + resolveValue = prepareResolveValue(resolveValue); + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) { + return; + } + + const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); + removeClass(popup, innerParams.showClass.popup); + addClass(popup, innerParams.hideClass.popup); + const backdrop = getContainer(); + removeClass(backdrop, innerParams.showClass.backdrop); + addClass(backdrop, innerParams.hideClass.backdrop); + handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise + + swalPromiseResolve(resolveValue); + } + + const prepareResolveValue = resolveValue => { + // When user calls Swal.close() + if (typeof resolveValue === 'undefined') { + return { + isConfirmed: false, + isDenied: false, + isDismissed: true + }; + } + + return Object.assign({ + isConfirmed: false, + isDenied: false, + isDismissed: false + }, resolveValue); + }; + + const handlePopupAnimation = (instance, popup, innerParams) => { + const container = getContainer(); // If animation is supported, animate + + const animationIsSupported = animationEndEvent && hasCssAnimation(popup); + + if (typeof innerParams.willClose === 'function') { + innerParams.willClose(popup); + } + + if (animationIsSupported) { + animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose); + } else { + // Otherwise, remove immediately + removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose); + } + }; + + const animatePopup = (instance, popup, container, returnFocus, didClose) => { + globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose); + popup.addEventListener(animationEndEvent, function (e) { + if (e.target === popup) { + globalState.swalCloseEventFinishedCallback(); + delete globalState.swalCloseEventFinishedCallback; + } + }); + }; + + const triggerDidCloseAndDispose = (instance, didClose) => { + setTimeout(() => { + if (typeof didClose === 'function') { + didClose.bind(instance.params)(); + } + + instance._destroy(); + }); + }; + + function setButtonsDisabled(instance, buttons, disabled) { + const domCache = privateProps.domCache.get(instance); + buttons.forEach(button => { + domCache[button].disabled = disabled; + }); + } + + function setInputDisabled(input, disabled) { + if (!input) { + return false; + } + + if (input.type === 'radio') { + const radiosContainer = input.parentNode.parentNode; + const radios = radiosContainer.querySelectorAll('input'); + + for (let i = 0; i < radios.length; i++) { + radios[i].disabled = disabled; + } + } else { + input.disabled = disabled; + } + } + + function enableButtons() { + setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false); + } + function disableButtons() { + setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true); + } + function enableInput() { + return setInputDisabled(this.getInput(), false); + } + function disableInput() { + return setInputDisabled(this.getInput(), true); + } + + function showValidationMessage(error) { + const domCache = privateProps.domCache.get(this); + const params = privateProps.innerParams.get(this); + setInnerHtml(domCache.validationMessage, error); + domCache.validationMessage.className = swalClasses['validation-message']; + + if (params.customClass && params.customClass.validationMessage) { + addClass(domCache.validationMessage, params.customClass.validationMessage); + } + + show(domCache.validationMessage); + const input = this.getInput(); + + if (input) { + input.setAttribute('aria-invalid', true); + input.setAttribute('aria-describedby', swalClasses['validation-message']); + focusInput(input); + addClass(input, swalClasses.inputerror); + } + } // Hide block with validation message + + function resetValidationMessage$1() { + const domCache = privateProps.domCache.get(this); + + if (domCache.validationMessage) { + hide(domCache.validationMessage); + } + + const input = this.getInput(); + + if (input) { + input.removeAttribute('aria-invalid'); + input.removeAttribute('aria-describedby'); + removeClass(input, swalClasses.inputerror); + } + } + + function getProgressSteps$1() { + const domCache = privateProps.domCache.get(this); + return domCache.progressSteps; + } + + class Timer { + constructor(callback, delay) { + this.callback = callback; + this.remaining = delay; + this.running = false; + this.start(); + } + + start() { + if (!this.running) { + this.running = true; + this.started = new Date(); + this.id = setTimeout(this.callback, this.remaining); + } + + return this.remaining; + } + + stop() { + if (this.running) { + this.running = false; + clearTimeout(this.id); + this.remaining -= new Date() - this.started; + } + + return this.remaining; + } + + increase(n) { + const running = this.running; + + if (running) { + this.stop(); + } + + this.remaining += n; + + if (running) { + this.start(); + } + + return this.remaining; + } + + getTimerLeft() { + if (this.running) { + this.stop(); + this.start(); + } + + return this.remaining; + } + + isRunning() { + return this.running; + } + + } + + var defaultInputValidators = { + email: (string, validationMessage) => { + return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address'); + }, + url: (string, validationMessage) => { + // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013 + return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL'); + } + }; + + function setDefaultInputValidators(params) { + // Use default `inputValidator` for supported input types if not provided + if (!params.inputValidator) { + Object.keys(defaultInputValidators).forEach(key => { + if (params.input === key) { + params.inputValidator = defaultInputValidators[key]; + } + }); + } + } + + function validateCustomTargetElement(params) { + // Determine if the custom target element is valid + if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) { + warn('Target parameter is not valid, defaulting to "body"'); + params.target = 'body'; + } + } + /** + * Set type, text and actions on popup + * + * @param params + * @returns {boolean} + */ + + + function setParameters(params) { + setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm + + if (params.showLoaderOnConfirm && !params.preConfirm) { + warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request'); + } + + validateCustomTargetElement(params); // Replace newlines with
            in title + + if (typeof params.title === 'string') { + params.title = params.title.split('\n').join('
            '); + } + + init(params); + } + + const swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; + const getTemplateParams = params => { + const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template; + + if (!template) { + return {}; + } + + const templateContent = template.content; + showWarningsForElements(templateContent); + const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); + return result; + }; + + const getSwalParams = templateContent => { + const result = {}; + toArray(templateContent.querySelectorAll('swal-param')).forEach(param => { + showWarningsForAttributes(param, ['name', 'value']); + const paramName = param.getAttribute('name'); + let value = param.getAttribute('value'); + + if (typeof defaultParams[paramName] === 'boolean' && value === 'false') { + value = false; + } + + if (typeof defaultParams[paramName] === 'object') { + value = JSON.parse(value); + } + + result[paramName] = value; + }); + return result; + }; + + const getSwalButtons = templateContent => { + const result = {}; + toArray(templateContent.querySelectorAll('swal-button')).forEach(button => { + showWarningsForAttributes(button, ['type', 'color', 'aria-label']); + const type = button.getAttribute('type'); + result["".concat(type, "ButtonText")] = button.innerHTML; + result["show".concat(capitalizeFirstLetter(type), "Button")] = true; + + if (button.hasAttribute('color')) { + result["".concat(type, "ButtonColor")] = button.getAttribute('color'); + } + + if (button.hasAttribute('aria-label')) { + result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label'); + } + }); + return result; + }; + + const getSwalImage = templateContent => { + const result = {}; + const image = templateContent.querySelector('swal-image'); + + if (image) { + showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']); + + if (image.hasAttribute('src')) { + result.imageUrl = image.getAttribute('src'); + } + + if (image.hasAttribute('width')) { + result.imageWidth = image.getAttribute('width'); + } + + if (image.hasAttribute('height')) { + result.imageHeight = image.getAttribute('height'); + } + + if (image.hasAttribute('alt')) { + result.imageAlt = image.getAttribute('alt'); + } + } + + return result; + }; + + const getSwalIcon = templateContent => { + const result = {}; + const icon = templateContent.querySelector('swal-icon'); + + if (icon) { + showWarningsForAttributes(icon, ['type', 'color']); + + if (icon.hasAttribute('type')) { + result.icon = icon.getAttribute('type'); + } + + if (icon.hasAttribute('color')) { + result.iconColor = icon.getAttribute('color'); + } + + result.iconHtml = icon.innerHTML; + } + + return result; + }; + + const getSwalInput = templateContent => { + const result = {}; + const input = templateContent.querySelector('swal-input'); + + if (input) { + showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']); + result.input = input.getAttribute('type') || 'text'; + + if (input.hasAttribute('label')) { + result.inputLabel = input.getAttribute('label'); + } + + if (input.hasAttribute('placeholder')) { + result.inputPlaceholder = input.getAttribute('placeholder'); + } + + if (input.hasAttribute('value')) { + result.inputValue = input.getAttribute('value'); + } + } + + const inputOptions = templateContent.querySelectorAll('swal-input-option'); + + if (inputOptions.length) { + result.inputOptions = {}; + toArray(inputOptions).forEach(option => { + showWarningsForAttributes(option, ['value']); + const optionValue = option.getAttribute('value'); + const optionName = option.innerHTML; + result.inputOptions[optionValue] = optionName; + }); + } + + return result; + }; + + const getSwalStringParams = (templateContent, paramNames) => { + const result = {}; + + for (const i in paramNames) { + const paramName = paramNames[i]; + const tag = templateContent.querySelector(paramName); + + if (tag) { + showWarningsForAttributes(tag, []); + result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim(); + } + } + + return result; + }; + + const showWarningsForElements = template => { + const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); + toArray(template.children).forEach(el => { + const tagName = el.tagName.toLowerCase(); + + if (allowedElements.indexOf(tagName) === -1) { + warn("Unrecognized element <".concat(tagName, ">")); + } + }); + }; + + const showWarningsForAttributes = (el, allowedAttributes) => { + toArray(el.attributes).forEach(attribute => { + if (allowedAttributes.indexOf(attribute.name) === -1) { + warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]); + } + }); + }; + + const SHOW_CLASS_TIMEOUT = 10; + /** + * Open popup, add necessary classes and styles, fix scrollbar + * + * @param params + */ + + const openPopup = params => { + const container = getContainer(); + const popup = getPopup(); + + if (typeof params.willOpen === 'function') { + params.willOpen(popup); + } + + const bodyStyles = window.getComputedStyle(document.body); + const initialBodyOverflow = bodyStyles.overflowY; + addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto' + + setTimeout(() => { + setScrollingVisibility(container, popup); + }, SHOW_CLASS_TIMEOUT); + + if (isModal()) { + fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow); + setAriaHidden(); + } + + if (!isToast() && !globalState.previousActiveElement) { + globalState.previousActiveElement = document.activeElement; + } + + if (typeof params.didOpen === 'function') { + setTimeout(() => params.didOpen(popup)); + } + + removeClass(container, swalClasses['no-transition']); + }; + + const swalOpenAnimationFinished = event => { + const popup = getPopup(); + + if (event.target !== popup) { + return; + } + + const container = getContainer(); + popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished); + container.style.overflowY = 'auto'; + }; + + const setScrollingVisibility = (container, popup) => { + if (animationEndEvent && hasCssAnimation(popup)) { + container.style.overflowY = 'hidden'; + popup.addEventListener(animationEndEvent, swalOpenAnimationFinished); + } else { + container.style.overflowY = 'auto'; + } + }; + + const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => { + iOSfix(); + + if (scrollbarPadding && initialBodyOverflow !== 'hidden') { + fixScrollbar(); + } // sweetalert2/issues/1247 + + + setTimeout(() => { + container.scrollTop = 0; + }); + }; + + const addClasses$1 = (container, popup, params) => { + addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059 + + popup.style.setProperty('opacity', '0', 'important'); + show(popup, 'grid'); + setTimeout(() => { + // Animate popup right after showing it + addClass(popup, params.showClass.popup); // and remove the opacity workaround + + popup.style.removeProperty('opacity'); + }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062 + + addClass([document.documentElement, document.body], swalClasses.shown); + + if (params.heightAuto && params.backdrop && !params.toast) { + addClass([document.documentElement, document.body], swalClasses['height-auto']); + } + }; + + const handleInputOptionsAndValue = (instance, params) => { + if (params.input === 'select' || params.input === 'radio') { + handleInputOptions(instance, params); + } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { + showLoading(getConfirmButton()); + handleInputValue(instance, params); + } + }; + const getInputValue = (instance, innerParams) => { + const input = instance.getInput(); + + if (!input) { + return null; + } + + switch (innerParams.input) { + case 'checkbox': + return getCheckboxValue(input); + + case 'radio': + return getRadioValue(input); + + case 'file': + return getFileValue(input); + + default: + return innerParams.inputAutoTrim ? input.value.trim() : input.value; + } + }; + + const getCheckboxValue = input => input.checked ? 1 : 0; + + const getRadioValue = input => input.checked ? input.value : null; + + const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; + + const handleInputOptions = (instance, params) => { + const popup = getPopup(); + + const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params); + + if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) { + showLoading(getConfirmButton()); + asPromise(params.inputOptions).then(inputOptions => { + instance.hideLoading(); + processInputOptions(inputOptions); + }); + } else if (typeof params.inputOptions === 'object') { + processInputOptions(params.inputOptions); + } else { + error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions)); + } + }; + + const handleInputValue = (instance, params) => { + const input = instance.getInput(); + hide(input); + asPromise(params.inputValue).then(inputValue => { + input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue); + show(input); + input.focus(); + instance.hideLoading(); + }).catch(err => { + error("Error in inputValue promise: ".concat(err)); + input.value = ''; + show(input); + input.focus(); + instance.hideLoading(); + }); + }; + + const populateInputOptions = { + select: (popup, inputOptions, params) => { + const select = getChildByClass(popup, swalClasses.select); + + const renderOption = (parent, optionLabel, optionValue) => { + const option = document.createElement('option'); + option.value = optionValue; + setInnerHtml(option, optionLabel); + option.selected = isSelected(optionValue, params.inputValue); + parent.appendChild(option); + }; + + inputOptions.forEach(inputOption => { + const optionValue = inputOption[0]; + const optionLabel = inputOption[1]; // spec: + // https://www.w3.org/TR/html401/interact/forms.html#h-17.6 + // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..." + // check whether this is a + + if (Array.isArray(optionLabel)) { + // if it is an array, then it is an + const optgroup = document.createElement('optgroup'); + optgroup.label = optionValue; + optgroup.disabled = false; // not configurable for now + + select.appendChild(optgroup); + optionLabel.forEach(o => renderOption(optgroup, o[1], o[0])); + } else { + // case of + valueFormatted = formatInputOptions(valueFormatted); + } + + result.push([key, valueFormatted]); + }); + } else { + Object.keys(inputOptions).forEach(key => { + let valueFormatted = inputOptions[key]; + + if (typeof valueFormatted === 'object') { + // case of + valueFormatted = formatInputOptions(valueFormatted); + } + + result.push([key, valueFormatted]); + }); + } + + return result; + }; + + const isSelected = (optionValue, inputValue) => { + return inputValue && inputValue.toString() === optionValue.toString(); + }; + + const handleConfirmButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableButtons(); + + if (innerParams.input) { + handleConfirmOrDenyWithInput(instance, 'confirm'); + } else { + confirm(instance, true); + } + }; + const handleDenyButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableButtons(); + + if (innerParams.returnInputValueOnDeny) { + handleConfirmOrDenyWithInput(instance, 'deny'); + } else { + deny(instance, false); + } + }; + const handleCancelButtonClick = (instance, dismissWith) => { + instance.disableButtons(); + dismissWith(DismissReason.cancel); + }; + + const handleConfirmOrDenyWithInput = (instance, type + /* 'confirm' | 'deny' */ + ) => { + const innerParams = privateProps.innerParams.get(instance); + const inputValue = getInputValue(instance, innerParams); + + if (innerParams.inputValidator) { + handleInputValidator(instance, inputValue, type); + } else if (!instance.getInput().checkValidity()) { + instance.enableButtons(); + instance.showValidationMessage(innerParams.validationMessage); + } else if (type === 'deny') { + deny(instance, inputValue); + } else { + confirm(instance, inputValue); + } + }; + + const handleInputValidator = (instance, inputValue, type + /* 'confirm' | 'deny' */ + ) => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableInput(); + const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage))); + validationPromise.then(validationMessage => { + instance.enableButtons(); + instance.enableInput(); + + if (validationMessage) { + instance.showValidationMessage(validationMessage); + } else if (type === 'deny') { + deny(instance, inputValue); + } else { + confirm(instance, inputValue); + } + }); + }; + + const deny = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); + + if (innerParams.showLoaderOnDeny) { + showLoading(getDenyButton()); + } + + if (innerParams.preDeny) { + const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage))); + preDenyPromise.then(preDenyValue => { + if (preDenyValue === false) { + instance.hideLoading(); + } else { + instance.closePopup({ + isDenied: true, + value: typeof preDenyValue === 'undefined' ? value : preDenyValue + }); + } + }); + } else { + instance.closePopup({ + isDenied: true, + value + }); + } + }; + + const succeedWith = (instance, value) => { + instance.closePopup({ + isConfirmed: true, + value + }); + }; + + const confirm = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); + + if (innerParams.showLoaderOnConfirm) { + showLoading(); + } + + if (innerParams.preConfirm) { + instance.resetValidationMessage(); + const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage))); + preConfirmPromise.then(preConfirmValue => { + if (isVisible(getValidationMessage()) || preConfirmValue === false) { + instance.hideLoading(); + } else { + succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue); + } + }); + } else { + succeedWith(instance, value); + } + }; + + const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => { + if (globalState.keydownTarget && globalState.keydownHandlerAdded) { + globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = false; + } + + if (!innerParams.toast) { + globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith); + + globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup(); + globalState.keydownListenerCapture = innerParams.keydownListenerCapture; + globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = true; + } + }; // Focus handling + + const setFocus = (innerParams, index, increment) => { + const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match + + if (focusableElements.length) { + index = index + increment; // rollover to first item + + if (index === focusableElements.length) { + index = 0; // go to last item + } else if (index === -1) { + index = focusableElements.length - 1; + } + + return focusableElements[index].focus(); + } // no visible focusable elements, focus the popup + + + getPopup().focus(); + }; + const arrowKeysNextButton = ['ArrowRight', 'ArrowDown']; + const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp']; + + const keydownHandler = (instance, e, dismissWith) => { + const innerParams = privateProps.innerParams.get(instance); + + if (!innerParams) { + return; // This instance has already been destroyed + } + + if (innerParams.stopKeydownPropagation) { + e.stopPropagation(); + } // ENTER + + + if (e.key === 'Enter') { + handleEnter(instance, e, innerParams); // TAB + } else if (e.key === 'Tab') { + handleTab(e, innerParams); // ARROWS - switch focus between buttons + } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) { + handleArrows(e.key); // ESC + } else if (e.key === 'Escape') { + handleEsc(e, innerParams, dismissWith); + } + }; + + const handleEnter = (instance, e, innerParams) => { + // #720 #721 + if (e.isComposing) { + return; + } + + if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) { + if (['textarea', 'file'].includes(innerParams.input)) { + return; // do not submit + } + + clickConfirm(); + e.preventDefault(); + } + }; + + const handleTab = (e, innerParams) => { + const targetElement = e.target; + const focusableElements = getFocusableElements(); + let btnIndex = -1; + + for (let i = 0; i < focusableElements.length; i++) { + if (targetElement === focusableElements[i]) { + btnIndex = i; + break; + } + } + + if (!e.shiftKey) { + // Cycle to the next button + setFocus(innerParams, btnIndex, 1); + } else { + // Cycle to the prev button + setFocus(innerParams, btnIndex, -1); + } + + e.stopPropagation(); + e.preventDefault(); + }; + + const handleArrows = key => { + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); + + if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) { + return; + } + + const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling'; + const buttonToFocus = document.activeElement[sibling]; + + if (buttonToFocus) { + buttonToFocus.focus(); + } + }; + + const handleEsc = (e, innerParams, dismissWith) => { + if (callIfFunction(innerParams.allowEscapeKey)) { + e.preventDefault(); + dismissWith(DismissReason.esc); + } + }; + + const handlePopupClick = (instance, domCache, dismissWith) => { + const innerParams = privateProps.innerParams.get(instance); + + if (innerParams.toast) { + handleToastClick(instance, domCache, dismissWith); + } else { + // Ignore click events that had mousedown on the popup but mouseup on the container + // This can happen when the user drags a slider + handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup + + handleContainerMousedown(domCache); + handleModalClick(instance, domCache, dismissWith); + } + }; + + const handleToastClick = (instance, domCache, dismissWith) => { + // Closing toast by internal click + domCache.popup.onclick = () => { + const innerParams = privateProps.innerParams.get(instance); + + if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) { + return; + } + + dismissWith(DismissReason.close); + }; + }; + + let ignoreOutsideClick = false; + + const handleModalMousedown = domCache => { + domCache.popup.onmousedown = () => { + domCache.container.onmouseup = function (e) { + domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't + // have any other direct children aside of the popup + + if (e.target === domCache.container) { + ignoreOutsideClick = true; + } + }; + }; + }; + + const handleContainerMousedown = domCache => { + domCache.container.onmousedown = () => { + domCache.popup.onmouseup = function (e) { + domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup + + if (e.target === domCache.popup || domCache.popup.contains(e.target)) { + ignoreOutsideClick = true; + } + }; + }; + }; + + const handleModalClick = (instance, domCache, dismissWith) => { + domCache.container.onclick = e => { + const innerParams = privateProps.innerParams.get(instance); + + if (ignoreOutsideClick) { + ignoreOutsideClick = false; + return; + } + + if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) { + dismissWith(DismissReason.backdrop); + } + }; + }; + + function _main(userParams, mixinParams = {}) { + showWarningsForParams(Object.assign({}, mixinParams, userParams)); + + if (globalState.currentInstance) { + globalState.currentInstance._destroy(); + + if (isModal()) { + unsetAriaHidden(); + } + } + + globalState.currentInstance = this; + const innerParams = prepareParams(userParams, mixinParams); + setParameters(innerParams); + Object.freeze(innerParams); // clear the previous timer + + if (globalState.timeout) { + globalState.timeout.stop(); + delete globalState.timeout; + } // clear the restore focus timeout + + + clearTimeout(globalState.restoreFocusTimeout); + const domCache = populateDomCache(this); + render(this, innerParams); + privateProps.innerParams.set(this, innerParams); + return swalPromise(this, domCache, innerParams); + } + + const prepareParams = (userParams, mixinParams) => { + const templateParams = getTemplateParams(userParams); + const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 + + params.showClass = Object.assign({}, defaultParams.showClass, params.showClass); + params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass); + return params; + }; + + const swalPromise = (instance, domCache, innerParams) => { + return new Promise(resolve => { + // functions to handle all closings/dismissals + const dismissWith = dismiss => { + instance.closePopup({ + isDismissed: true, + dismiss + }); + }; + + privateMethods.swalPromiseResolve.set(instance, resolve); + + domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance); + + domCache.denyButton.onclick = () => handleDenyButtonClick(instance); + + domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith); + + domCache.closeButton.onclick = () => dismissWith(DismissReason.close); + + handlePopupClick(instance, domCache, dismissWith); + addKeydownHandler(instance, globalState, innerParams, dismissWith); + handleInputOptionsAndValue(instance, innerParams); + openPopup(innerParams); + setupTimer(globalState, innerParams, dismissWith); + initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946) + + setTimeout(() => { + domCache.container.scrollTop = 0; + }); + }); + }; + + const populateDomCache = instance => { + const domCache = { + popup: getPopup(), + container: getContainer(), + actions: getActions(), + confirmButton: getConfirmButton(), + denyButton: getDenyButton(), + cancelButton: getCancelButton(), + loader: getLoader(), + closeButton: getCloseButton(), + validationMessage: getValidationMessage(), + progressSteps: getProgressSteps() + }; + privateProps.domCache.set(instance, domCache); + return domCache; + }; + + const setupTimer = (globalState$$1, innerParams, dismissWith) => { + const timerProgressBar = getTimerProgressBar(); + hide(timerProgressBar); + + if (innerParams.timer) { + globalState$$1.timeout = new Timer(() => { + dismissWith('timer'); + delete globalState$$1.timeout; + }, innerParams.timer); + + if (innerParams.timerProgressBar) { + show(timerProgressBar); + setTimeout(() => { + if (globalState$$1.timeout && globalState$$1.timeout.running) { + // timer can be already stopped or unset at this point + animateTimerProgressBar(innerParams.timer); + } + }); + } + } + }; + + const initFocus = (domCache, innerParams) => { + if (innerParams.toast) { + return; + } + + if (!callIfFunction(innerParams.allowEnterKey)) { + return blurActiveElement(); + } + + if (!focusButton(domCache, innerParams)) { + setFocus(innerParams, -1, 1); + } + }; + + const focusButton = (domCache, innerParams) => { + if (innerParams.focusDeny && isVisible(domCache.denyButton)) { + domCache.denyButton.focus(); + return true; + } + + if (innerParams.focusCancel && isVisible(domCache.cancelButton)) { + domCache.cancelButton.focus(); + return true; + } + + if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) { + domCache.confirmButton.focus(); + return true; + } + + return false; + }; + + const blurActiveElement = () => { + if (document.activeElement && typeof document.activeElement.blur === 'function') { + document.activeElement.blur(); + } + }; + + /** + * Updates popup parameters. + */ + + function update(params) { + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(this); + + if (!popup || hasClass(popup, innerParams.hideClass.popup)) { + return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup."); + } + + const validUpdatableParams = {}; // assign valid params from `params` to `defaults` + + Object.keys(params).forEach(param => { + if (Swal.isUpdatableParameter(param)) { + validUpdatableParams[param] = params[param]; + } else { + warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md")); + } + }); + const updatedParams = Object.assign({}, innerParams, validUpdatableParams); + render(this, updatedParams); + privateProps.innerParams.set(this, updatedParams); + Object.defineProperties(this, { + params: { + value: Object.assign({}, this.params, params), + writable: false, + enumerable: true + } + }); + } + + function _destroy() { + const domCache = privateProps.domCache.get(this); + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams) { + return; // This instance has already been destroyed + } // Check if there is another Swal closing + + + if (domCache.popup && globalState.swalCloseEventFinishedCallback) { + globalState.swalCloseEventFinishedCallback(); + delete globalState.swalCloseEventFinishedCallback; + } // Check if there is a swal disposal defer timer + + + if (globalState.deferDisposalTimer) { + clearTimeout(globalState.deferDisposalTimer); + delete globalState.deferDisposalTimer; + } + + if (typeof innerParams.didDestroy === 'function') { + innerParams.didDestroy(); + } + + disposeSwal(this); + } + + const disposeSwal = instance => { + // Unset this.params so GC will dispose it (#1569) + delete instance.params; // Unset globalState props so GC will dispose globalState (#1569) + + delete globalState.keydownHandler; + delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569) + + unsetWeakMaps(privateProps); + unsetWeakMaps(privateMethods); // Unset currentInstance + + delete globalState.currentInstance; + }; + + const unsetWeakMaps = obj => { + for (const i in obj) { + obj[i] = new WeakMap(); + } + }; + + + + var instanceMethods = /*#__PURE__*/Object.freeze({ + hideLoading: hideLoading, + disableLoading: hideLoading, + getInput: getInput$1, + close: close, + closePopup: close, + closeModal: close, + closeToast: close, + enableButtons: enableButtons, + disableButtons: disableButtons, + enableInput: enableInput, + disableInput: disableInput, + showValidationMessage: showValidationMessage, + resetValidationMessage: resetValidationMessage$1, + getProgressSteps: getProgressSteps$1, + _main: _main, + update: update, + _destroy: _destroy + }); + + let currentInstance; + + class SweetAlert { + constructor(...args) { + // Prevent run in Node env + if (typeof window === 'undefined') { + return; + } + + currentInstance = this; + const outerParams = Object.freeze(this.constructor.argsToParams(args)); + Object.defineProperties(this, { + params: { + value: outerParams, + writable: false, + enumerable: true, + configurable: true + } + }); + + const promise = this._main(this.params); + + privateProps.promise.set(this, promise); + } // `catch` cannot be the name of a module export, so we define our thenable methods here instead + + + then(onFulfilled) { + const promise = privateProps.promise.get(this); + return promise.then(onFulfilled); + } + + finally(onFinally) { + const promise = privateProps.promise.get(this); + return promise.finally(onFinally); + } + + } // Assign instance methods from src/instanceMethods/*.js to prototype + + + Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor + + Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility + + Object.keys(instanceMethods).forEach(key => { + SweetAlert[key] = function (...args) { + if (currentInstance) { + return currentInstance[key](...args); + } + }; + }); + SweetAlert.DismissReason = DismissReason; + SweetAlert.version = '11.1.7'; + + const Swal = SweetAlert; + Swal.default = Swal; + + return Swal; + +})); +if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2} + +"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}"); \ No newline at end of file diff --git a/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.all.min.js b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.all.min.js new file mode 100644 index 0000000..7a84d6c --- /dev/null +++ b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.all.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n
            \n \n
              \n
              \n \n

              \n
              \n \n \n
              \n \n \n
              \n \n
              \n \n \n
              \n
              \n
              \n \n \n \n
              \n
              \n
              \n
              \n
              \n
              \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
              \n \n
              \n
              \n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'
              ').concat(e,"
              "),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join("
              ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); +"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}"); \ No newline at end of file diff --git a/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.css b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.css new file mode 100644 index 0000000..3c7543d --- /dev/null +++ b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.css @@ -0,0 +1,1316 @@ +.swal2-popup.swal2-toast { + box-sizing: border-box; + grid-column: 1/4 !important; + grid-row: 1/4 !important; + grid-template-columns: 1fr 99fr 1fr; + padding: 1em; + overflow-y: hidden; + background: #fff; + box-shadow: 0 0 1px rgba(0, 0, 0, 0.075), 0 1px 2px rgba(0, 0, 0, 0.075), 1px 2px 4px rgba(0, 0, 0, 0.075), 1px 3px 8px rgba(0, 0, 0, 0.075), 2px 4px 16px rgba(0, 0, 0, 0.075); + pointer-events: all; +} +.swal2-popup.swal2-toast > * { + grid-column: 2; +} +.swal2-popup.swal2-toast .swal2-title { + margin: 0.5em 1em; + padding: 0; + font-size: 1em; + text-align: initial; +} +.swal2-popup.swal2-toast .swal2-loading { + justify-content: center; +} +.swal2-popup.swal2-toast .swal2-input { + height: 2em; + margin: 0.5em; + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-validation-message { + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-footer { + margin: 0.5em 0 0; + padding: 0.5em 0 0; + font-size: 0.8em; +} +.swal2-popup.swal2-toast .swal2-close { + grid-column: 3/3; + grid-row: 1/99; + align-self: center; + width: 0.8em; + height: 0.8em; + margin: 0; + font-size: 2em; +} +.swal2-popup.swal2-toast .swal2-html-container { + margin: 0.5em 1em; + padding: 0; + font-size: 1em; + text-align: initial; +} +.swal2-popup.swal2-toast .swal2-html-container:empty { + padding: 0; +} +.swal2-popup.swal2-toast .swal2-loader { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + height: 2em; + margin: 0.25em; +} +.swal2-popup.swal2-toast .swal2-icon { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + min-width: 2em; + height: 2em; + margin: 0 0.5em 0 0; +} +.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content { + display: flex; + align-items: center; + font-size: 1.8em; + font-weight: bold; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] { + top: 0.875em; + width: 1.375em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + left: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + right: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-actions { + justify-content: flex-start; + height: auto; + margin: 0; + margin-top: 0.5em; + padding: 0 0.5em; +} +.swal2-popup.swal2-toast .swal2-styled { + margin: 0.25em 0.5em; + padding: 0.4em 0.6em; + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-success { + border-color: #a5dc86; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line] { + position: absolute; + width: 1.6em; + height: 3em; + transform: rotate(45deg); + border-radius: 50%; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] { + top: -0.8em; + left: -0.5em; + transform: rotate(-45deg); + transform-origin: 2em 2em; + border-radius: 4em 0 0 4em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] { + top: -0.25em; + left: 0.9375em; + transform-origin: 0 1.5em; + border-radius: 0 4em 4em 0; +} +.swal2-popup.swal2-toast .swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} +.swal2-popup.swal2-toast .swal2-success .swal2-success-fix { + top: 0; + left: 0.4375em; + width: 0.4375em; + height: 2.6875em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line] { + height: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] { + top: 1.125em; + left: 0.1875em; + width: 0.75em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; +} +.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip { + -webkit-animation: swal2-toast-animate-success-line-tip 0.75s; + animation: swal2-toast-animate-success-line-tip 0.75s; +} +.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long { + -webkit-animation: swal2-toast-animate-success-line-long 0.75s; + animation: swal2-toast-animate-success-line-long 0.75s; +} +.swal2-popup.swal2-toast.swal2-show { + -webkit-animation: swal2-toast-show 0.5s; + animation: swal2-toast-show 0.5s; +} +.swal2-popup.swal2-toast.swal2-hide { + -webkit-animation: swal2-toast-hide 0.1s forwards; + animation: swal2-toast-hide 0.1s forwards; +} + +.swal2-container { + display: grid; + position: fixed; + z-index: 1060; + top: 0; + right: 0; + bottom: 0; + left: 0; + box-sizing: border-box; + grid-template-areas: "top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end"; + grid-template-rows: minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto); + grid-template-rows: minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto); + height: 100%; + padding: 0.625em; + overflow-x: hidden; + transition: background-color 0.1s; + -webkit-overflow-scrolling: touch; +} +.swal2-container.swal2-backdrop-show, .swal2-container.swal2-noanimation { + background: rgba(0, 0, 0, 0.4); +} +.swal2-container.swal2-backdrop-hide { + background: transparent !important; +} +.swal2-container.swal2-top-start, .swal2-container.swal2-center-start, .swal2-container.swal2-bottom-start { + grid-template-columns: minmax(0, 1fr) auto auto; +} +.swal2-container.swal2-top, .swal2-container.swal2-center, .swal2-container.swal2-bottom { + grid-template-columns: auto minmax(0, 1fr) auto; +} +.swal2-container.swal2-top-end, .swal2-container.swal2-center-end, .swal2-container.swal2-bottom-end { + grid-template-columns: auto auto minmax(0, 1fr); +} +.swal2-container.swal2-top-start > .swal2-popup { + align-self: start; +} +.swal2-container.swal2-top > .swal2-popup { + grid-column: 2; + align-self: start; + justify-self: center; +} +.swal2-container.swal2-top-end > .swal2-popup, .swal2-container.swal2-top-right > .swal2-popup { + grid-column: 3; + align-self: start; + justify-self: end; +} +.swal2-container.swal2-center-start > .swal2-popup, .swal2-container.swal2-center-left > .swal2-popup { + grid-row: 2; + align-self: center; +} +.swal2-container.swal2-center > .swal2-popup { + grid-column: 2; + grid-row: 2; + align-self: center; + justify-self: center; +} +.swal2-container.swal2-center-end > .swal2-popup, .swal2-container.swal2-center-right > .swal2-popup { + grid-column: 3; + grid-row: 2; + align-self: center; + justify-self: end; +} +.swal2-container.swal2-bottom-start > .swal2-popup, .swal2-container.swal2-bottom-left > .swal2-popup { + grid-column: 1; + grid-row: 3; + align-self: end; +} +.swal2-container.swal2-bottom > .swal2-popup { + grid-column: 2; + grid-row: 3; + justify-self: center; + align-self: end; +} +.swal2-container.swal2-bottom-end > .swal2-popup, .swal2-container.swal2-bottom-right > .swal2-popup { + grid-column: 3; + grid-row: 3; + align-self: end; + justify-self: end; +} +.swal2-container.swal2-grow-row > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup { + grid-column: 1/4; + width: 100%; +} +.swal2-container.swal2-grow-column > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup { + grid-row: 1/4; + align-self: stretch; +} +.swal2-container.swal2-no-transition { + transition: none !important; +} + +.swal2-popup { + display: none; + position: relative; + box-sizing: border-box; + grid-template-columns: minmax(0, 100%); + width: 32em; + max-width: 100%; + padding: 0 0 1.25em; + border: none; + border-radius: 5px; + background: #fff; + color: #545454; + font-family: inherit; + font-size: 1rem; +} +.swal2-popup:focus { + outline: none; +} +.swal2-popup.swal2-loading { + overflow-y: hidden; +} + +.swal2-title { + position: relative; + max-width: 100%; + margin: 0; + padding: 0.8em 1em 0; + color: #595959; + font-size: 1.875em; + font-weight: 600; + text-align: center; + text-transform: none; + word-wrap: break-word; +} + +.swal2-actions { + display: flex; + z-index: 1; + box-sizing: border-box; + flex-wrap: wrap; + align-items: center; + justify-content: center; + width: auto; + margin: 1.25em auto 0; + padding: 0; +} +.swal2-actions:not(.swal2-loading) .swal2-styled[disabled] { + opacity: 0.4; +} +.swal2-actions:not(.swal2-loading) .swal2-styled:hover { + background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)); +} +.swal2-actions:not(.swal2-loading) .swal2-styled:active { + background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); +} + +.swal2-loader { + display: none; + align-items: center; + justify-content: center; + width: 2.2em; + height: 2.2em; + margin: 0 1.875em; + -webkit-animation: swal2-rotate-loading 1.5s linear 0s infinite normal; + animation: swal2-rotate-loading 1.5s linear 0s infinite normal; + border-width: 0.25em; + border-style: solid; + border-radius: 100%; + border-color: #2778c4 transparent #2778c4 transparent; +} + +.swal2-styled { + margin: 0.3125em; + padding: 0.625em 1.1em; + transition: box-shadow 0.1s; + box-shadow: 0 0 0 3px transparent; + font-weight: 500; +} +.swal2-styled:not([disabled]) { + cursor: pointer; +} +.swal2-styled.swal2-confirm { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #7367f0; + color: #fff; + font-size: 1em; +} +.swal2-styled.swal2-confirm:focus { + box-shadow: 0 0 0 3px rgba(115, 103, 240, 0.5); +} +.swal2-styled.swal2-deny { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #ea5455; + color: #fff; + font-size: 1em; +} +.swal2-styled.swal2-deny:focus { + box-shadow: 0 0 0 3px rgba(234, 84, 85, 0.5); +} +.swal2-styled.swal2-cancel { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #6e7d88; + color: #fff; + font-size: 1em; +} +.swal2-styled.swal2-cancel:focus { + box-shadow: 0 0 0 3px rgba(110, 125, 136, 0.5); +} +.swal2-styled.swal2-default-outline:focus { + box-shadow: 0 0 0 3px rgba(100, 150, 200, 0.5); +} +.swal2-styled:focus { + outline: none; +} +.swal2-styled::-moz-focus-inner { + border: 0; +} + +.swal2-footer { + justify-content: center; + margin: 1em 0 0; + padding: 1em 1em 0; + border-top: 1px solid #eee; + color: #545454; + font-size: 1em; +} + +.swal2-timer-progress-bar-container { + position: absolute; + right: 0; + bottom: 0; + left: 0; + grid-column: auto !important; + height: 0.25em; + overflow: hidden; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} + +.swal2-timer-progress-bar { + width: 100%; + height: 0.25em; + background: rgba(0, 0, 0, 0.2); +} + +.swal2-image { + max-width: 100%; + margin: 2em auto 1em; +} + +.swal2-close { + z-index: 2; + align-items: center; + justify-content: center; + width: 1.2em; + height: 1.2em; + margin-top: 0; + margin-right: 0; + margin-bottom: -1.2em; + padding: 0; + overflow: hidden; + transition: color 0.1s, box-shadow 0.1s; + border: none; + border-radius: 5px; + background: transparent; + color: #ccc; + font-family: serif; + font-family: monospace; + font-size: 2.5em; + cursor: pointer; + justify-self: end; +} +.swal2-close:hover { + transform: none; + background: transparent; + color: #f27474; +} +.swal2-close:focus { + outline: none; + box-shadow: inset 0 0 0 3px rgba(100, 150, 200, 0.5); +} +.swal2-close::-moz-focus-inner { + border: 0; +} + +.swal2-html-container { + z-index: 1; + justify-content: center; + margin: 1em 1.6em 0.3em; + padding: 0; + overflow: auto; + color: #545454; + font-size: 1.125em; + font-weight: normal; + line-height: normal; + text-align: center; + word-wrap: break-word; + word-break: break-word; +} + +.swal2-input, +.swal2-file, +.swal2-textarea, +.swal2-select, +.swal2-radio, +.swal2-checkbox { + margin: 1em 2em 0; +} + +.swal2-input, +.swal2-file, +.swal2-textarea { + box-sizing: border-box; + width: auto; + transition: border-color 0.1s, box-shadow 0.1s; + border: 1px solid #d9d9d9; + border-radius: 0.1875em; + background: inherit; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent; + color: inherit; + font-size: 1.125em; +} +.swal2-input.swal2-inputerror, +.swal2-file.swal2-inputerror, +.swal2-textarea.swal2-inputerror { + border-color: #f27474 !important; + box-shadow: 0 0 2px #f27474 !important; +} +.swal2-input:focus, +.swal2-file:focus, +.swal2-textarea:focus { + border: 1px solid #b4dbed; + outline: none; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px rgba(100, 150, 200, 0.5); +} +.swal2-input::-moz-placeholder, .swal2-file::-moz-placeholder, .swal2-textarea::-moz-placeholder { + color: #ccc; +} +.swal2-input:-ms-input-placeholder, .swal2-file:-ms-input-placeholder, .swal2-textarea:-ms-input-placeholder { + color: #ccc; +} +.swal2-input::placeholder, +.swal2-file::placeholder, +.swal2-textarea::placeholder { + color: #ccc; +} + +.swal2-range { + margin: 1em 2em 0; + background: #fff; +} +.swal2-range input { + width: 80%; +} +.swal2-range output { + width: 20%; + color: inherit; + font-weight: 600; + text-align: center; +} +.swal2-range input, +.swal2-range output { + height: 2.625em; + padding: 0; + font-size: 1.125em; + line-height: 2.625em; +} + +.swal2-input { + height: 2.625em; + padding: 0 0.75em; +} + +.swal2-file { + width: 75%; + margin-right: auto; + margin-left: auto; + background: inherit; + font-size: 1.125em; +} + +.swal2-textarea { + height: 6.75em; + padding: 0.75em; +} + +.swal2-select { + min-width: 50%; + max-width: 100%; + padding: 0.375em 0.625em; + background: inherit; + color: inherit; + font-size: 1.125em; +} + +.swal2-radio, +.swal2-checkbox { + align-items: center; + justify-content: center; + background: #fff; + color: inherit; +} +.swal2-radio label, +.swal2-checkbox label { + margin: 0 0.6em; + font-size: 1.125em; +} +.swal2-radio input, +.swal2-checkbox input { + flex-shrink: 0; + margin: 0 0.4em; +} + +.swal2-input-label { + display: flex; + justify-content: center; + margin: 1em auto 0; +} + +.swal2-validation-message { + align-items: center; + justify-content: center; + margin: 1em 0 0; + padding: 0.625em; + overflow: hidden; + background: #f0f0f0; + color: #666666; + font-size: 1em; + font-weight: 300; +} +.swal2-validation-message::before { + content: "!"; + display: inline-block; + width: 1.5em; + min-width: 1.5em; + height: 1.5em; + margin: 0 0.625em; + border-radius: 50%; + background-color: #f27474; + color: #fff; + font-weight: 600; + line-height: 1.5em; + text-align: center; +} + +.swal2-icon { + position: relative; + box-sizing: content-box; + justify-content: center; + width: 5em; + height: 5em; + margin: 2.5em auto 0.6em; + border: 0.25em solid transparent; + border-radius: 50%; + border-color: #000; + font-family: inherit; + line-height: 5em; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.swal2-icon .swal2-icon-content { + display: flex; + align-items: center; + font-size: 3.75em; +} +.swal2-icon.swal2-error { + border-color: #f27474; + color: #f27474; +} +.swal2-icon.swal2-error .swal2-x-mark { + position: relative; + flex-grow: 1; +} +.swal2-icon.swal2-error [class^=swal2-x-mark-line] { + display: block; + position: absolute; + top: 2.3125em; + width: 2.9375em; + height: 0.3125em; + border-radius: 0.125em; + background-color: #f27474; +} +.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + left: 1.0625em; + transform: rotate(45deg); +} +.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + right: 1em; + transform: rotate(-45deg); +} +.swal2-icon.swal2-error.swal2-icon-show { + -webkit-animation: swal2-animate-error-icon 0.5s; + animation: swal2-animate-error-icon 0.5s; +} +.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark { + -webkit-animation: swal2-animate-error-x-mark 0.5s; + animation: swal2-animate-error-x-mark 0.5s; +} +.swal2-icon.swal2-warning { + border-color: #facea8; + color: #f8bb86; +} +.swal2-icon.swal2-info { + border-color: #9de0f6; + color: #3fc3ee; +} +.swal2-icon.swal2-question { + border-color: #c9dae1; + color: #87adbd; +} +.swal2-icon.swal2-success { + border-color: #a5dc86; + color: #a5dc86; +} +.swal2-icon.swal2-success [class^=swal2-success-circular-line] { + position: absolute; + width: 3.75em; + height: 7.5em; + transform: rotate(45deg); + border-radius: 50%; +} +.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left] { + top: -0.4375em; + left: -2.0635em; + transform: rotate(-45deg); + transform-origin: 3.75em 3.75em; + border-radius: 7.5em 0 0 7.5em; +} +.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right] { + top: -0.6875em; + left: 1.875em; + transform: rotate(-45deg); + transform-origin: 0 3.75em; + border-radius: 0 7.5em 7.5em 0; +} +.swal2-icon.swal2-success .swal2-success-ring { + position: absolute; + z-index: 2; + top: -0.25em; + left: -0.25em; + box-sizing: content-box; + width: 100%; + height: 100%; + border: 0.25em solid rgba(165, 220, 134, 0.3); + border-radius: 50%; +} +.swal2-icon.swal2-success .swal2-success-fix { + position: absolute; + z-index: 1; + top: 0.5em; + left: 1.625em; + width: 0.4375em; + height: 5.625em; + transform: rotate(-45deg); +} +.swal2-icon.swal2-success [class^=swal2-success-line] { + display: block; + position: absolute; + z-index: 2; + height: 0.3125em; + border-radius: 0.125em; + background-color: #a5dc86; +} +.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip] { + top: 2.875em; + left: 0.8125em; + width: 1.5625em; + transform: rotate(45deg); +} +.swal2-icon.swal2-success [class^=swal2-success-line][class$=long] { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + transform: rotate(-45deg); +} +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip { + -webkit-animation: swal2-animate-success-line-tip 0.75s; + animation: swal2-animate-success-line-tip 0.75s; +} +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long { + -webkit-animation: swal2-animate-success-line-long 0.75s; + animation: swal2-animate-success-line-long 0.75s; +} +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right { + -webkit-animation: swal2-rotate-success-circular-line 4.25s ease-in; + animation: swal2-rotate-success-circular-line 4.25s ease-in; +} + +.swal2-progress-steps { + flex-wrap: wrap; + align-items: center; + max-width: 100%; + margin: 1.25em auto; + padding: 0; + background: inherit; + font-weight: 600; +} +.swal2-progress-steps li { + display: inline-block; + position: relative; +} +.swal2-progress-steps .swal2-progress-step { + z-index: 20; + flex-shrink: 0; + width: 2em; + height: 2em; + border-radius: 2em; + background: #2778c4; + color: #fff; + line-height: 2em; + text-align: center; +} +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step { + background: #2778c4; +} +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step { + background: #add8e6; + color: #fff; +} +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step-line { + background: #add8e6; +} +.swal2-progress-steps .swal2-progress-step-line { + z-index: 10; + flex-shrink: 0; + width: 2.5em; + height: 0.4em; + margin: 0 -1px; + background: #2778c4; +} + +[class^=swal2] { + -webkit-tap-highlight-color: transparent; +} + +.swal2-show { + -webkit-animation: swal2-show 0.3s; + animation: swal2-show 0.3s; +} + +.swal2-hide { + -webkit-animation: swal2-hide 0.15s forwards; + animation: swal2-hide 0.15s forwards; +} + +.swal2-noanimation { + transition: none; +} + +.swal2-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +.swal2-rtl .swal2-close { + margin-right: initial; + margin-left: 0; +} +.swal2-rtl .swal2-timer-progress-bar { + right: 0; + left: auto; +} + +@-webkit-keyframes swal2-toast-show { + 0% { + transform: translateY(-0.625em) rotateZ(2deg); + } + 33% { + transform: translateY(0) rotateZ(-2deg); + } + 66% { + transform: translateY(0.3125em) rotateZ(2deg); + } + 100% { + transform: translateY(0) rotateZ(0deg); + } +} + +@keyframes swal2-toast-show { + 0% { + transform: translateY(-0.625em) rotateZ(2deg); + } + 33% { + transform: translateY(0) rotateZ(-2deg); + } + 66% { + transform: translateY(0.3125em) rotateZ(2deg); + } + 100% { + transform: translateY(0) rotateZ(0deg); + } +} +@-webkit-keyframes swal2-toast-hide { + 100% { + transform: rotateZ(1deg); + opacity: 0; + } +} +@keyframes swal2-toast-hide { + 100% { + transform: rotateZ(1deg); + opacity: 0; + } +} +@-webkit-keyframes swal2-toast-animate-success-line-tip { + 0% { + top: 0.5625em; + left: 0.0625em; + width: 0; + } + 54% { + top: 0.125em; + left: 0.125em; + width: 0; + } + 70% { + top: 0.625em; + left: -0.25em; + width: 1.625em; + } + 84% { + top: 1.0625em; + left: 0.75em; + width: 0.5em; + } + 100% { + top: 1.125em; + left: 0.1875em; + width: 0.75em; + } +} +@keyframes swal2-toast-animate-success-line-tip { + 0% { + top: 0.5625em; + left: 0.0625em; + width: 0; + } + 54% { + top: 0.125em; + left: 0.125em; + width: 0; + } + 70% { + top: 0.625em; + left: -0.25em; + width: 1.625em; + } + 84% { + top: 1.0625em; + left: 0.75em; + width: 0.5em; + } + 100% { + top: 1.125em; + left: 0.1875em; + width: 0.75em; + } +} +@-webkit-keyframes swal2-toast-animate-success-line-long { + 0% { + top: 1.625em; + right: 1.375em; + width: 0; + } + 65% { + top: 1.25em; + right: 0.9375em; + width: 0; + } + 84% { + top: 0.9375em; + right: 0; + width: 1.125em; + } + 100% { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; + } +} +@keyframes swal2-toast-animate-success-line-long { + 0% { + top: 1.625em; + right: 1.375em; + width: 0; + } + 65% { + top: 1.25em; + right: 0.9375em; + width: 0; + } + 84% { + top: 0.9375em; + right: 0; + width: 1.125em; + } + 100% { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; + } +} +@-webkit-keyframes swal2-show { + 0% { + transform: scale(0.7); + } + 45% { + transform: scale(1.05); + } + 80% { + transform: scale(0.95); + } + 100% { + transform: scale(1); + } +} +@keyframes swal2-show { + 0% { + transform: scale(0.7); + } + 45% { + transform: scale(1.05); + } + 80% { + transform: scale(0.95); + } + 100% { + transform: scale(1); + } +} +@-webkit-keyframes swal2-hide { + 0% { + transform: scale(1); + opacity: 1; + } + 100% { + transform: scale(0.5); + opacity: 0; + } +} +@keyframes swal2-hide { + 0% { + transform: scale(1); + opacity: 1; + } + 100% { + transform: scale(0.5); + opacity: 0; + } +} +@-webkit-keyframes swal2-animate-success-line-tip { + 0% { + top: 1.1875em; + left: 0.0625em; + width: 0; + } + 54% { + top: 1.0625em; + left: 0.125em; + width: 0; + } + 70% { + top: 2.1875em; + left: -0.375em; + width: 3.125em; + } + 84% { + top: 3em; + left: 1.3125em; + width: 1.0625em; + } + 100% { + top: 2.8125em; + left: 0.8125em; + width: 1.5625em; + } +} +@keyframes swal2-animate-success-line-tip { + 0% { + top: 1.1875em; + left: 0.0625em; + width: 0; + } + 54% { + top: 1.0625em; + left: 0.125em; + width: 0; + } + 70% { + top: 2.1875em; + left: -0.375em; + width: 3.125em; + } + 84% { + top: 3em; + left: 1.3125em; + width: 1.0625em; + } + 100% { + top: 2.8125em; + left: 0.8125em; + width: 1.5625em; + } +} +@-webkit-keyframes swal2-animate-success-line-long { + 0% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 65% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 84% { + top: 2.1875em; + right: 0; + width: 3.4375em; + } + 100% { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + } +} +@keyframes swal2-animate-success-line-long { + 0% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 65% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 84% { + top: 2.1875em; + right: 0; + width: 3.4375em; + } + 100% { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + } +} +@-webkit-keyframes swal2-rotate-success-circular-line { + 0% { + transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + } + 100% { + transform: rotate(-405deg); + } +} +@keyframes swal2-rotate-success-circular-line { + 0% { + transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + } + 100% { + transform: rotate(-405deg); + } +} +@-webkit-keyframes swal2-animate-error-x-mark { + 0% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 50% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 80% { + margin-top: -0.375em; + transform: scale(1.15); + } + 100% { + margin-top: 0; + transform: scale(1); + opacity: 1; + } +} +@keyframes swal2-animate-error-x-mark { + 0% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 50% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 80% { + margin-top: -0.375em; + transform: scale(1.15); + } + 100% { + margin-top: 0; + transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes swal2-animate-error-icon { + 0% { + transform: rotateX(100deg); + opacity: 0; + } + 100% { + transform: rotateX(0deg); + opacity: 1; + } +} +@keyframes swal2-animate-error-icon { + 0% { + transform: rotateX(100deg); + opacity: 0; + } + 100% { + transform: rotateX(0deg); + opacity: 1; + } +} +@-webkit-keyframes swal2-rotate-loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +@keyframes swal2-rotate-loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) { + overflow: hidden; +} +body.swal2-height-auto { + height: auto !important; +} +body.swal2-no-backdrop .swal2-container { + background-color: transparent !important; + pointer-events: none; +} +body.swal2-no-backdrop .swal2-container .swal2-popup { + pointer-events: all; +} +body.swal2-no-backdrop .swal2-container .swal2-modal { + box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); +} +@media print { + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) { + overflow-y: scroll !important; + } + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) > [aria-hidden=true] { + display: none; + } + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container { + position: static !important; + } +} +body.swal2-toast-shown .swal2-container { + box-sizing: border-box; + width: 360px; + max-width: 100%; + background-color: transparent; + pointer-events: none; +} +body.swal2-toast-shown .swal2-container.swal2-top { + top: 0; + right: auto; + bottom: auto; + left: 50%; + transform: translateX(-50%); +} +body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .swal2-container.swal2-top-right { + top: 0; + right: 0; + bottom: auto; + left: auto; +} +body.swal2-toast-shown .swal2-container.swal2-top-start, body.swal2-toast-shown .swal2-container.swal2-top-left { + top: 0; + right: auto; + bottom: auto; + left: 0; +} +body.swal2-toast-shown .swal2-container.swal2-center-start, body.swal2-toast-shown .swal2-container.swal2-center-left { + top: 50%; + right: auto; + bottom: auto; + left: 0; + transform: translateY(-50%); +} +body.swal2-toast-shown .swal2-container.swal2-center { + top: 50%; + right: auto; + bottom: auto; + left: 50%; + transform: translate(-50%, -50%); +} +body.swal2-toast-shown .swal2-container.swal2-center-end, body.swal2-toast-shown .swal2-container.swal2-center-right { + top: 50%; + right: 0; + bottom: auto; + left: auto; + transform: translateY(-50%); +} +body.swal2-toast-shown .swal2-container.swal2-bottom-start, body.swal2-toast-shown .swal2-container.swal2-bottom-left { + top: auto; + right: auto; + bottom: 0; + left: 0; +} +body.swal2-toast-shown .swal2-container.swal2-bottom { + top: auto; + right: auto; + bottom: 0; + left: 50%; + transform: translateX(-50%); +} +body.swal2-toast-shown .swal2-container.swal2-bottom-end, body.swal2-toast-shown .swal2-container.swal2-bottom-right { + top: auto; + right: 0; + bottom: 0; + left: auto; +} \ No newline at end of file diff --git a/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.js b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.js new file mode 100644 index 0000000..5bda432 --- /dev/null +++ b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.js @@ -0,0 +1,3120 @@ +/*! +* sweetalert2 v11.1.7 +* Released under the MIT License. +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.Sweetalert2 = factory()); +}(this, function () { 'use strict'; + + const DismissReason = Object.freeze({ + cancel: 'cancel', + backdrop: 'backdrop', + close: 'close', + esc: 'esc', + timer: 'timer' + }); + + const consolePrefix = 'SweetAlert2:'; + /** + * Filter the unique values into a new array + * @param arr + */ + + const uniqueArray = arr => { + const result = []; + + for (let i = 0; i < arr.length; i++) { + if (result.indexOf(arr[i]) === -1) { + result.push(arr[i]); + } + } + + return result; + }; + /** + * Capitalize the first letter of a string + * @param str + */ + + const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1); + /** + * Convert NodeList to Array + * @param nodeList + */ + + const toArray = nodeList => Array.prototype.slice.call(nodeList); + /** + * Standardise console warnings + * @param message + */ + + const warn = message => { + console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message)); + }; + /** + * Standardise console errors + * @param message + */ + + const error = message => { + console.error("".concat(consolePrefix, " ").concat(message)); + }; + /** + * Private global state for `warnOnce` + * @type {Array} + * @private + */ + + const previousWarnOnceMessages = []; + /** + * Show a console warning, but only if it hasn't already been shown + * @param message + */ + + const warnOnce = message => { + if (!previousWarnOnceMessages.includes(message)) { + previousWarnOnceMessages.push(message); + warn(message); + } + }; + /** + * Show a one-time console warning about deprecated params/methods + */ + + const warnAboutDeprecation = (deprecatedParam, useInstead) => { + warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead.")); + }; + /** + * If `arg` is a function, call it (with no arguments or context) and return the result. + * Otherwise, just pass the value through + * @param arg + */ + + const callIfFunction = arg => typeof arg === 'function' ? arg() : arg; + const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function'; + const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg); + const isPromise = arg => arg && Promise.resolve(arg) === arg; + + const isJqueryElement = elem => typeof elem === 'object' && elem.jquery; + + const isElement = elem => elem instanceof Element || isJqueryElement(elem); + + const argsToParams = args => { + const params = {}; + + if (typeof args[0] === 'object' && !isElement(args[0])) { + Object.assign(params, args[0]); + } else { + ['title', 'html', 'icon'].forEach((name, index) => { + const arg = args[index]; + + if (typeof arg === 'string' || isElement(arg)) { + params[name] = arg; + } else if (arg !== undefined) { + error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg)); + } + }); + } + + return params; + }; + + const swalPrefix = 'swal2-'; + const prefix = items => { + const result = {}; + + for (const i in items) { + result[items[i]] = swalPrefix + items[i]; + } + + return result; + }; + const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']); + const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']); + + const getContainer = () => document.body.querySelector(".".concat(swalClasses.container)); + const elementBySelector = selectorString => { + const container = getContainer(); + return container ? container.querySelector(selectorString) : null; + }; + + const elementByClass = className => { + return elementBySelector(".".concat(className)); + }; + + const getPopup = () => elementByClass(swalClasses.popup); + const getIcon = () => elementByClass(swalClasses.icon); + const getTitle = () => elementByClass(swalClasses.title); + const getHtmlContainer = () => elementByClass(swalClasses['html-container']); + const getImage = () => elementByClass(swalClasses.image); + const getProgressSteps = () => elementByClass(swalClasses['progress-steps']); + const getValidationMessage = () => elementByClass(swalClasses['validation-message']); + const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm)); + const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny)); + const getInputLabel = () => elementByClass(swalClasses['input-label']); + const getLoader = () => elementBySelector(".".concat(swalClasses.loader)); + const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel)); + const getActions = () => elementByClass(swalClasses.actions); + const getFooter = () => elementByClass(swalClasses.footer); + const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']); + const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js + + const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n"; + const getFocusableElements = () => { + const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex + .sort((a, b) => { + a = parseInt(a.getAttribute('tabindex')); + b = parseInt(b.getAttribute('tabindex')); + + if (a > b) { + return 1; + } else if (a < b) { + return -1; + } + + return 0; + }); + const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1'); + return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el)); + }; + const isModal = () => { + return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']); + }; + const isToast = () => { + return document.body.classList.contains(swalClasses['toast-shown']); + }; + const isLoading = () => { + return getPopup().hasAttribute('data-loading'); + }; + + const states = { + previousBodyPadding: null + }; + const setInnerHtml = (elem, html) => { + // #1926 + elem.textContent = ''; + + if (html) { + const parser = new DOMParser(); + const parsed = parser.parseFromString(html, "text/html"); + toArray(parsed.querySelector('head').childNodes).forEach(child => { + elem.appendChild(child); + }); + toArray(parsed.querySelector('body').childNodes).forEach(child => { + elem.appendChild(child); + }); + } + }; + const hasClass = (elem, className) => { + if (!className) { + return false; + } + + const classList = className.split(/\s+/); + + for (let i = 0; i < classList.length; i++) { + if (!elem.classList.contains(classList[i])) { + return false; + } + } + + return true; + }; + + const removeCustomClasses = (elem, params) => { + toArray(elem.classList).forEach(className => { + if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) { + elem.classList.remove(className); + } + }); + }; + + const applyCustomClass = (elem, params, className) => { + removeCustomClasses(elem, params); + + if (params.customClass && params.customClass[className]) { + if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) { + return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\"")); + } + + addClass(elem, params.customClass[className]); + } + }; + const getInput = (popup, inputType) => { + if (!inputType) { + return null; + } + + switch (inputType) { + case 'select': + case 'textarea': + case 'file': + return getChildByClass(popup, swalClasses[inputType]); + + case 'checkbox': + return popup.querySelector(".".concat(swalClasses.checkbox, " input")); + + case 'radio': + return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child")); + + case 'range': + return popup.querySelector(".".concat(swalClasses.range, " input")); + + default: + return getChildByClass(popup, swalClasses.input); + } + }; + const focusInput = input => { + input.focus(); // place cursor at end of text in text input + + if (input.type !== 'file') { + // http://stackoverflow.com/a/2345915 + const val = input.value; + input.value = ''; + input.value = val; + } + }; + const toggleClass = (target, classList, condition) => { + if (!target || !classList) { + return; + } + + if (typeof classList === 'string') { + classList = classList.split(/\s+/).filter(Boolean); + } + + classList.forEach(className => { + if (target.forEach) { + target.forEach(elem => { + condition ? elem.classList.add(className) : elem.classList.remove(className); + }); + } else { + condition ? target.classList.add(className) : target.classList.remove(className); + } + }); + }; + const addClass = (target, classList) => { + toggleClass(target, classList, true); + }; + const removeClass = (target, classList) => { + toggleClass(target, classList, false); + }; + const getChildByClass = (elem, className) => { + for (let i = 0; i < elem.childNodes.length; i++) { + if (hasClass(elem.childNodes[i], className)) { + return elem.childNodes[i]; + } + } + }; + const applyNumericalStyle = (elem, property, value) => { + if (value === "".concat(parseInt(value))) { + value = parseInt(value); + } + + if (value || parseInt(value) === 0) { + elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value; + } else { + elem.style.removeProperty(property); + } + }; + const show = (elem, display = 'flex') => { + elem.style.display = display; + }; + const hide = elem => { + elem.style.display = 'none'; + }; + const setStyle = (parent, selector, property, value) => { + const el = parent.querySelector(selector); + + if (el) { + el.style[property] = value; + } + }; + const toggle = (elem, condition, display) => { + condition ? show(elem, display) : hide(elem); + }; // borrowed from jquery $(elem).is(':visible') implementation + + const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length)); + const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton()); + const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119 + + const hasCssAnimation = elem => { + const style = window.getComputedStyle(elem); + const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0'); + const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0'); + return animDuration > 0 || transDuration > 0; + }; + const animateTimerProgressBar = (timer, reset = false) => { + const timerProgressBar = getTimerProgressBar(); + + if (isVisible(timerProgressBar)) { + if (reset) { + timerProgressBar.style.transition = 'none'; + timerProgressBar.style.width = '100%'; + } + + setTimeout(() => { + timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear"); + timerProgressBar.style.width = '0%'; + }, 10); + } + }; + const stopTimerProgressBar = () => { + const timerProgressBar = getTimerProgressBar(); + const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + timerProgressBar.style.removeProperty('transition'); + timerProgressBar.style.width = '100%'; + const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100); + timerProgressBar.style.removeProperty('transition'); + timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%"); + }; + + // Detect Node env + const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined'; + + const sweetHTML = "\n
              \n \n
                \n
                \n \n

                \n
                \n \n \n
                \n \n \n
                \n \n
                \n \n \n
                \n
                \n
                \n \n \n \n
                \n
                \n
                \n
                \n
                \n
                \n").replace(/(^|\n)\s*/g, ''); + + const resetOldContainer = () => { + const oldContainer = getContainer(); + + if (!oldContainer) { + return false; + } + + oldContainer.remove(); + removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]); + return true; + }; + + const resetValidationMessage = () => { + if (Swal.isVisible()) { + Swal.resetValidationMessage(); + } + }; + + const addInputChangeListeners = () => { + const popup = getPopup(); + const input = getChildByClass(popup, swalClasses.input); + const file = getChildByClass(popup, swalClasses.file); + const range = popup.querySelector(".".concat(swalClasses.range, " input")); + const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output")); + const select = getChildByClass(popup, swalClasses.select); + const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input")); + const textarea = getChildByClass(popup, swalClasses.textarea); + input.oninput = resetValidationMessage; + file.onchange = resetValidationMessage; + select.onchange = resetValidationMessage; + checkbox.onchange = resetValidationMessage; + textarea.oninput = resetValidationMessage; + + range.oninput = () => { + resetValidationMessage(); + rangeOutput.value = range.value; + }; + + range.onchange = () => { + resetValidationMessage(); + range.nextSibling.value = range.value; + }; + }; + + const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target; + + const setupAccessibility = params => { + const popup = getPopup(); + popup.setAttribute('role', params.toast ? 'alert' : 'dialog'); + popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); + + if (!params.toast) { + popup.setAttribute('aria-modal', 'true'); + } + }; + + const setupRTL = targetElement => { + if (window.getComputedStyle(targetElement).direction === 'rtl') { + addClass(getContainer(), swalClasses.rtl); + } + }; + /* + * Add modal + backdrop to DOM + */ + + + const init = params => { + // Clean up the old popup container if it exists + const oldContainerExisted = resetOldContainer(); + /* istanbul ignore if */ + + if (isNodeEnv()) { + error('SweetAlert2 requires document to initialize'); + return; + } + + const container = document.createElement('div'); + container.className = swalClasses.container; + + if (oldContainerExisted) { + addClass(container, swalClasses['no-transition']); + } + + setInnerHtml(container, sweetHTML); + const targetElement = getTarget(params.target); + targetElement.appendChild(container); + setupAccessibility(params); + setupRTL(targetElement); + addInputChangeListeners(); + }; + + const parseHtmlToContainer = (param, target) => { + // DOM element + if (param instanceof HTMLElement) { + target.appendChild(param); // Object + } else if (typeof param === 'object') { + handleObject(param, target); // Plain string + } else if (param) { + setInnerHtml(target, param); + } + }; + + const handleObject = (param, target) => { + // JQuery element(s) + if (param.jquery) { + handleJqueryElem(target, param); // For other objects use their string representation + } else { + setInnerHtml(target, param.toString()); + } + }; + + const handleJqueryElem = (target, elem) => { + target.textContent = ''; + + if (0 in elem) { + for (let i = 0; (i in elem); i++) { + target.appendChild(elem[i].cloneNode(true)); + } + } else { + target.appendChild(elem.cloneNode(true)); + } + }; + + const animationEndEvent = (() => { + // Prevent run in Node env + + /* istanbul ignore if */ + if (isNodeEnv()) { + return false; + } + + const testEl = document.createElement('div'); + const transEndEventNames = { + WebkitAnimation: 'webkitAnimationEnd', + OAnimation: 'oAnimationEnd oanimationend', + animation: 'animationend' + }; + + for (const i in transEndEventNames) { + if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') { + return transEndEventNames[i]; + } + } + + return false; + })(); + + // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js + + const measureScrollbar = () => { + const scrollDiv = document.createElement('div'); + scrollDiv.className = swalClasses['scrollbar-measure']; + document.body.appendChild(scrollDiv); + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; + + const renderActions = (instance, params) => { + const actions = getActions(); + const loader = getLoader(); + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); // Actions (buttons) wrapper + + if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) { + hide(actions); + } else { + show(actions); + } // Custom class + + + applyCustomClass(actions, params, 'actions'); // Render buttons + + renderButton(confirmButton, 'confirm', params); + renderButton(denyButton, 'deny', params); + renderButton(cancelButton, 'cancel', params); + handleButtonsStyling(confirmButton, denyButton, cancelButton, params); + + if (params.reverseButtons) { + actions.insertBefore(cancelButton, loader); + actions.insertBefore(denyButton, loader); + actions.insertBefore(confirmButton, loader); + } // Loader + + + setInnerHtml(loader, params.loaderHtml); + applyCustomClass(loader, params, 'loader'); + }; + + function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) { + if (!params.buttonsStyling) { + return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled); + } + + addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors + + if (params.confirmButtonColor) { + confirmButton.style.backgroundColor = params.confirmButtonColor; + addClass(confirmButton, swalClasses['default-outline']); + } + + if (params.denyButtonColor) { + denyButton.style.backgroundColor = params.denyButtonColor; + addClass(denyButton, swalClasses['default-outline']); + } + + if (params.cancelButtonColor) { + cancelButton.style.backgroundColor = params.cancelButtonColor; + addClass(cancelButton, swalClasses['default-outline']); + } + } + + function renderButton(button, buttonType, params) { + toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block'); + setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text + + button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label + // Add buttons custom classes + + button.className = swalClasses[buttonType]; + applyCustomClass(button, params, "".concat(buttonType, "Button")); + addClass(button, params["".concat(buttonType, "ButtonClass")]); + } + + function handleBackdropParam(container, backdrop) { + if (typeof backdrop === 'string') { + container.style.background = backdrop; + } else if (!backdrop) { + addClass([document.documentElement, document.body], swalClasses['no-backdrop']); + } + } + + function handlePositionParam(container, position) { + if (position in swalClasses) { + addClass(container, swalClasses[position]); + } else { + warn('The "position" parameter is not valid, defaulting to "center"'); + addClass(container, swalClasses.center); + } + } + + function handleGrowParam(container, grow) { + if (grow && typeof grow === 'string') { + const growClass = "grow-".concat(grow); + + if (growClass in swalClasses) { + addClass(container, swalClasses[growClass]); + } + } + } + + const renderContainer = (instance, params) => { + const container = getContainer(); + + if (!container) { + return; + } + + handleBackdropParam(container, params.backdrop); + handlePositionParam(container, params.position); + handleGrowParam(container, params.grow); // Custom class + + applyCustomClass(container, params, 'container'); + }; + + /** + * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. + * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` + * This is the approach that Babel will probably take to implement private methods/fields + * https://github.com/tc39/proposal-private-methods + * https://github.com/babel/babel/pull/7555 + * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* + * then we can use that language feature. + */ + var privateProps = { + promise: new WeakMap(), + innerParams: new WeakMap(), + domCache: new WeakMap() + }; + + const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; + const renderInput = (instance, params) => { + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(instance); + const rerender = !innerParams || params.input !== innerParams.input; + inputTypes.forEach(inputType => { + const inputClass = swalClasses[inputType]; + const inputContainer = getChildByClass(popup, inputClass); // set attributes + + setAttributes(inputType, params.inputAttributes); // set class + + inputContainer.className = inputClass; + + if (rerender) { + hide(inputContainer); + } + }); + + if (params.input) { + if (rerender) { + showInput(params); + } // set custom class + + + setCustomClass(params); + } + }; + + const showInput = params => { + if (!renderInputType[params.input]) { + return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\"")); + } + + const inputContainer = getInputContainer(params.input); + const input = renderInputType[params.input](inputContainer, params); + show(input); // input autofocus + + setTimeout(() => { + focusInput(input); + }); + }; + + const removeAttributes = input => { + for (let i = 0; i < input.attributes.length; i++) { + const attrName = input.attributes[i].name; + + if (!['type', 'value', 'style'].includes(attrName)) { + input.removeAttribute(attrName); + } + } + }; + + const setAttributes = (inputType, inputAttributes) => { + const input = getInput(getPopup(), inputType); + + if (!input) { + return; + } + + removeAttributes(input); + + for (const attr in inputAttributes) { + input.setAttribute(attr, inputAttributes[attr]); + } + }; + + const setCustomClass = params => { + const inputContainer = getInputContainer(params.input); + + if (params.customClass) { + addClass(inputContainer, params.customClass.input); + } + }; + + const setInputPlaceholder = (input, params) => { + if (!input.placeholder || params.inputPlaceholder) { + input.placeholder = params.inputPlaceholder; + } + }; + + const setInputLabel = (input, prependTo, params) => { + if (params.inputLabel) { + input.id = swalClasses.input; + const label = document.createElement('label'); + const labelClass = swalClasses['input-label']; + label.setAttribute('for', input.id); + label.className = labelClass; + addClass(label, params.customClass.inputLabel); + label.innerText = params.inputLabel; + prependTo.insertAdjacentElement('beforebegin', label); + } + }; + + const getInputContainer = inputType => { + const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input; + return getChildByClass(getPopup(), inputClass); + }; + + const renderInputType = {}; + + renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => { + if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') { + input.value = params.inputValue; + } else if (!isPromise(params.inputValue)) { + warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\"")); + } + + setInputLabel(input, input, params); + setInputPlaceholder(input, params); + input.type = params.input; + return input; + }; + + renderInputType.file = (input, params) => { + setInputLabel(input, input, params); + setInputPlaceholder(input, params); + return input; + }; + + renderInputType.range = (range, params) => { + const rangeInput = range.querySelector('input'); + const rangeOutput = range.querySelector('output'); + rangeInput.value = params.inputValue; + rangeInput.type = params.input; + rangeOutput.value = params.inputValue; + setInputLabel(rangeInput, range, params); + return range; + }; + + renderInputType.select = (select, params) => { + select.textContent = ''; + + if (params.inputPlaceholder) { + const placeholder = document.createElement('option'); + setInnerHtml(placeholder, params.inputPlaceholder); + placeholder.value = ''; + placeholder.disabled = true; + placeholder.selected = true; + select.appendChild(placeholder); + } + + setInputLabel(select, select, params); + return select; + }; + + renderInputType.radio = radio => { + radio.textContent = ''; + return radio; + }; + + renderInputType.checkbox = (checkboxContainer, params) => { + const checkbox = getInput(getPopup(), 'checkbox'); + checkbox.value = 1; + checkbox.id = swalClasses.checkbox; + checkbox.checked = Boolean(params.inputValue); + const label = checkboxContainer.querySelector('span'); + setInnerHtml(label, params.inputPlaceholder); + return checkboxContainer; + }; + + renderInputType.textarea = (textarea, params) => { + textarea.value = params.inputValue; + setInputPlaceholder(textarea, params); + setInputLabel(textarea, textarea, params); + + const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); + + setTimeout(() => { + // #2291 + if ('MutationObserver' in window) { + // #1699 + const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); + + const textareaResizeHandler = () => { + const textareaWidth = textarea.offsetWidth + getMargin(textarea); + + if (textareaWidth > initialPopupWidth) { + getPopup().style.width = "".concat(textareaWidth, "px"); + } else { + getPopup().style.width = null; + } + }; + + new MutationObserver(textareaResizeHandler).observe(textarea, { + attributes: true, + attributeFilter: ['style'] + }); + } + }); + return textarea; + }; + + const renderContent = (instance, params) => { + const htmlContainer = getHtmlContainer(); + applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML + + if (params.html) { + parseHtmlToContainer(params.html, htmlContainer); + show(htmlContainer, 'block'); // Content as plain text + } else if (params.text) { + htmlContainer.textContent = params.text; + show(htmlContainer, 'block'); // No content + } else { + hide(htmlContainer); + } + + renderInput(instance, params); + }; + + const renderFooter = (instance, params) => { + const footer = getFooter(); + toggle(footer, params.footer); + + if (params.footer) { + parseHtmlToContainer(params.footer, footer); + } // Custom class + + + applyCustomClass(footer, params, 'footer'); + }; + + const renderCloseButton = (instance, params) => { + const closeButton = getCloseButton(); + setInnerHtml(closeButton, params.closeButtonHtml); // Custom class + + applyCustomClass(closeButton, params, 'closeButton'); + toggle(closeButton, params.showCloseButton); + closeButton.setAttribute('aria-label', params.closeButtonAriaLabel); + }; + + const renderIcon = (instance, params) => { + const innerParams = privateProps.innerParams.get(instance); + const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon + + if (innerParams && params.icon === innerParams.icon) { + // Custom or default content + setContent(icon, params); + applyStyles(icon, params); + return; + } + + if (!params.icon && !params.iconHtml) { + return hide(icon); + } + + if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) { + error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\"")); + return hide(icon); + } + + show(icon); // Custom or default content + + setContent(icon, params); + applyStyles(icon, params); // Animate icon + + addClass(icon, params.showClass.icon); + }; + + const applyStyles = (icon, params) => { + for (const iconType in iconTypes) { + if (params.icon !== iconType) { + removeClass(icon, iconTypes[iconType]); + } + } + + addClass(icon, iconTypes[params.icon]); // Icon color + + setColor(icon, params); // Success icon background color + + adjustSuccessIconBackgoundColor(); // Custom class + + applyCustomClass(icon, params, 'icon'); + }; // Adjust success icon background color to match the popup background color + + + const adjustSuccessIconBackgoundColor = () => { + const popup = getPopup(); + const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); + const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); + + for (let i = 0; i < successIconParts.length; i++) { + successIconParts[i].style.backgroundColor = popupBackgroundColor; + } + }; + + const setContent = (icon, params) => { + icon.textContent = ''; + + if (params.iconHtml) { + setInnerHtml(icon, iconContent(params.iconHtml)); + } else if (params.icon === 'success') { + setInnerHtml(icon, "\n
                \n \n
                \n
                \n "); + } else if (params.icon === 'error') { + setInnerHtml(icon, "\n \n \n \n \n "); + } else { + const defaultIconHtml = { + question: '?', + warning: '!', + info: 'i' + }; + setInnerHtml(icon, iconContent(defaultIconHtml[params.icon])); + } + }; + + const setColor = (icon, params) => { + if (!params.iconColor) { + return; + } + + icon.style.color = params.iconColor; + icon.style.borderColor = params.iconColor; + + for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) { + setStyle(icon, sel, 'backgroundColor', params.iconColor); + } + + setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor); + }; + + const iconContent = content => "
                ").concat(content, "
                "); + + const renderImage = (instance, params) => { + const image = getImage(); + + if (!params.imageUrl) { + return hide(image); + } + + show(image, ''); // Src, alt + + image.setAttribute('src', params.imageUrl); + image.setAttribute('alt', params.imageAlt); // Width, height + + applyNumericalStyle(image, 'width', params.imageWidth); + applyNumericalStyle(image, 'height', params.imageHeight); // Class + + image.className = swalClasses.image; + applyCustomClass(image, params, 'image'); + }; + + const createStepElement = step => { + const stepEl = document.createElement('li'); + addClass(stepEl, swalClasses['progress-step']); + setInnerHtml(stepEl, step); + return stepEl; + }; + + const createLineElement = params => { + const lineEl = document.createElement('li'); + addClass(lineEl, swalClasses['progress-step-line']); + + if (params.progressStepsDistance) { + lineEl.style.width = params.progressStepsDistance; + } + + return lineEl; + }; + + const renderProgressSteps = (instance, params) => { + const progressStepsContainer = getProgressSteps(); + + if (!params.progressSteps || params.progressSteps.length === 0) { + return hide(progressStepsContainer); + } + + show(progressStepsContainer); + progressStepsContainer.textContent = ''; + + if (params.currentProgressStep >= params.progressSteps.length) { + warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); + } + + params.progressSteps.forEach((step, index) => { + const stepEl = createStepElement(step); + progressStepsContainer.appendChild(stepEl); + + if (index === params.currentProgressStep) { + addClass(stepEl, swalClasses['active-progress-step']); + } + + if (index !== params.progressSteps.length - 1) { + const lineEl = createLineElement(params); + progressStepsContainer.appendChild(lineEl); + } + }); + }; + + const renderTitle = (instance, params) => { + const title = getTitle(); + toggle(title, params.title || params.titleText, 'block'); + + if (params.title) { + parseHtmlToContainer(params.title, title); + } + + if (params.titleText) { + title.innerText = params.titleText; + } // Custom class + + + applyCustomClass(title, params, 'title'); + }; + + const renderPopup = (instance, params) => { + const container = getContainer(); + const popup = getPopup(); // Width + + if (params.toast) { + // #2170 + applyNumericalStyle(container, 'width', params.width); + popup.style.width = '100%'; + popup.insertBefore(getLoader(), getIcon()); + } else { + applyNumericalStyle(popup, 'width', params.width); + } // Padding + + + applyNumericalStyle(popup, 'padding', params.padding); // Background + + if (params.background) { + popup.style.background = params.background; + } + + hide(getValidationMessage()); // Classes + + addClasses(popup, params); + }; + + const addClasses = (popup, params) => { + // Default Class + showClass when updating Swal.update({}) + popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : ''); + + if (params.toast) { + addClass([document.documentElement, document.body], swalClasses['toast-shown']); + addClass(popup, swalClasses.toast); + } else { + addClass(popup, swalClasses.modal); + } // Custom class + + + applyCustomClass(popup, params, 'popup'); + + if (typeof params.customClass === 'string') { + addClass(popup, params.customClass); + } // Icon class (#1842) + + + if (params.icon) { + addClass(popup, swalClasses["icon-".concat(params.icon)]); + } + }; + + const render = (instance, params) => { + renderPopup(instance, params); + renderContainer(instance, params); + renderProgressSteps(instance, params); + renderIcon(instance, params); + renderImage(instance, params); + renderTitle(instance, params); + renderCloseButton(instance, params); + renderContent(instance, params); + renderActions(instance, params); + renderFooter(instance, params); + + if (typeof params.didRender === 'function') { + params.didRender(getPopup()); + } + }; + + /* + * Global function to determine if SweetAlert2 popup is shown + */ + + const isVisible$1 = () => { + return isVisible(getPopup()); + }; + /* + * Global function to click 'Confirm' button + */ + + const clickConfirm = () => getConfirmButton() && getConfirmButton().click(); + /* + * Global function to click 'Deny' button + */ + + const clickDeny = () => getDenyButton() && getDenyButton().click(); + /* + * Global function to click 'Cancel' button + */ + + const clickCancel = () => getCancelButton() && getCancelButton().click(); + + function fire(...args) { + const Swal = this; + return new Swal(...args); + } + + /** + * Returns an extended version of `Swal` containing `params` as defaults. + * Useful for reusing Swal configuration. + * + * For example: + * + * Before: + * const textPromptOptions = { input: 'text', showCancelButton: true } + * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' }) + * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' }) + * + * After: + * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true }) + * const {value: firstName} = await TextPrompt('What is your first name?') + * const {value: lastName} = await TextPrompt('What is your last name?') + * + * @param mixinParams + */ + function mixin(mixinParams) { + class MixinSwal extends this { + _main(params, priorityMixinParams) { + return super._main(params, Object.assign({}, mixinParams, priorityMixinParams)); + } + + } + + return MixinSwal; + } + + /** + * Shows loader (spinner), this is useful with AJAX requests. + * By default the loader be shown instead of the "Confirm" button. + */ + + const showLoading = buttonToReplace => { + let popup = getPopup(); + + if (!popup) { + Swal.fire(); + } + + popup = getPopup(); + const loader = getLoader(); + + if (isToast()) { + hide(getIcon()); + } else { + replaceButton(popup, buttonToReplace); + } + + show(loader); + popup.setAttribute('data-loading', true); + popup.setAttribute('aria-busy', true); + popup.focus(); + }; + + const replaceButton = (popup, buttonToReplace) => { + const actions = getActions(); + const loader = getLoader(); + + if (!buttonToReplace && isVisible(getConfirmButton())) { + buttonToReplace = getConfirmButton(); + } + + show(actions); + + if (buttonToReplace) { + hide(buttonToReplace); + loader.setAttribute('data-button-to-replace', buttonToReplace.className); + } + + loader.parentNode.insertBefore(loader, buttonToReplace); + addClass([popup, actions], swalClasses.loading); + }; + + const RESTORE_FOCUS_TIMEOUT = 100; + + const globalState = {}; + + const focusPreviousActiveElement = () => { + if (globalState.previousActiveElement && globalState.previousActiveElement.focus) { + globalState.previousActiveElement.focus(); + globalState.previousActiveElement = null; + } else if (document.body) { + document.body.focus(); + } + }; // Restore previous active (focused) element + + + const restoreActiveElement = returnFocus => { + return new Promise(resolve => { + if (!returnFocus) { + return resolve(); + } + + const x = window.scrollX; + const y = window.scrollY; + globalState.restoreFocusTimeout = setTimeout(() => { + focusPreviousActiveElement(); + resolve(); + }, RESTORE_FOCUS_TIMEOUT); // issues/900 + + window.scrollTo(x, y); + }); + }; + + /** + * If `timer` parameter is set, returns number of milliseconds of timer remained. + * Otherwise, returns undefined. + */ + + const getTimerLeft = () => { + return globalState.timeout && globalState.timeout.getTimerLeft(); + }; + /** + * Stop timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const stopTimer = () => { + if (globalState.timeout) { + stopTimerProgressBar(); + return globalState.timeout.stop(); + } + }; + /** + * Resume timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const resumeTimer = () => { + if (globalState.timeout) { + const remaining = globalState.timeout.start(); + animateTimerProgressBar(remaining); + return remaining; + } + }; + /** + * Resume timer. Returns number of milliseconds of timer remained. + * If `timer` parameter isn't set, returns undefined. + */ + + const toggleTimer = () => { + const timer = globalState.timeout; + return timer && (timer.running ? stopTimer() : resumeTimer()); + }; + /** + * Increase timer. Returns number of milliseconds of an updated timer. + * If `timer` parameter isn't set, returns undefined. + */ + + const increaseTimer = n => { + if (globalState.timeout) { + const remaining = globalState.timeout.increase(n); + animateTimerProgressBar(remaining, true); + return remaining; + } + }; + /** + * Check if timer is running. Returns true if timer is running + * or false if timer is paused or stopped. + * If `timer` parameter isn't set, returns undefined + */ + + const isTimerRunning = () => { + return globalState.timeout && globalState.timeout.isRunning(); + }; + + let bodyClickListenerAdded = false; + const clickHandlers = {}; + function bindClickHandler(attr = 'data-swal-template') { + clickHandlers[attr] = this; + + if (!bodyClickListenerAdded) { + document.body.addEventListener('click', bodyClickListener); + bodyClickListenerAdded = true; + } + } + + const bodyClickListener = event => { + for (let el = event.target; el && el !== document; el = el.parentNode) { + for (const attr in clickHandlers) { + const template = el.getAttribute(attr); + + if (template) { + clickHandlers[attr].fire({ + template + }); + return; + } + } + } + }; + + const defaultParams = { + title: '', + titleText: '', + text: '', + html: '', + footer: '', + icon: undefined, + iconColor: undefined, + iconHtml: undefined, + template: undefined, + toast: false, + showClass: { + popup: 'swal2-show', + backdrop: 'swal2-backdrop-show', + icon: 'swal2-icon-show' + }, + hideClass: { + popup: 'swal2-hide', + backdrop: 'swal2-backdrop-hide', + icon: 'swal2-icon-hide' + }, + customClass: {}, + target: 'body', + backdrop: true, + heightAuto: true, + allowOutsideClick: true, + allowEscapeKey: true, + allowEnterKey: true, + stopKeydownPropagation: true, + keydownListenerCapture: false, + showConfirmButton: true, + showDenyButton: false, + showCancelButton: false, + preConfirm: undefined, + preDeny: undefined, + confirmButtonText: 'OK', + confirmButtonAriaLabel: '', + confirmButtonColor: undefined, + denyButtonText: 'No', + denyButtonAriaLabel: '', + denyButtonColor: undefined, + cancelButtonText: 'Cancel', + cancelButtonAriaLabel: '', + cancelButtonColor: undefined, + buttonsStyling: true, + reverseButtons: false, + focusConfirm: true, + focusDeny: false, + focusCancel: false, + returnFocus: true, + showCloseButton: false, + closeButtonHtml: '×', + closeButtonAriaLabel: 'Close this dialog', + loaderHtml: '', + showLoaderOnConfirm: false, + showLoaderOnDeny: false, + imageUrl: undefined, + imageWidth: undefined, + imageHeight: undefined, + imageAlt: '', + timer: undefined, + timerProgressBar: false, + width: undefined, + padding: undefined, + background: undefined, + input: undefined, + inputPlaceholder: '', + inputLabel: '', + inputValue: '', + inputOptions: {}, + inputAutoTrim: true, + inputAttributes: {}, + inputValidator: undefined, + returnInputValueOnDeny: false, + validationMessage: undefined, + grow: false, + position: 'center', + progressSteps: [], + currentProgressStep: undefined, + progressStepsDistance: undefined, + willOpen: undefined, + didOpen: undefined, + didRender: undefined, + willClose: undefined, + didClose: undefined, + didDestroy: undefined, + scrollbarPadding: true + }; + const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose']; + const deprecatedParams = {}; + const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture']; + /** + * Is valid parameter + * @param {String} paramName + */ + + const isValidParameter = paramName => { + return Object.prototype.hasOwnProperty.call(defaultParams, paramName); + }; + /** + * Is valid parameter for Swal.update() method + * @param {String} paramName + */ + + const isUpdatableParameter = paramName => { + return updatableParams.indexOf(paramName) !== -1; + }; + /** + * Is deprecated parameter + * @param {String} paramName + */ + + const isDeprecatedParameter = paramName => { + return deprecatedParams[paramName]; + }; + + const checkIfParamIsValid = param => { + if (!isValidParameter(param)) { + warn("Unknown parameter \"".concat(param, "\"")); + } + }; + + const checkIfToastParamIsValid = param => { + if (toastIncompatibleParams.includes(param)) { + warn("The parameter \"".concat(param, "\" is incompatible with toasts")); + } + }; + + const checkIfParamIsDeprecated = param => { + if (isDeprecatedParameter(param)) { + warnAboutDeprecation(param, isDeprecatedParameter(param)); + } + }; + /** + * Show relevant warnings for given params + * + * @param params + */ + + + const showWarningsForParams = params => { + if (!params.backdrop && params.allowOutsideClick) { + warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); + } + + for (const param in params) { + checkIfParamIsValid(param); + + if (params.toast) { + checkIfToastParamIsValid(param); + } + + checkIfParamIsDeprecated(param); + } + }; + + + + var staticMethods = /*#__PURE__*/Object.freeze({ + isValidParameter: isValidParameter, + isUpdatableParameter: isUpdatableParameter, + isDeprecatedParameter: isDeprecatedParameter, + argsToParams: argsToParams, + isVisible: isVisible$1, + clickConfirm: clickConfirm, + clickDeny: clickDeny, + clickCancel: clickCancel, + getContainer: getContainer, + getPopup: getPopup, + getTitle: getTitle, + getHtmlContainer: getHtmlContainer, + getImage: getImage, + getIcon: getIcon, + getInputLabel: getInputLabel, + getCloseButton: getCloseButton, + getActions: getActions, + getConfirmButton: getConfirmButton, + getDenyButton: getDenyButton, + getCancelButton: getCancelButton, + getLoader: getLoader, + getFooter: getFooter, + getTimerProgressBar: getTimerProgressBar, + getFocusableElements: getFocusableElements, + getValidationMessage: getValidationMessage, + isLoading: isLoading, + fire: fire, + mixin: mixin, + showLoading: showLoading, + enableLoading: showLoading, + getTimerLeft: getTimerLeft, + stopTimer: stopTimer, + resumeTimer: resumeTimer, + toggleTimer: toggleTimer, + increaseTimer: increaseTimer, + isTimerRunning: isTimerRunning, + bindClickHandler: bindClickHandler + }); + + /** + * Hides loader and shows back the button which was hidden by .showLoading() + */ + + function hideLoading() { + // do nothing if popup is closed + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams) { + return; + } + + const domCache = privateProps.domCache.get(this); + hide(domCache.loader); + + if (isToast()) { + if (innerParams.icon) { + show(getIcon()); + } + } else { + showRelatedButton(domCache); + } + + removeClass([domCache.popup, domCache.actions], swalClasses.loading); + domCache.popup.removeAttribute('aria-busy'); + domCache.popup.removeAttribute('data-loading'); + domCache.confirmButton.disabled = false; + domCache.denyButton.disabled = false; + domCache.cancelButton.disabled = false; + } + + const showRelatedButton = domCache => { + const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace')); + + if (buttonToReplace.length) { + show(buttonToReplace[0], 'inline-block'); + } else if (allButtonsAreHidden()) { + hide(domCache.actions); + } + }; + + function getInput$1(instance) { + const innerParams = privateProps.innerParams.get(instance || this); + const domCache = privateProps.domCache.get(instance || this); + + if (!domCache) { + return null; + } + + return getInput(domCache.popup, innerParams.input); + } + + const fixScrollbar = () => { + // for queues, do not do this more than once + if (states.previousBodyPadding !== null) { + return; + } // if the body has overflow + + + if (document.body.scrollHeight > window.innerHeight) { + // add padding so the content doesn't shift after removal of scrollbar + states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right')); + document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px"); + } + }; + const undoScrollbar = () => { + if (states.previousBodyPadding !== null) { + document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px"); + states.previousBodyPadding = null; + } + }; + + /* istanbul ignore file */ + + const iOSfix = () => { + const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1; + + if (iOS && !hasClass(document.body, swalClasses.iosfix)) { + const offset = document.body.scrollTop; + document.body.style.top = "".concat(offset * -1, "px"); + addClass(document.body, swalClasses.iosfix); + lockBodyScroll(); + addBottomPaddingForTallPopups(); // #1948 + } + }; + + const addBottomPaddingForTallPopups = () => { + const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i); + + if (safari) { + const bottomPanelHeight = 44; + + if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) { + getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px"); + } + } + }; + + const lockBodyScroll = () => { + // #1246 + const container = getContainer(); + let preventTouchMove; + + container.ontouchstart = e => { + preventTouchMove = shouldPreventTouchMove(e); + }; + + container.ontouchmove = e => { + if (preventTouchMove) { + e.preventDefault(); + e.stopPropagation(); + } + }; + }; + + const shouldPreventTouchMove = event => { + const target = event.target; + const container = getContainer(); + + if (isStylys(event) || isZoom(event)) { + return false; + } + + if (target === container) { + return true; + } + + if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603 + target.tagName !== 'TEXTAREA' && // #2266 + !(isScrollable(getHtmlContainer()) && // #1944 + getHtmlContainer().contains(target))) { + return true; + } + + return false; + }; + + const isStylys = event => { + // #1786 + return event.touches && event.touches.length && event.touches[0].touchType === 'stylus'; + }; + + const isZoom = event => { + // #1891 + return event.touches && event.touches.length > 1; + }; + + const undoIOSfix = () => { + if (hasClass(document.body, swalClasses.iosfix)) { + const offset = parseInt(document.body.style.top, 10); + removeClass(document.body, swalClasses.iosfix); + document.body.style.top = ''; + document.body.scrollTop = offset * -1; + } + }; + + // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that + // elements not within the active modal dialog will not be surfaced if a user opens a screen + // reader’s list of elements (headings, form controls, landmarks, etc.) in the document. + + const setAriaHidden = () => { + const bodyChildren = toArray(document.body.children); + bodyChildren.forEach(el => { + if (el === getContainer() || el.contains(getContainer())) { + return; + } + + if (el.hasAttribute('aria-hidden')) { + el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden')); + } + + el.setAttribute('aria-hidden', 'true'); + }); + }; + const unsetAriaHidden = () => { + const bodyChildren = toArray(document.body.children); + bodyChildren.forEach(el => { + if (el.hasAttribute('data-previous-aria-hidden')) { + el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden')); + el.removeAttribute('data-previous-aria-hidden'); + } else { + el.removeAttribute('aria-hidden'); + } + }); + }; + + /** + * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. + * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` + * This is the approach that Babel will probably take to implement private methods/fields + * https://github.com/tc39/proposal-private-methods + * https://github.com/babel/babel/pull/7555 + * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* + * then we can use that language feature. + */ + var privateMethods = { + swalPromiseResolve: new WeakMap() + }; + + /* + * Instance method to close sweetAlert + */ + + function removePopupAndResetState(instance, container, returnFocus, didClose) { + if (isToast()) { + triggerDidCloseAndDispose(instance, didClose); + } else { + restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose)); + globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = false; + } + + const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088 + // for some reason removing the container in Safari will scroll the document to bottom + + if (isSafari) { + container.setAttribute('style', 'display:none !important'); + container.removeAttribute('class'); + container.innerHTML = ''; + } else { + container.remove(); + } + + if (isModal()) { + undoScrollbar(); + undoIOSfix(); + unsetAriaHidden(); + } + + removeBodyClasses(); + } + + function removeBodyClasses() { + removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]); + } + + function close(resolveValue) { + const popup = getPopup(); + + if (!popup) { + return; + } + + resolveValue = prepareResolveValue(resolveValue); + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) { + return; + } + + const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); + removeClass(popup, innerParams.showClass.popup); + addClass(popup, innerParams.hideClass.popup); + const backdrop = getContainer(); + removeClass(backdrop, innerParams.showClass.backdrop); + addClass(backdrop, innerParams.hideClass.backdrop); + handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise + + swalPromiseResolve(resolveValue); + } + + const prepareResolveValue = resolveValue => { + // When user calls Swal.close() + if (typeof resolveValue === 'undefined') { + return { + isConfirmed: false, + isDenied: false, + isDismissed: true + }; + } + + return Object.assign({ + isConfirmed: false, + isDenied: false, + isDismissed: false + }, resolveValue); + }; + + const handlePopupAnimation = (instance, popup, innerParams) => { + const container = getContainer(); // If animation is supported, animate + + const animationIsSupported = animationEndEvent && hasCssAnimation(popup); + + if (typeof innerParams.willClose === 'function') { + innerParams.willClose(popup); + } + + if (animationIsSupported) { + animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose); + } else { + // Otherwise, remove immediately + removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose); + } + }; + + const animatePopup = (instance, popup, container, returnFocus, didClose) => { + globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose); + popup.addEventListener(animationEndEvent, function (e) { + if (e.target === popup) { + globalState.swalCloseEventFinishedCallback(); + delete globalState.swalCloseEventFinishedCallback; + } + }); + }; + + const triggerDidCloseAndDispose = (instance, didClose) => { + setTimeout(() => { + if (typeof didClose === 'function') { + didClose.bind(instance.params)(); + } + + instance._destroy(); + }); + }; + + function setButtonsDisabled(instance, buttons, disabled) { + const domCache = privateProps.domCache.get(instance); + buttons.forEach(button => { + domCache[button].disabled = disabled; + }); + } + + function setInputDisabled(input, disabled) { + if (!input) { + return false; + } + + if (input.type === 'radio') { + const radiosContainer = input.parentNode.parentNode; + const radios = radiosContainer.querySelectorAll('input'); + + for (let i = 0; i < radios.length; i++) { + radios[i].disabled = disabled; + } + } else { + input.disabled = disabled; + } + } + + function enableButtons() { + setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false); + } + function disableButtons() { + setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true); + } + function enableInput() { + return setInputDisabled(this.getInput(), false); + } + function disableInput() { + return setInputDisabled(this.getInput(), true); + } + + function showValidationMessage(error) { + const domCache = privateProps.domCache.get(this); + const params = privateProps.innerParams.get(this); + setInnerHtml(domCache.validationMessage, error); + domCache.validationMessage.className = swalClasses['validation-message']; + + if (params.customClass && params.customClass.validationMessage) { + addClass(domCache.validationMessage, params.customClass.validationMessage); + } + + show(domCache.validationMessage); + const input = this.getInput(); + + if (input) { + input.setAttribute('aria-invalid', true); + input.setAttribute('aria-describedby', swalClasses['validation-message']); + focusInput(input); + addClass(input, swalClasses.inputerror); + } + } // Hide block with validation message + + function resetValidationMessage$1() { + const domCache = privateProps.domCache.get(this); + + if (domCache.validationMessage) { + hide(domCache.validationMessage); + } + + const input = this.getInput(); + + if (input) { + input.removeAttribute('aria-invalid'); + input.removeAttribute('aria-describedby'); + removeClass(input, swalClasses.inputerror); + } + } + + function getProgressSteps$1() { + const domCache = privateProps.domCache.get(this); + return domCache.progressSteps; + } + + class Timer { + constructor(callback, delay) { + this.callback = callback; + this.remaining = delay; + this.running = false; + this.start(); + } + + start() { + if (!this.running) { + this.running = true; + this.started = new Date(); + this.id = setTimeout(this.callback, this.remaining); + } + + return this.remaining; + } + + stop() { + if (this.running) { + this.running = false; + clearTimeout(this.id); + this.remaining -= new Date() - this.started; + } + + return this.remaining; + } + + increase(n) { + const running = this.running; + + if (running) { + this.stop(); + } + + this.remaining += n; + + if (running) { + this.start(); + } + + return this.remaining; + } + + getTimerLeft() { + if (this.running) { + this.stop(); + this.start(); + } + + return this.remaining; + } + + isRunning() { + return this.running; + } + + } + + var defaultInputValidators = { + email: (string, validationMessage) => { + return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address'); + }, + url: (string, validationMessage) => { + // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013 + return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL'); + } + }; + + function setDefaultInputValidators(params) { + // Use default `inputValidator` for supported input types if not provided + if (!params.inputValidator) { + Object.keys(defaultInputValidators).forEach(key => { + if (params.input === key) { + params.inputValidator = defaultInputValidators[key]; + } + }); + } + } + + function validateCustomTargetElement(params) { + // Determine if the custom target element is valid + if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) { + warn('Target parameter is not valid, defaulting to "body"'); + params.target = 'body'; + } + } + /** + * Set type, text and actions on popup + * + * @param params + * @returns {boolean} + */ + + + function setParameters(params) { + setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm + + if (params.showLoaderOnConfirm && !params.preConfirm) { + warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request'); + } + + validateCustomTargetElement(params); // Replace newlines with
                in title + + if (typeof params.title === 'string') { + params.title = params.title.split('\n').join('
                '); + } + + init(params); + } + + const swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; + const getTemplateParams = params => { + const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template; + + if (!template) { + return {}; + } + + const templateContent = template.content; + showWarningsForElements(templateContent); + const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); + return result; + }; + + const getSwalParams = templateContent => { + const result = {}; + toArray(templateContent.querySelectorAll('swal-param')).forEach(param => { + showWarningsForAttributes(param, ['name', 'value']); + const paramName = param.getAttribute('name'); + let value = param.getAttribute('value'); + + if (typeof defaultParams[paramName] === 'boolean' && value === 'false') { + value = false; + } + + if (typeof defaultParams[paramName] === 'object') { + value = JSON.parse(value); + } + + result[paramName] = value; + }); + return result; + }; + + const getSwalButtons = templateContent => { + const result = {}; + toArray(templateContent.querySelectorAll('swal-button')).forEach(button => { + showWarningsForAttributes(button, ['type', 'color', 'aria-label']); + const type = button.getAttribute('type'); + result["".concat(type, "ButtonText")] = button.innerHTML; + result["show".concat(capitalizeFirstLetter(type), "Button")] = true; + + if (button.hasAttribute('color')) { + result["".concat(type, "ButtonColor")] = button.getAttribute('color'); + } + + if (button.hasAttribute('aria-label')) { + result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label'); + } + }); + return result; + }; + + const getSwalImage = templateContent => { + const result = {}; + const image = templateContent.querySelector('swal-image'); + + if (image) { + showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']); + + if (image.hasAttribute('src')) { + result.imageUrl = image.getAttribute('src'); + } + + if (image.hasAttribute('width')) { + result.imageWidth = image.getAttribute('width'); + } + + if (image.hasAttribute('height')) { + result.imageHeight = image.getAttribute('height'); + } + + if (image.hasAttribute('alt')) { + result.imageAlt = image.getAttribute('alt'); + } + } + + return result; + }; + + const getSwalIcon = templateContent => { + const result = {}; + const icon = templateContent.querySelector('swal-icon'); + + if (icon) { + showWarningsForAttributes(icon, ['type', 'color']); + + if (icon.hasAttribute('type')) { + result.icon = icon.getAttribute('type'); + } + + if (icon.hasAttribute('color')) { + result.iconColor = icon.getAttribute('color'); + } + + result.iconHtml = icon.innerHTML; + } + + return result; + }; + + const getSwalInput = templateContent => { + const result = {}; + const input = templateContent.querySelector('swal-input'); + + if (input) { + showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']); + result.input = input.getAttribute('type') || 'text'; + + if (input.hasAttribute('label')) { + result.inputLabel = input.getAttribute('label'); + } + + if (input.hasAttribute('placeholder')) { + result.inputPlaceholder = input.getAttribute('placeholder'); + } + + if (input.hasAttribute('value')) { + result.inputValue = input.getAttribute('value'); + } + } + + const inputOptions = templateContent.querySelectorAll('swal-input-option'); + + if (inputOptions.length) { + result.inputOptions = {}; + toArray(inputOptions).forEach(option => { + showWarningsForAttributes(option, ['value']); + const optionValue = option.getAttribute('value'); + const optionName = option.innerHTML; + result.inputOptions[optionValue] = optionName; + }); + } + + return result; + }; + + const getSwalStringParams = (templateContent, paramNames) => { + const result = {}; + + for (const i in paramNames) { + const paramName = paramNames[i]; + const tag = templateContent.querySelector(paramName); + + if (tag) { + showWarningsForAttributes(tag, []); + result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim(); + } + } + + return result; + }; + + const showWarningsForElements = template => { + const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); + toArray(template.children).forEach(el => { + const tagName = el.tagName.toLowerCase(); + + if (allowedElements.indexOf(tagName) === -1) { + warn("Unrecognized element <".concat(tagName, ">")); + } + }); + }; + + const showWarningsForAttributes = (el, allowedAttributes) => { + toArray(el.attributes).forEach(attribute => { + if (allowedAttributes.indexOf(attribute.name) === -1) { + warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]); + } + }); + }; + + const SHOW_CLASS_TIMEOUT = 10; + /** + * Open popup, add necessary classes and styles, fix scrollbar + * + * @param params + */ + + const openPopup = params => { + const container = getContainer(); + const popup = getPopup(); + + if (typeof params.willOpen === 'function') { + params.willOpen(popup); + } + + const bodyStyles = window.getComputedStyle(document.body); + const initialBodyOverflow = bodyStyles.overflowY; + addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto' + + setTimeout(() => { + setScrollingVisibility(container, popup); + }, SHOW_CLASS_TIMEOUT); + + if (isModal()) { + fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow); + setAriaHidden(); + } + + if (!isToast() && !globalState.previousActiveElement) { + globalState.previousActiveElement = document.activeElement; + } + + if (typeof params.didOpen === 'function') { + setTimeout(() => params.didOpen(popup)); + } + + removeClass(container, swalClasses['no-transition']); + }; + + const swalOpenAnimationFinished = event => { + const popup = getPopup(); + + if (event.target !== popup) { + return; + } + + const container = getContainer(); + popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished); + container.style.overflowY = 'auto'; + }; + + const setScrollingVisibility = (container, popup) => { + if (animationEndEvent && hasCssAnimation(popup)) { + container.style.overflowY = 'hidden'; + popup.addEventListener(animationEndEvent, swalOpenAnimationFinished); + } else { + container.style.overflowY = 'auto'; + } + }; + + const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => { + iOSfix(); + + if (scrollbarPadding && initialBodyOverflow !== 'hidden') { + fixScrollbar(); + } // sweetalert2/issues/1247 + + + setTimeout(() => { + container.scrollTop = 0; + }); + }; + + const addClasses$1 = (container, popup, params) => { + addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059 + + popup.style.setProperty('opacity', '0', 'important'); + show(popup, 'grid'); + setTimeout(() => { + // Animate popup right after showing it + addClass(popup, params.showClass.popup); // and remove the opacity workaround + + popup.style.removeProperty('opacity'); + }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062 + + addClass([document.documentElement, document.body], swalClasses.shown); + + if (params.heightAuto && params.backdrop && !params.toast) { + addClass([document.documentElement, document.body], swalClasses['height-auto']); + } + }; + + const handleInputOptionsAndValue = (instance, params) => { + if (params.input === 'select' || params.input === 'radio') { + handleInputOptions(instance, params); + } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { + showLoading(getConfirmButton()); + handleInputValue(instance, params); + } + }; + const getInputValue = (instance, innerParams) => { + const input = instance.getInput(); + + if (!input) { + return null; + } + + switch (innerParams.input) { + case 'checkbox': + return getCheckboxValue(input); + + case 'radio': + return getRadioValue(input); + + case 'file': + return getFileValue(input); + + default: + return innerParams.inputAutoTrim ? input.value.trim() : input.value; + } + }; + + const getCheckboxValue = input => input.checked ? 1 : 0; + + const getRadioValue = input => input.checked ? input.value : null; + + const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; + + const handleInputOptions = (instance, params) => { + const popup = getPopup(); + + const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params); + + if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) { + showLoading(getConfirmButton()); + asPromise(params.inputOptions).then(inputOptions => { + instance.hideLoading(); + processInputOptions(inputOptions); + }); + } else if (typeof params.inputOptions === 'object') { + processInputOptions(params.inputOptions); + } else { + error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions)); + } + }; + + const handleInputValue = (instance, params) => { + const input = instance.getInput(); + hide(input); + asPromise(params.inputValue).then(inputValue => { + input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue); + show(input); + input.focus(); + instance.hideLoading(); + }).catch(err => { + error("Error in inputValue promise: ".concat(err)); + input.value = ''; + show(input); + input.focus(); + instance.hideLoading(); + }); + }; + + const populateInputOptions = { + select: (popup, inputOptions, params) => { + const select = getChildByClass(popup, swalClasses.select); + + const renderOption = (parent, optionLabel, optionValue) => { + const option = document.createElement('option'); + option.value = optionValue; + setInnerHtml(option, optionLabel); + option.selected = isSelected(optionValue, params.inputValue); + parent.appendChild(option); + }; + + inputOptions.forEach(inputOption => { + const optionValue = inputOption[0]; + const optionLabel = inputOption[1]; // spec: + // https://www.w3.org/TR/html401/interact/forms.html#h-17.6 + // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..." + // check whether this is a + + if (Array.isArray(optionLabel)) { + // if it is an array, then it is an + const optgroup = document.createElement('optgroup'); + optgroup.label = optionValue; + optgroup.disabled = false; // not configurable for now + + select.appendChild(optgroup); + optionLabel.forEach(o => renderOption(optgroup, o[1], o[0])); + } else { + // case of + valueFormatted = formatInputOptions(valueFormatted); + } + + result.push([key, valueFormatted]); + }); + } else { + Object.keys(inputOptions).forEach(key => { + let valueFormatted = inputOptions[key]; + + if (typeof valueFormatted === 'object') { + // case of + valueFormatted = formatInputOptions(valueFormatted); + } + + result.push([key, valueFormatted]); + }); + } + + return result; + }; + + const isSelected = (optionValue, inputValue) => { + return inputValue && inputValue.toString() === optionValue.toString(); + }; + + const handleConfirmButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableButtons(); + + if (innerParams.input) { + handleConfirmOrDenyWithInput(instance, 'confirm'); + } else { + confirm(instance, true); + } + }; + const handleDenyButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableButtons(); + + if (innerParams.returnInputValueOnDeny) { + handleConfirmOrDenyWithInput(instance, 'deny'); + } else { + deny(instance, false); + } + }; + const handleCancelButtonClick = (instance, dismissWith) => { + instance.disableButtons(); + dismissWith(DismissReason.cancel); + }; + + const handleConfirmOrDenyWithInput = (instance, type + /* 'confirm' | 'deny' */ + ) => { + const innerParams = privateProps.innerParams.get(instance); + const inputValue = getInputValue(instance, innerParams); + + if (innerParams.inputValidator) { + handleInputValidator(instance, inputValue, type); + } else if (!instance.getInput().checkValidity()) { + instance.enableButtons(); + instance.showValidationMessage(innerParams.validationMessage); + } else if (type === 'deny') { + deny(instance, inputValue); + } else { + confirm(instance, inputValue); + } + }; + + const handleInputValidator = (instance, inputValue, type + /* 'confirm' | 'deny' */ + ) => { + const innerParams = privateProps.innerParams.get(instance); + instance.disableInput(); + const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage))); + validationPromise.then(validationMessage => { + instance.enableButtons(); + instance.enableInput(); + + if (validationMessage) { + instance.showValidationMessage(validationMessage); + } else if (type === 'deny') { + deny(instance, inputValue); + } else { + confirm(instance, inputValue); + } + }); + }; + + const deny = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); + + if (innerParams.showLoaderOnDeny) { + showLoading(getDenyButton()); + } + + if (innerParams.preDeny) { + const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage))); + preDenyPromise.then(preDenyValue => { + if (preDenyValue === false) { + instance.hideLoading(); + } else { + instance.closePopup({ + isDenied: true, + value: typeof preDenyValue === 'undefined' ? value : preDenyValue + }); + } + }); + } else { + instance.closePopup({ + isDenied: true, + value + }); + } + }; + + const succeedWith = (instance, value) => { + instance.closePopup({ + isConfirmed: true, + value + }); + }; + + const confirm = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); + + if (innerParams.showLoaderOnConfirm) { + showLoading(); + } + + if (innerParams.preConfirm) { + instance.resetValidationMessage(); + const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage))); + preConfirmPromise.then(preConfirmValue => { + if (isVisible(getValidationMessage()) || preConfirmValue === false) { + instance.hideLoading(); + } else { + succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue); + } + }); + } else { + succeedWith(instance, value); + } + }; + + const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => { + if (globalState.keydownTarget && globalState.keydownHandlerAdded) { + globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = false; + } + + if (!innerParams.toast) { + globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith); + + globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup(); + globalState.keydownListenerCapture = innerParams.keydownListenerCapture; + globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, { + capture: globalState.keydownListenerCapture + }); + globalState.keydownHandlerAdded = true; + } + }; // Focus handling + + const setFocus = (innerParams, index, increment) => { + const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match + + if (focusableElements.length) { + index = index + increment; // rollover to first item + + if (index === focusableElements.length) { + index = 0; // go to last item + } else if (index === -1) { + index = focusableElements.length - 1; + } + + return focusableElements[index].focus(); + } // no visible focusable elements, focus the popup + + + getPopup().focus(); + }; + const arrowKeysNextButton = ['ArrowRight', 'ArrowDown']; + const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp']; + + const keydownHandler = (instance, e, dismissWith) => { + const innerParams = privateProps.innerParams.get(instance); + + if (!innerParams) { + return; // This instance has already been destroyed + } + + if (innerParams.stopKeydownPropagation) { + e.stopPropagation(); + } // ENTER + + + if (e.key === 'Enter') { + handleEnter(instance, e, innerParams); // TAB + } else if (e.key === 'Tab') { + handleTab(e, innerParams); // ARROWS - switch focus between buttons + } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) { + handleArrows(e.key); // ESC + } else if (e.key === 'Escape') { + handleEsc(e, innerParams, dismissWith); + } + }; + + const handleEnter = (instance, e, innerParams) => { + // #720 #721 + if (e.isComposing) { + return; + } + + if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) { + if (['textarea', 'file'].includes(innerParams.input)) { + return; // do not submit + } + + clickConfirm(); + e.preventDefault(); + } + }; + + const handleTab = (e, innerParams) => { + const targetElement = e.target; + const focusableElements = getFocusableElements(); + let btnIndex = -1; + + for (let i = 0; i < focusableElements.length; i++) { + if (targetElement === focusableElements[i]) { + btnIndex = i; + break; + } + } + + if (!e.shiftKey) { + // Cycle to the next button + setFocus(innerParams, btnIndex, 1); + } else { + // Cycle to the prev button + setFocus(innerParams, btnIndex, -1); + } + + e.stopPropagation(); + e.preventDefault(); + }; + + const handleArrows = key => { + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); + + if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) { + return; + } + + const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling'; + const buttonToFocus = document.activeElement[sibling]; + + if (buttonToFocus) { + buttonToFocus.focus(); + } + }; + + const handleEsc = (e, innerParams, dismissWith) => { + if (callIfFunction(innerParams.allowEscapeKey)) { + e.preventDefault(); + dismissWith(DismissReason.esc); + } + }; + + const handlePopupClick = (instance, domCache, dismissWith) => { + const innerParams = privateProps.innerParams.get(instance); + + if (innerParams.toast) { + handleToastClick(instance, domCache, dismissWith); + } else { + // Ignore click events that had mousedown on the popup but mouseup on the container + // This can happen when the user drags a slider + handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup + + handleContainerMousedown(domCache); + handleModalClick(instance, domCache, dismissWith); + } + }; + + const handleToastClick = (instance, domCache, dismissWith) => { + // Closing toast by internal click + domCache.popup.onclick = () => { + const innerParams = privateProps.innerParams.get(instance); + + if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) { + return; + } + + dismissWith(DismissReason.close); + }; + }; + + let ignoreOutsideClick = false; + + const handleModalMousedown = domCache => { + domCache.popup.onmousedown = () => { + domCache.container.onmouseup = function (e) { + domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't + // have any other direct children aside of the popup + + if (e.target === domCache.container) { + ignoreOutsideClick = true; + } + }; + }; + }; + + const handleContainerMousedown = domCache => { + domCache.container.onmousedown = () => { + domCache.popup.onmouseup = function (e) { + domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup + + if (e.target === domCache.popup || domCache.popup.contains(e.target)) { + ignoreOutsideClick = true; + } + }; + }; + }; + + const handleModalClick = (instance, domCache, dismissWith) => { + domCache.container.onclick = e => { + const innerParams = privateProps.innerParams.get(instance); + + if (ignoreOutsideClick) { + ignoreOutsideClick = false; + return; + } + + if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) { + dismissWith(DismissReason.backdrop); + } + }; + }; + + function _main(userParams, mixinParams = {}) { + showWarningsForParams(Object.assign({}, mixinParams, userParams)); + + if (globalState.currentInstance) { + globalState.currentInstance._destroy(); + + if (isModal()) { + unsetAriaHidden(); + } + } + + globalState.currentInstance = this; + const innerParams = prepareParams(userParams, mixinParams); + setParameters(innerParams); + Object.freeze(innerParams); // clear the previous timer + + if (globalState.timeout) { + globalState.timeout.stop(); + delete globalState.timeout; + } // clear the restore focus timeout + + + clearTimeout(globalState.restoreFocusTimeout); + const domCache = populateDomCache(this); + render(this, innerParams); + privateProps.innerParams.set(this, innerParams); + return swalPromise(this, domCache, innerParams); + } + + const prepareParams = (userParams, mixinParams) => { + const templateParams = getTemplateParams(userParams); + const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 + + params.showClass = Object.assign({}, defaultParams.showClass, params.showClass); + params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass); + return params; + }; + + const swalPromise = (instance, domCache, innerParams) => { + return new Promise(resolve => { + // functions to handle all closings/dismissals + const dismissWith = dismiss => { + instance.closePopup({ + isDismissed: true, + dismiss + }); + }; + + privateMethods.swalPromiseResolve.set(instance, resolve); + + domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance); + + domCache.denyButton.onclick = () => handleDenyButtonClick(instance); + + domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith); + + domCache.closeButton.onclick = () => dismissWith(DismissReason.close); + + handlePopupClick(instance, domCache, dismissWith); + addKeydownHandler(instance, globalState, innerParams, dismissWith); + handleInputOptionsAndValue(instance, innerParams); + openPopup(innerParams); + setupTimer(globalState, innerParams, dismissWith); + initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946) + + setTimeout(() => { + domCache.container.scrollTop = 0; + }); + }); + }; + + const populateDomCache = instance => { + const domCache = { + popup: getPopup(), + container: getContainer(), + actions: getActions(), + confirmButton: getConfirmButton(), + denyButton: getDenyButton(), + cancelButton: getCancelButton(), + loader: getLoader(), + closeButton: getCloseButton(), + validationMessage: getValidationMessage(), + progressSteps: getProgressSteps() + }; + privateProps.domCache.set(instance, domCache); + return domCache; + }; + + const setupTimer = (globalState$$1, innerParams, dismissWith) => { + const timerProgressBar = getTimerProgressBar(); + hide(timerProgressBar); + + if (innerParams.timer) { + globalState$$1.timeout = new Timer(() => { + dismissWith('timer'); + delete globalState$$1.timeout; + }, innerParams.timer); + + if (innerParams.timerProgressBar) { + show(timerProgressBar); + setTimeout(() => { + if (globalState$$1.timeout && globalState$$1.timeout.running) { + // timer can be already stopped or unset at this point + animateTimerProgressBar(innerParams.timer); + } + }); + } + } + }; + + const initFocus = (domCache, innerParams) => { + if (innerParams.toast) { + return; + } + + if (!callIfFunction(innerParams.allowEnterKey)) { + return blurActiveElement(); + } + + if (!focusButton(domCache, innerParams)) { + setFocus(innerParams, -1, 1); + } + }; + + const focusButton = (domCache, innerParams) => { + if (innerParams.focusDeny && isVisible(domCache.denyButton)) { + domCache.denyButton.focus(); + return true; + } + + if (innerParams.focusCancel && isVisible(domCache.cancelButton)) { + domCache.cancelButton.focus(); + return true; + } + + if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) { + domCache.confirmButton.focus(); + return true; + } + + return false; + }; + + const blurActiveElement = () => { + if (document.activeElement && typeof document.activeElement.blur === 'function') { + document.activeElement.blur(); + } + }; + + /** + * Updates popup parameters. + */ + + function update(params) { + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(this); + + if (!popup || hasClass(popup, innerParams.hideClass.popup)) { + return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup."); + } + + const validUpdatableParams = {}; // assign valid params from `params` to `defaults` + + Object.keys(params).forEach(param => { + if (Swal.isUpdatableParameter(param)) { + validUpdatableParams[param] = params[param]; + } else { + warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md")); + } + }); + const updatedParams = Object.assign({}, innerParams, validUpdatableParams); + render(this, updatedParams); + privateProps.innerParams.set(this, updatedParams); + Object.defineProperties(this, { + params: { + value: Object.assign({}, this.params, params), + writable: false, + enumerable: true + } + }); + } + + function _destroy() { + const domCache = privateProps.domCache.get(this); + const innerParams = privateProps.innerParams.get(this); + + if (!innerParams) { + return; // This instance has already been destroyed + } // Check if there is another Swal closing + + + if (domCache.popup && globalState.swalCloseEventFinishedCallback) { + globalState.swalCloseEventFinishedCallback(); + delete globalState.swalCloseEventFinishedCallback; + } // Check if there is a swal disposal defer timer + + + if (globalState.deferDisposalTimer) { + clearTimeout(globalState.deferDisposalTimer); + delete globalState.deferDisposalTimer; + } + + if (typeof innerParams.didDestroy === 'function') { + innerParams.didDestroy(); + } + + disposeSwal(this); + } + + const disposeSwal = instance => { + // Unset this.params so GC will dispose it (#1569) + delete instance.params; // Unset globalState props so GC will dispose globalState (#1569) + + delete globalState.keydownHandler; + delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569) + + unsetWeakMaps(privateProps); + unsetWeakMaps(privateMethods); // Unset currentInstance + + delete globalState.currentInstance; + }; + + const unsetWeakMaps = obj => { + for (const i in obj) { + obj[i] = new WeakMap(); + } + }; + + + + var instanceMethods = /*#__PURE__*/Object.freeze({ + hideLoading: hideLoading, + disableLoading: hideLoading, + getInput: getInput$1, + close: close, + closePopup: close, + closeModal: close, + closeToast: close, + enableButtons: enableButtons, + disableButtons: disableButtons, + enableInput: enableInput, + disableInput: disableInput, + showValidationMessage: showValidationMessage, + resetValidationMessage: resetValidationMessage$1, + getProgressSteps: getProgressSteps$1, + _main: _main, + update: update, + _destroy: _destroy + }); + + let currentInstance; + + class SweetAlert { + constructor(...args) { + // Prevent run in Node env + if (typeof window === 'undefined') { + return; + } + + currentInstance = this; + const outerParams = Object.freeze(this.constructor.argsToParams(args)); + Object.defineProperties(this, { + params: { + value: outerParams, + writable: false, + enumerable: true, + configurable: true + } + }); + + const promise = this._main(this.params); + + privateProps.promise.set(this, promise); + } // `catch` cannot be the name of a module export, so we define our thenable methods here instead + + + then(onFulfilled) { + const promise = privateProps.promise.get(this); + return promise.then(onFulfilled); + } + + finally(onFinally) { + const promise = privateProps.promise.get(this); + return promise.finally(onFinally); + } + + } // Assign instance methods from src/instanceMethods/*.js to prototype + + + Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor + + Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility + + Object.keys(instanceMethods).forEach(key => { + SweetAlert[key] = function (...args) { + if (currentInstance) { + return currentInstance[key](...args); + } + }; + }); + SweetAlert.DismissReason = DismissReason; + SweetAlert.version = '11.1.7'; + + const Swal = SweetAlert; + Swal.default = Swal; + + return Swal; + +})); +if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2} diff --git a/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.min.css b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.min.css new file mode 100644 index 0000000..342b3be --- /dev/null +++ b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.min.css @@ -0,0 +1 @@ +.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto} \ No newline at end of file diff --git a/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.min.js b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.min.js new file mode 100644 index 0000000..fe84b24 --- /dev/null +++ b/src/EventHub.Web/wwwroot/libs/sweetalert2/sweetalert2.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n
                \n \n
                  \n
                  \n \n

                  \n
                  \n \n \n
                  \n \n \n
                  \n \n
                  \n \n \n
                  \n
                  \n
                  \n \n \n \n
                  \n
                  \n
                  \n
                  \n
                  \n
                  \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
                  \n \n
                  \n
                  \n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'
                  ').concat(e,"
                  "),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join("
                  ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); \ No newline at end of file diff --git a/src/EventHub.Web/yarn.lock b/src/EventHub.Web/yarn.lock index aefe8ae..69d7d4a 100644 --- a/src/EventHub.Web/yarn.lock +++ b/src/EventHub.Web/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.0-rc.1.tgz#327a26fd71183ea2b4264ce12e4558310e8243b3" - integrity sha512-YycorI8c5EUx0Wi50R+Vrvd3m52RTntDB51y0u+2/UebEP9TkJfw0BowLDRqISLKQ1cqnrh5U+JlwPIUFD9hTA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.0-rc.1.tgz#fe3b8aab3db2a5406b68db0355942e1267c1c81e" - integrity sha512-QA861zNC2nrNxy5P7A7YtJrA6cRz6yvGIZEnasqYUQ3pqrmkV526AoPJrxIYfn8gjs2FiUHcEIirYx9IriL0Pg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.0-rc.1" - "@abp/bootstrap" "~4.4.0-rc.1" - "@abp/bootstrap-datepicker" "~4.4.0-rc.1" - "@abp/datatables.net-bs4" "~4.4.0-rc.1" - "@abp/font-awesome" "~4.4.0-rc.1" - "@abp/jquery-form" "~4.4.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.4.0-rc.1" - "@abp/lodash" "~4.4.0-rc.1" - "@abp/luxon" "~4.4.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.0-rc.1" - "@abp/select2" "~4.4.0-rc.1" - "@abp/sweetalert" "~4.4.0-rc.1" - "@abp/timeago" "~4.4.0-rc.1" - "@abp/toastr" "~4.4.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.0-rc.1.tgz#c086d5b1b4fa2b977779ed6e666e897879c7f3cf" - integrity sha512-cBzMQYmPJiXxo3z6PhLV5Sq61sWTN5e4139tpQepma4ctYBlV1+jQnNxmfCRVQio98YDk72kdkOtt7qQtP+TlA== +"@abp/aspnetcore.mvc.ui.theme.basic@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae" + integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6" + integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1" + "@abp/bootstrap" "~5.0.0-beta.1" + "@abp/bootstrap-datepicker" "~5.0.0-beta.1" + "@abp/datatables.net-bs4" "~5.0.0-beta.1" + "@abp/font-awesome" "~5.0.0-beta.1" + "@abp/jquery-form" "~5.0.0-beta.1" + "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1" + "@abp/lodash" "~5.0.0-beta.1" + "@abp/luxon" "~5.0.0-beta.1" + "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1" + "@abp/select2" "~5.0.0-beta.1" + "@abp/sweetalert2" "~5.0.0-beta.1" + "@abp/timeago" "~5.0.0-beta.1" + "@abp/toastr" "~5.0.0-beta.1" + +"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996" + integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.0-rc.1.tgz#9885772427e4dbcc98d76a404a6a85e84e32671f" - integrity sha512-Rb27WGmTTk4duDkQP8wO6N1xjSgXvmgW7zbKsoyzBPrySDsT+MyCXKWyslyEBg0Fk4HUhiRARVRAecOBnFq+dg== +"@abp/bootstrap-datepicker@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d" + integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.0-rc.1.tgz#cf5caf4e33e3afcd763603622c22c1585f49d21b" - integrity sha512-TytaRAVAxH/zIA3xLv/Kt909dou4EO57lnqz/wNorzoBxXdwmSDcIGx7IZkmQwXih8Sj+opC4QORJ6w02FMprA== +"@abp/bootstrap@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad" + integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.0-rc.1.tgz#cf31b5a0136e388d6d300b5274ccaedd6f886b42" - integrity sha512-q8yh3nQhBV85hfn3D0K3yWoj7wxvTw7ZjYA3+YpIClyG3/W4+PB/eAC7+VjybMxX4BMpt/694kYHNd7s78DxRA== +"@abp/core@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739" + integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg== dependencies: - "@abp/utils" "^4.4.0-rc.1" + "@abp/utils" "^5.0.0-beta.1" -"@abp/datatables.net-bs4@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.0-rc.1.tgz#8b597f4205c5cf6eeab252968767f27bead51cbf" - integrity sha512-Tuoa5qOv4XPo7EJHU9lzFYFn0DFVG3jFTaCxruKLybPXnNCmyzgwLuQmD0U2hI/oRGb0JILcD6QCfOqfOs7Jsg== +"@abp/datatables.net-bs4@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd" + integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ== dependencies: - "@abp/datatables.net" "~4.4.0-rc.1" + "@abp/datatables.net" "~5.0.0-beta.1" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.0-rc.1.tgz#c8996770323bd4310c4d2b057d5ceb396aa159f2" - integrity sha512-67Gy/nNE3z8XfGUdQGpA491r6NOPpyBChrqnenhsMiNq65ZJVcJDgtc5KLc8hDXMvNFtuTXNRBgLpK8Xs5R/LQ== +"@abp/datatables.net@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713" + integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.0-rc.1.tgz#8305b6e26b22afd29a71407c033362bdf3cf6eec" - integrity sha512-vmPn7Kvy2F1WHFzypymnGKQtYCkYSZMH288wuhdvqEPosHsmK583eqFuoF1kXE4T2D84nhyXC/mGxv2053NvQQ== +"@abp/font-awesome@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1" + integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.0-rc.1.tgz#ba4c468014cd3f95641daf856e024ad5153268a4" - integrity sha512-hWEousKP7h4C8IQj9a/4aYSCi7HXiBQemRt9tCyERQMMD1lz22+PYVrFJvnVJT0nh/t9tbfKzpW6pRHorQu4fA== +"@abp/jquery-form@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6" + integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.0-rc.1.tgz#399c82f2d5818f484998a90776a19fd89fb09ff4" - integrity sha512-GSQaOp3xjhQp91C6rbPFpTC78yv6wqy8N21ZV0Ncl1f5jTMi34XBD2ysT5ruhzjDhEEmihULwzGZdkNTBCmmkw== +"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83" + integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ== dependencies: - "@abp/jquery-validation" "~4.4.0-rc.1" + "@abp/jquery-validation" "~5.0.0-beta.1" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.0-rc.1.tgz#f27e0ecf9787a7b4a733067f28dd757bbd2a1b86" - integrity sha512-nATvgXwLoZVJrOV8NGo2QyOrLbblethTBiJ8TgonOXJAiWOQlIKNgsVKeyy8/nF3W48NqDgsZagt1JNXNEbcYg== +"@abp/jquery-validation@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5" + integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.0-rc.1.tgz#de1d8824b422ac96e4a07ee167058c00411786d9" - integrity sha512-StOe74MNhXqTNAdnCkrG/UM77keR9TYEiZ2vLOW23cteOgV8ohhJXH7xhNKfFkiQBla88utt7Txyx8VNA12E/Q== +"@abp/jquery@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3" + integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" jquery "~3.6.0" -"@abp/lodash@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.0-rc.1.tgz#1a07a87e9f360a4a1f2ed4fd19743145aa411e33" - integrity sha512-Gm10DDUTulWIw4XnPDXiy7A2xfGPD1UueRqLhrJ0JT0mgnys6Kaib49tsnzDhPJBv07Oufnw+p57Aq+YUOF4fg== +"@abp/lodash@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3" + integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" lodash "^4.17.15" -"@abp/luxon@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.0-rc.1.tgz#5c3f4ac1fcdfb80d79a4dd50381eaff38637949f" - integrity sha512-bfLgQJE3WAEIC3HxfCFTdMNWNs/nCe9pDGN8qsiUmQ0P0ZEQzkXvNSRe9idQP2Cbn/0q0+y44oa9v2sLT1LGsQ== +"@abp/luxon@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf" + integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.0-rc.1.tgz#370a459024f62abfb58c73cc63c42e3183374e82" - integrity sha512-bzlQDE9u99nPw0XOqORSUd57IwN2N7EmJgSrsZ1kY5YRqA1KXZFMoUBxuBHvYR38+IAN6h79wF2yMxT79dTU6w== +"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9" + integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.0-rc.1.tgz#219e3999bae4bae26bfaf2290e9cc6b79f3632eb" - integrity sha512-qhJZOt6e9mTggS8Qn779OtUZADwbvtErZa4xgRgwS4lzBJEpQjZzfBVnKQZ7K74MOn7nHRFvC4dTEDbzhcfukg== +"@abp/select2@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e" + integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw== dependencies: - "@abp/core" "~4.4.0-rc.1" + "@abp/core" "~5.0.0-beta.1" select2 "^4.0.13" -"@abp/sweetalert@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.0-rc.1.tgz#35f678daca1bb9839e8789c0a8da58c7423f5faa" - integrity sha512-lY7lYcR9fs+k468Cr9l5kZaH6+FAqc765teSsJrIAdr1fxnDPzZWxoSSqNc3a8mEg125c2NwOD8L+AYOGqMFiQ== +"@abp/sweetalert2@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da" + integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w== dependencies: - "@abp/core" "~4.4.0-rc.1" - sweetalert "^2.1.2" + "@abp/core" "~5.0.0-beta.1" + sweetalert2 "^11.0.18" -"@abp/timeago@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.0-rc.1.tgz#ba6c9c01727016b06e70eacfbc218bbe033b3a93" - integrity sha512-fxRMdYrnZTC2FbBXJfX5nlKVILXFmxRdZ4PW+DhSolsDSG2FR3yesbqS2SWoLuGvr81oBIkXbECaf7S/oWA2Iw== +"@abp/timeago@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42" + integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" timeago "^1.6.7" -"@abp/toastr@~4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.0-rc.1.tgz#a559665b3516f0f1eaba1c2b6fdd91d47cf25b62" - integrity sha512-7BUywNmL/hXzR4hpcQejcA9YMsLGRisqdOTpZy7abkD4wicuchHy1tr9cBSLbDIgA8oMIqM9ubh3VvPoe6pl4A== +"@abp/toastr@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f" + integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w== dependencies: - "@abp/jquery" "~4.4.0-rc.1" + "@abp/jquery" "~5.0.0-beta.1" toastr "^2.1.4" -"@abp/utils@^4.4.0-rc.1": - version "4.4.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.0-rc.1.tgz#704764e60aae7beec2fc3ac9fff6217c1c70ddf6" - integrity sha512-HOmxzOKueogv5mZ6b7SLzBlANYmtL3R8XFypPTky98qYYYWktSxgDkEnyvpe20+yuxKkzVW7sf/swKWEt2onIQ== +"@abp/utils@^5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c" + integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA== dependencies: just-compare "^1.3.0" @@ -785,11 +785,6 @@ es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-object-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" - integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= - es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" @@ -2067,11 +2062,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== -promise-polyfill@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" - integrity sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc= - pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -2487,13 +2477,10 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -sweetalert@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79" - integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA== - dependencies: - es6-object-assign "^1.1.0" - promise-polyfill "^6.0.2" +sweetalert2@^11.0.18: + version "11.1.7" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.1.7.tgz#0ff2851eae77a76a3fe0ab289d3c32493e811b6d" + integrity sha512-7MHQVtKCTORfA9e58g9ZOfT3X58DkSBtvoCQJnqSHobXXb5C7aB8Yg/tAccTFnefCUBU41PoStjXMkzG3bNeig== tar@^4: version "4.4.10" diff --git a/test/EventHub.EntityFrameworkCore.Tests/EventHub.EntityFrameworkCore.Tests.csproj b/test/EventHub.EntityFrameworkCore.Tests/EventHub.EntityFrameworkCore.Tests.csproj index de85cd9..4edad9a 100644 --- a/test/EventHub.EntityFrameworkCore.Tests/EventHub.EntityFrameworkCore.Tests.csproj +++ b/test/EventHub.EntityFrameworkCore.Tests/EventHub.EntityFrameworkCore.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/test/EventHub.TestBase/EventHub.TestBase.csproj b/test/EventHub.TestBase/EventHub.TestBase.csproj index c1e03ee..28c0024 100644 --- a/test/EventHub.TestBase/EventHub.TestBase.csproj +++ b/test/EventHub.TestBase/EventHub.TestBase.csproj @@ -8,9 +8,9 @@ - - - + + + From e3b50eefff81f63bf5bc401370d65f21780fc0a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 7 Oct 2021 14:57:15 +0300 Subject: [PATCH 025/159] Added PaymentRequest aggregate root and mapped to EF Core --- .../PaymentRequests/PaymentRequestConsts.cs | 8 +++++ .../PaymentRequests/PaymentRequestState.cs | 9 +++++ .../src/Payment.Domain/PaymentDbProperties.cs | 2 +- .../PaymentRequests/PaymentRequest.cs | 33 +++++++++++++++++++ .../EntityFrameworkCore/IPaymentDbContext.cs | 8 ++--- .../EntityFrameworkCore/PaymentDbContext.cs | 5 ++- ...PaymentDbContextModelCreatingExtensions.cs | 23 +++++-------- 7 files changed, 65 insertions(+), 23 deletions(-) create mode 100644 modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestConsts.cs create mode 100644 modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestState.cs create mode 100644 modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs diff --git a/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestConsts.cs b/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestConsts.cs new file mode 100644 index 0000000..02574dc --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestConsts.cs @@ -0,0 +1,8 @@ +namespace Payment.PaymentRequests +{ + public static class PaymentRequestConsts + { + public const int MaxProductIdLength = 100; + public const int MaxProductNameLength = 200; + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestState.cs b/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestState.cs new file mode 100644 index 0000000..faa3bce --- /dev/null +++ b/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestState.cs @@ -0,0 +1,9 @@ +namespace Payment.PaymentRequests +{ + public enum PaymentRequestState : byte + { + Waiting = 0, + Completed, + Failed + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain/PaymentDbProperties.cs b/modules/payment/src/Payment.Domain/PaymentDbProperties.cs index 258bc24..ae502eb 100644 --- a/modules/payment/src/Payment.Domain/PaymentDbProperties.cs +++ b/modules/payment/src/Payment.Domain/PaymentDbProperties.cs @@ -2,7 +2,7 @@ { public static class PaymentDbProperties { - public static string DbTablePrefix { get; set; } = "Payment"; + public static string DbTablePrefix { get; set; } = "Pay"; public static string DbSchema { get; set; } = null; diff --git a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs new file mode 100644 index 0000000..ae8c9ed --- /dev/null +++ b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs @@ -0,0 +1,33 @@ +using System; +using JetBrains.Annotations; +using Volo.Abp; +using Volo.Abp.Domain.Entities.Auditing; + +namespace Payment.PaymentRequests +{ + public class PaymentRequest : CreationAuditedAggregateRoot + { + public string CustomerId { get; private set; } + + public string ProductId { get; private set; } + + [NotNull] + public string ProductName { get; private set; } + + public decimal Amount { get; private set; } + + public PaymentRequestState State { get; set; } + + public PaymentRequest( + Guid id, + [NotNull] string productName, + [CanBeNull] string productId, + decimal amount) + : base(id) + { + ProductName = Check.NotNullOrWhiteSpace(productName, nameof(productName)); + ProductId = productId; + Amount = amount; + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/IPaymentDbContext.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/IPaymentDbContext.cs index 3259838..28e4b20 100644 --- a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/IPaymentDbContext.cs +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/IPaymentDbContext.cs @@ -1,4 +1,6 @@ -using Volo.Abp.Data; +using Microsoft.EntityFrameworkCore; +using Payment.PaymentRequests; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; namespace Payment.EntityFrameworkCore @@ -6,8 +8,6 @@ namespace Payment.EntityFrameworkCore [ConnectionStringName(PaymentDbProperties.ConnectionStringName)] public interface IPaymentDbContext : IEfCoreDbContext { - /* Add DbSet for each Aggregate Root here. Example: - * DbSet Questions { get; } - */ + DbSet PaymentRequests { get; } } } \ No newline at end of file diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContext.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContext.cs index aa87890..c2a066e 100644 --- a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContext.cs +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContext.cs @@ -1,4 +1,5 @@ using Microsoft.EntityFrameworkCore; +using Payment.PaymentRequests; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; @@ -7,9 +8,7 @@ namespace Payment.EntityFrameworkCore [ConnectionStringName(PaymentDbProperties.ConnectionStringName)] public class PaymentDbContext : AbpDbContext, IPaymentDbContext { - /* Add DbSet for each Aggregate Root here. Example: - * public DbSet Questions { get; set; } - */ + public DbSet PaymentRequests { get; set; } public PaymentDbContext(DbContextOptions options) : base(options) diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs index 18c6740..512724e 100644 --- a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs @@ -1,5 +1,7 @@ using Microsoft.EntityFrameworkCore; +using Payment.PaymentRequests; using Volo.Abp; +using Volo.Abp.EntityFrameworkCore.Modeling; namespace Payment.EntityFrameworkCore { @@ -10,25 +12,16 @@ namespace Payment.EntityFrameworkCore { Check.NotNull(builder, nameof(builder)); - /* Configure all entities here. Example: - - builder.Entity(b => + builder.Entity(b => { - //Configure table & schema name - b.ToTable(PaymentDbProperties.DbTablePrefix + "Questions", PaymentDbProperties.DbSchema); - + b.ToTable(PaymentDbProperties.DbTablePrefix + "PaymentRequests", PaymentDbProperties.DbSchema); b.ConfigureByConvention(); + b.Property(x => x.ProductName).IsRequired().HasMaxLength(PaymentRequestConsts.MaxProductNameLength); + b.Property(x => x.ProductId).IsRequired().HasMaxLength(PaymentRequestConsts.MaxProductIdLength); - //Properties - b.Property(q => q.Title).IsRequired().HasMaxLength(QuestionConsts.MaxTitleLength); - - //Relations - b.HasMany(question => question.Tags).WithOne().HasForeignKey(qt => qt.QuestionId); - - //Indexes - b.HasIndex(q => q.CreationTime); + b.HasIndex(x => x.CustomerId); + b.HasIndex(x => x.State); }); - */ } } } From 45d2e940eb25a5bcf0615f241c65a77420890ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 7 Oct 2021 15:11:18 +0300 Subject: [PATCH 026/159] Added initial IPaymentRequestAppService --- .../IPaymentRequestAppService.cs | 10 +++++++ .../PaymentRequestCreationDto.cs | 17 +++++++++++ .../PaymentRequests/PaymentRequestDto.cs | 18 ++++++++++++ .../PaymentApplicationAutoMapperProfile.cs | 5 ++-- .../PaymentRequestAppService.cs | 29 +++++++++++++++++++ .../IPaymentRequestRepository.cs | 10 +++++++ .../PaymentRequests/PaymentRequest.cs | 8 +++-- .../Repositories/PaymentRequestRepository.cs | 15 ++++++++++ 8 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 modules/payment/src/Payment.Application.Contracts/PaymentRequests/IPaymentRequestAppService.cs create mode 100644 modules/payment/src/Payment.Application.Contracts/PaymentRequests/PaymentRequestCreationDto.cs create mode 100644 modules/payment/src/Payment.Application.Contracts/PaymentRequests/PaymentRequestDto.cs create mode 100644 modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs create mode 100644 modules/payment/src/Payment.Domain/PaymentRequests/IPaymentRequestRepository.cs create mode 100644 modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/Repositories/PaymentRequestRepository.cs diff --git a/modules/payment/src/Payment.Application.Contracts/PaymentRequests/IPaymentRequestAppService.cs b/modules/payment/src/Payment.Application.Contracts/PaymentRequests/IPaymentRequestAppService.cs new file mode 100644 index 0000000..0467c6d --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/PaymentRequests/IPaymentRequestAppService.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace Payment.PaymentRequests +{ + public interface IPaymentRequestAppService : IApplicationService + { + Task CreateAsync(PaymentRequestCreationDto input); + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Application.Contracts/PaymentRequests/PaymentRequestCreationDto.cs b/modules/payment/src/Payment.Application.Contracts/PaymentRequests/PaymentRequestCreationDto.cs new file mode 100644 index 0000000..78baab2 --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/PaymentRequests/PaymentRequestCreationDto.cs @@ -0,0 +1,17 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.ObjectExtending; + +namespace Payment.PaymentRequests +{ + public class PaymentRequestCreationDto : ExtensibleObject + { + public string CustomerId { get; set; } + + public string ProductId { get; set; } + + [Required] + public string ProductName { get; set; } + + public decimal Amount { get; set; } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Application.Contracts/PaymentRequests/PaymentRequestDto.cs b/modules/payment/src/Payment.Application.Contracts/PaymentRequests/PaymentRequestDto.cs new file mode 100644 index 0000000..528a6f1 --- /dev/null +++ b/modules/payment/src/Payment.Application.Contracts/PaymentRequests/PaymentRequestDto.cs @@ -0,0 +1,18 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace Payment.PaymentRequests +{ + public class PaymentRequestDto : CreationAuditedEntityDto + { + public string CustomerId { get; set; } + + public string ProductId { get; set; } + + public string ProductName { get; set; } + + public decimal Amount { get; set; } + + public PaymentRequestState State { get; set; } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Application/PaymentApplicationAutoMapperProfile.cs b/modules/payment/src/Payment.Application/PaymentApplicationAutoMapperProfile.cs index a15ddeb..bf8c80d 100644 --- a/modules/payment/src/Payment.Application/PaymentApplicationAutoMapperProfile.cs +++ b/modules/payment/src/Payment.Application/PaymentApplicationAutoMapperProfile.cs @@ -1,4 +1,5 @@ using AutoMapper; +using Payment.PaymentRequests; namespace Payment { @@ -6,9 +7,7 @@ namespace Payment { public PaymentApplicationAutoMapperProfile() { - /* You can configure your AutoMapper mapping configuration here. - * Alternatively, you can split your mapping configurations - * into multiple profile classes for a better organization. */ + CreateMap(); } } } \ No newline at end of file diff --git a/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs b/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs new file mode 100644 index 0000000..bfe3504 --- /dev/null +++ b/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs @@ -0,0 +1,29 @@ +using System.Threading.Tasks; + +namespace Payment.PaymentRequests +{ + public class PaymentRequestAppService : PaymentAppService, IPaymentRequestAppService + { + private readonly IPaymentRequestRepository _paymentRequestRepository; + + public PaymentRequestAppService(IPaymentRequestRepository paymentRequestRepository) + { + _paymentRequestRepository = paymentRequestRepository; + } + + public async Task CreateAsync(PaymentRequestCreationDto input) + { + var paymentRequest = new PaymentRequest( + GuidGenerator.Create(), + input.CustomerId, + input.ProductId, + input.ProductName, + input.Amount + ); + + await _paymentRequestRepository.InsertAsync(paymentRequest); + + return ObjectMapper.Map(paymentRequest); + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain/PaymentRequests/IPaymentRequestRepository.cs b/modules/payment/src/Payment.Domain/PaymentRequests/IPaymentRequestRepository.cs new file mode 100644 index 0000000..1269daa --- /dev/null +++ b/modules/payment/src/Payment.Domain/PaymentRequests/IPaymentRequestRepository.cs @@ -0,0 +1,10 @@ +using System; +using Volo.Abp.Domain.Repositories; + +namespace Payment.PaymentRequests +{ + public interface IPaymentRequestRepository : IRepository + { + + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs index ae8c9ed..80049b4 100644 --- a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs +++ b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs @@ -7,8 +7,10 @@ namespace Payment.PaymentRequests { public class PaymentRequest : CreationAuditedAggregateRoot { + [CanBeNull] public string CustomerId { get; private set; } + [CanBeNull] public string ProductId { get; private set; } [NotNull] @@ -20,13 +22,15 @@ namespace Payment.PaymentRequests public PaymentRequest( Guid id, - [NotNull] string productName, + [CanBeNull] string customerId, [CanBeNull] string productId, + [NotNull] string productName, decimal amount) : base(id) { - ProductName = Check.NotNullOrWhiteSpace(productName, nameof(productName)); + CustomerId = customerId; ProductId = productId; + ProductName = Check.NotNullOrWhiteSpace(productName, nameof(productName)); Amount = amount; } } diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/Repositories/PaymentRequestRepository.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/Repositories/PaymentRequestRepository.cs new file mode 100644 index 0000000..d0e236d --- /dev/null +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/Repositories/PaymentRequestRepository.cs @@ -0,0 +1,15 @@ +using System; +using Payment.PaymentRequests; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace Payment.EntityFrameworkCore.Repositories +{ + public class PaymentRequestRepository : EfCoreRepository, IPaymentRequestRepository + { + public PaymentRequestRepository(IDbContextProvider dbContextProvider) + : base(dbContextProvider) + { + } + } +} \ No newline at end of file From 7ed48a66413545a47afff1c307962cd45d88d41b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 7 Oct 2021 15:39:03 +0300 Subject: [PATCH 027/159] Remove docker files --- modules/payment/docker-compose.migrations.yml | 13 --------- modules/payment/docker-compose.override.yml | 29 ------------------- modules/payment/docker-compose.yml | 25 ---------------- 3 files changed, 67 deletions(-) delete mode 100644 modules/payment/docker-compose.migrations.yml delete mode 100644 modules/payment/docker-compose.override.yml delete mode 100644 modules/payment/docker-compose.yml diff --git a/modules/payment/docker-compose.migrations.yml b/modules/payment/docker-compose.migrations.yml deleted file mode 100644 index e9b751f..0000000 --- a/modules/payment/docker-compose.migrations.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: '3.4' - -services: - migrations: - build: - context: ../../ - dockerfile: templates/service/database/Dockerfile - depends_on: - - sqlserver - environment: - - IdentityServer_DB=Payment_Identity - - Payment_DB=Payment_ModuleDb - - SA_PASSWORD=yourStrong(!)Password diff --git a/modules/payment/docker-compose.override.yml b/modules/payment/docker-compose.override.yml deleted file mode 100644 index cea9b3a..0000000 --- a/modules/payment/docker-compose.override.yml +++ /dev/null @@ -1,29 +0,0 @@ -version: '3.4' - -services: - sqlserver: - environment: - - SA_PASSWORD=yourStrong(!)Password - - ACCEPT_EULA=Y - ports: - - "51599:1433" - - identity-server: - environment: - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionStrings__Default=Server=sqlserver;Database=Payment_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false - - ConnectionStrings__SqlServerCache=Server=sqlserver;Database=Payment_Cache;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false - ports: - - "51600:80" - - payment: - environment: - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionStrings__Default=Server=sqlserver;Database=Payment_ModuleDb;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false - - ConnectionStrings__AbpSettingManagement=Server=sqlserver;Database=Payment_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false - - ConnectionStrings__AbpPermissionManagement=Server=sqlserver;Database=Payment_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false - - ConnectionStrings__AbpAuditLogging=Server=sqlserver;Database=Payment_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false - - ConnectionStrings__SqlServerCache=Server=sqlserver;Database=Payment_Cache;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false - - AuthServer__Authority=http://identity-server - ports: - - "51601:80" \ No newline at end of file diff --git a/modules/payment/docker-compose.yml b/modules/payment/docker-compose.yml deleted file mode 100644 index cbf2052..0000000 --- a/modules/payment/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -version: '3.4' - -services: - sqlserver: - image: mcr.microsoft.com/mssql/server - volumes: - - dbdata:/var/opt/mssql - - identity-server: - build: - context: ../../ - dockerfile: templates/service/host/IdentityServerHost/Dockerfile - depends_on: - - sqlserver - - payment: - build: - context: ../../ - dockerfile: templates/service/host/Payment.Host/Dockerfile - depends_on: - - sqlserver - - identity-server - -volumes: - dbdata: \ No newline at end of file From 436ea8dac6e46953c074a3806332fdecf09ded5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 7 Oct 2021 15:39:14 +0300 Subject: [PATCH 028/159] Create PaymentRequestAppService_Tests --- .../PaymentRequests/PaymentRequestConsts.cs | 1 + ...PaymentDbContextModelCreatingExtensions.cs | 3 +- .../PaymentRequestAppService_Tests.cs | 33 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 modules/payment/test/Payment.Application.Tests/PaymentRequests/PaymentRequestAppService_Tests.cs diff --git a/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestConsts.cs b/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestConsts.cs index 02574dc..bd3a2a7 100644 --- a/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestConsts.cs +++ b/modules/payment/src/Payment.Domain.Shared/PaymentRequests/PaymentRequestConsts.cs @@ -2,6 +2,7 @@ { public static class PaymentRequestConsts { + public const int MaxCustomerIdLength = 100; public const int MaxProductIdLength = 100; public const int MaxProductNameLength = 200; } diff --git a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs index 512724e..ef9b081 100644 --- a/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs +++ b/modules/payment/src/Payment.EntityFrameworkCore/EntityFrameworkCore/PaymentDbContextModelCreatingExtensions.cs @@ -16,8 +16,9 @@ namespace Payment.EntityFrameworkCore { b.ToTable(PaymentDbProperties.DbTablePrefix + "PaymentRequests", PaymentDbProperties.DbSchema); b.ConfigureByConvention(); + b.Property(x => x.CustomerId).HasMaxLength(PaymentRequestConsts.MaxCustomerIdLength); + b.Property(x => x.ProductId).HasMaxLength(PaymentRequestConsts.MaxProductIdLength); b.Property(x => x.ProductName).IsRequired().HasMaxLength(PaymentRequestConsts.MaxProductNameLength); - b.Property(x => x.ProductId).IsRequired().HasMaxLength(PaymentRequestConsts.MaxProductIdLength); b.HasIndex(x => x.CustomerId); b.HasIndex(x => x.State); diff --git a/modules/payment/test/Payment.Application.Tests/PaymentRequests/PaymentRequestAppService_Tests.cs b/modules/payment/test/Payment.Application.Tests/PaymentRequests/PaymentRequestAppService_Tests.cs new file mode 100644 index 0000000..0a5bb3e --- /dev/null +++ b/modules/payment/test/Payment.Application.Tests/PaymentRequests/PaymentRequestAppService_Tests.cs @@ -0,0 +1,33 @@ +using System; +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Payment.PaymentRequests +{ + public class PaymentRequestAppService_Tests : PaymentApplicationTestBase + { + private readonly IPaymentRequestAppService _paymentRequestAppService; + + public PaymentRequestAppService_Tests() + { + _paymentRequestAppService = GetRequiredService(); + } + + [Fact] + public async Task Should_Create_Minimal_Payment_Request() + { + var result = await _paymentRequestAppService.CreateAsync( + new PaymentRequestCreationDto + { + ProductName = "My product 1", + Amount = 99.99m + } + ); + + result.Id.ShouldNotBe(Guid.Empty); + result.Amount.ShouldBe(99.99m); + result.ProductName.ShouldBe("My product 1"); + } + } +} \ No newline at end of file From cb05c38a53ca6bf1cd02ffe4604de0e91d58b8c5 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Thu, 7 Oct 2021 15:43:46 +0300 Subject: [PATCH 029/159] fix(EventHub.HttpApi.Host): error to read the request form while editing organization/event --- .../Controllers/Events/EventController.cs | 4 ++-- .../Controllers/Organizations/OrganizationController.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/EventHub.HttpApi.Host/Controllers/Events/EventController.cs b/src/EventHub.HttpApi.Host/Controllers/Events/EventController.cs index ba988fc..458f67c 100644 --- a/src/EventHub.HttpApi.Host/Controllers/Events/EventController.cs +++ b/src/EventHub.HttpApi.Host/Controllers/Events/EventController.cs @@ -29,7 +29,7 @@ namespace EventHub.Controllers.Events } [HttpPost] - public async Task CreateAsync(CreateEventDto input) + public async Task CreateAsync([FromForm] CreateEventDto input) { return await _eventAppService.CreateAsync(input); } @@ -70,7 +70,7 @@ namespace EventHub.Controllers.Events [HttpPut] [Route("{id}")] - public async Task UpdateAsync(Guid id, UpdateEventDto input) + public async Task UpdateAsync(Guid id, [FromForm] UpdateEventDto input) { await _eventAppService.UpdateAsync(id, input); } diff --git a/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs b/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs index 4c94f8d..471657a 100644 --- a/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs +++ b/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs @@ -28,7 +28,7 @@ namespace EventHub.Controllers.Organizations } [HttpPost] - public async Task CreateAsync(CreateOrganizationDto input) + public async Task CreateAsync([FromForm] CreateOrganizationDto input) { await _organizationAppService.CreateAsync(input); } @@ -62,7 +62,7 @@ namespace EventHub.Controllers.Organizations [HttpPut] [Route("{id}")] - public async Task UpdateAsync(Guid id, UpdateOrganizationDto input) + public async Task UpdateAsync(Guid id, [FromForm] UpdateOrganizationDto input) { await _organizationAppService.UpdateAsync(id, input); } From 41660f2644623c8a64afb889cc55eb3542e7bec6 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Thu, 7 Oct 2021 15:46:28 +0300 Subject: [PATCH 030/159] refactor(EventHub-Admin): cover image operations --- .../Events/EventAppService.cs | 10 ++++- .../Organizations/OrganizationAppService.cs | 15 +++++-- .../Controllers/Events/EventController.cs | 12 +---- .../Organizations/OrganizationController.cs | 11 +---- .../EventHub.Admin.HttpApi.Host.csproj | 1 - .../EventHubAdminHttpApiHostModule.cs | 4 -- .../EventHub.Admin.Web.csproj | 3 ++ .../Pages/EventManagement.razor | 6 +-- .../Pages/EventManagement.razor.cs | 42 +++++++++++++----- .../Pages/OrganizationManagement.razor | 8 ++-- .../Pages/OrganizationManagement.razor.cs | 40 ++++++++++++----- .../wwwroot/assets}/eh-event.png | Bin .../wwwroot/assets}/eh-organization.png | Bin .../Organizations/OrganizationContst.cs | 2 + 14 files changed, 96 insertions(+), 58 deletions(-) rename src/{EventHub.Admin.HttpApi.Host/Images => EventHub.Admin.Web/wwwroot/assets}/eh-event.png (100%) rename src/{EventHub.Admin.HttpApi.Host/Images => EventHub.Admin.Web/wwwroot/assets}/eh-organization.png (100%) diff --git a/src/EventHub.Admin.Application/Events/EventAppService.cs b/src/EventHub.Admin.Application/Events/EventAppService.cs index 7544238..0f58e09 100644 --- a/src/EventHub.Admin.Application/Events/EventAppService.cs +++ b/src/EventHub.Admin.Application/Events/EventAppService.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Linq.Dynamic.Core; using System.Threading.Tasks; using EventHub.Admin.Permissions; using EventHub.Countries; @@ -72,6 +71,10 @@ namespace EventHub.Admin.Events { await SetCoverImageAsync(blobName: id.ToString(), input.CoverImageStreamContent); } + else + { + await DeleteCoverImageAsync(blobName: id.ToString()); + } await _eventRepository.UpdateAsync(@event); } @@ -107,5 +110,10 @@ namespace EventHub.Admin.Events { await _eventBlobContainer.SaveAsync(blobName, streamContent.GetStream(), overrideExisting); } + + private async Task DeleteCoverImageAsync(string blobName) + { + await _eventBlobContainer.DeleteAsync(blobName); + } } } diff --git a/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs b/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs index 9c1a491..ba4049f 100644 --- a/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs +++ b/src/EventHub.Admin.Application/Organizations/OrganizationAppService.cs @@ -78,7 +78,7 @@ namespace EventHub.Admin.Organizations return await CreateOrganizationProfileDto(organization); } - + public async Task GetByNameAsync(string name) { var organization = await _organizationRepository.FindAsync(x => x.Name.ToLower() == name.ToLower()); @@ -110,6 +110,10 @@ namespace EventHub.Admin.Organizations { await SaveCoverImageAsync(organization.Id, input.ProfilePictureStreamContent); } + else + { + await DeleteCoverImageAsync(blobName: id.ToString()); + } await _organizationRepository.UpdateAsync(organization); @@ -121,7 +125,7 @@ namespace EventHub.Admin.Organizations { await _organizationRepository.DeleteAsync(id); } - + private async Task CreateOrganizationProfileDto(Organization organization) { var dto = ObjectMapper.Map(organization); @@ -138,7 +142,7 @@ namespace EventHub.Admin.Organizations { var blobName = id.ToString(); var coverImageStream = await _organizationBlobContainer.GetOrNullAsync(blobName); - + if (coverImageStream is null) { return null; @@ -153,5 +157,10 @@ namespace EventHub.Admin.Organizations await _organizationBlobContainer.SaveAsync(blobName, coverImageContent.GetStream(), overrideExisting: true); } + + private async Task DeleteCoverImageAsync(string blobName) + { + await _organizationBlobContainer.DeleteAsync(blobName); + } } } \ No newline at end of file diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs index 6563214..c99d897 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Events/EventController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using EventHub.Admin.Events; +using EventHub.Events; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; @@ -47,16 +48,7 @@ namespace EventHub.Admin.Controllers.Events var remoteStreamContent = await _eventAppService.GetCoverImageAsync(id); if (remoteStreamContent is null) { - var stream = _virtualFileProvider - .GetFileInfo("/Images/eh-event.png") - .CreateReadStream(); - - remoteStreamContent = new RemoteStreamContent(stream) - { - ContentType = "image/png" - }; - - await stream.FlushAsync(); + return null; } Response.Headers.Add("Accept-Ranges", "bytes"); diff --git a/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs b/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs index 9b1db00..c30990f 100644 --- a/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs +++ b/src/EventHub.Admin.HttpApi.Host/Controllers/Organizations/OrganizationController.cs @@ -2,6 +2,7 @@ using System; using System.IO; using System.Threading.Tasks; using EventHub.Admin.Organizations; +using EventHub.Organizations; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; @@ -69,15 +70,7 @@ namespace EventHub.Admin.Controllers.Organizations var remoteStreamContent = await _organizationAppService.GetCoverImageAsync(id); if (remoteStreamContent is null) { - var stream = _virtualFileProvider - .GetFileInfo("/Images/eh-organization.png") - .CreateReadStream(); - - remoteStreamContent = new RemoteStreamContent(stream) - { - ContentType = "image/png" - }; - await stream.FlushAsync(); + return null; } Response.Headers.Add("Accept-Ranges", "bytes"); diff --git a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj index 138285b..f67494c 100644 --- a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj +++ b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj @@ -33,7 +33,6 @@ - diff --git a/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs b/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs index 32df968..7bb8d9b 100644 --- a/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs +++ b/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs @@ -93,10 +93,6 @@ namespace EventHub.Admin Configure(options => { - options.FileSets.AddEmbedded( - baseNamespace: "EventHub.Admin", - baseFolder: "/Images"); - if (hostingEnvironment.IsDevelopment()) { options.FileSets.ReplaceEmbeddedByPhysical( diff --git a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj index 63e7ffa..dd3317b 100644 --- a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj +++ b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj @@ -22,4 +22,7 @@
                  + + + diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor b/src/EventHub.Admin.Web/Pages/EventManagement.razor index 0576599..78de89f 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor @@ -266,13 +266,13 @@ - @if (!string.IsNullOrEmpty(CoverImageUrl)) + @if (DisabledCoverImageButton) { - + } else { - + } diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs index e026c6b..76a56f2 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs @@ -10,6 +10,7 @@ using System.ComponentModel; using Microsoft.AspNetCore.Components.Web; using System.IO; using System.Globalization; +using EventHub.Events; using NUglify.Helpers; using Volo.Abp; using Volo.Abp.Content; @@ -33,6 +34,7 @@ namespace EventHub.Admin.Web.Pages private IFileEntry FileEntry { get; set; } private List Countries { get; set; } private List Languages { get; set; } + private bool DisabledCoverImageButton { get; set; } public EventManagement() { @@ -96,7 +98,7 @@ namespace EventHub.Admin.Web.Pages EditingEvent = ObjectMapper.Map(Event); FileEntry = new FileEntry(); - CoverImageUrl = UrlOptions.Value.AdminApi.EnsureEndsWith('/') + "api/eventhub/admin/event/cover-image/" + EditingEventId; + await SetCoverImageUrlAsync(); EditEventModal.Show(); } @@ -122,6 +124,7 @@ namespace EventHub.Admin.Web.Pages await GetEventsAsync(); CoverImageUrl = string.Empty; + DisabledCoverImageButton = false; EditEventModal.Hide(); } @@ -145,17 +148,6 @@ namespace EventHub.Admin.Web.Pages await GetEventsAsync(); } - private void SetCoverImageUrl(string contentType, byte[] content) - { - if (content.IsNullOrEmpty()) - { - return; - } - - contentType = string.IsNullOrWhiteSpace(contentType) ? "image/png" : contentType; - CoverImageUrl = $"data:{contentType};base64,{Convert.ToBase64String(content)}"; - } - private async Task OnCoverImageFileChanged(FileChangedEventArgs e) { FileEntry = e.Files.FirstOrDefault(); @@ -174,6 +166,18 @@ namespace EventHub.Admin.Web.Pages FileName = FileEntry.Name }; + void SetCoverImageUrl(string contentType, byte[] content) + { + if (content.IsNullOrEmpty()) + { + return; + } + + contentType = string.IsNullOrWhiteSpace(contentType) ? "image/png" : contentType; + CoverImageUrl = $"data:{contentType};base64,{Convert.ToBase64String(content)}"; + DisabledCoverImageButton = false; + } + SetCoverImageUrl(FileEntry.Type, stream.ToArray()); await InvokeAsync(StateHasChanged); } @@ -183,12 +187,26 @@ namespace EventHub.Admin.Web.Pages EditingEvent.CoverImageStreamContent = null; FileEntry = new FileEntry(); CoverImageUrl = null; + DisabledCoverImageButton = true; } private async Task FillCountriesAsync() { Countries = await EventAppService.GetCountriesLookupAsync(); } + + private async Task SetCoverImageUrlAsync() + { + var imageRemoteStreamContent = await EventAppService.GetCoverImageAsync(id: EditingEventId); + + if (imageRemoteStreamContent.ContentLength <= 0) + { + CoverImageUrl = "/assets/eh-event.png"; + DisabledCoverImageButton = true; + return; + } + CoverImageUrl = UrlOptions.Value.AdminApi.EnsureEndsWith('/') + "api/eventhub/admin/event/cover-image/" + EditingEventId; + } private enum EventEditTabs : byte { diff --git a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor index 3040ad8..d9bd704 100644 --- a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor +++ b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor @@ -238,16 +238,16 @@ @L["ChooseProfileImage"] - + - @if (!ProfileImageUrl.IsNullOrWhiteSpace()) + @if (DisabledProfileImageButton) { - + } else { - + } diff --git a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs index 2463493..de5936a 100644 --- a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs @@ -31,6 +31,7 @@ namespace EventHub.Admin.Web.Pages private IFileEntry FileEntry { get; set; } private bool IsLoadingProfileImage { get; set; } private string SelectedTabInEditModal { get; set; } + private bool DisabledProfileImageButton { get; set; } public OrganizationManagement() { @@ -76,7 +77,7 @@ namespace EventHub.Admin.Web.Pages Organization = await OrganizationAppService.GetAsync(EditingOrganizationId); FileEntry = new FileEntry(); - ProfileImageUrl = UrlOptions.Value.AdminApi.EnsureEndsWith('/') + "api/eventhub/admin/organization/cover-image/" + EditingOrganizationId; + await SetProfileImageUrlAsync(); EditingOrganization = ObjectMapper.Map(Organization); EditOrganizationModal.Show(); @@ -87,6 +88,9 @@ namespace EventHub.Admin.Web.Pages await OrganizationAppService.UpdateAsync(EditingOrganizationId, EditingOrganization); await GetOrganizationsAsync(); EditOrganizationModal.Hide(); + + ProfileImageUrl = null; + DisabledProfileImageButton = false; } private void OnDeleteCoverImageButtonClicked() @@ -94,6 +98,7 @@ namespace EventHub.Admin.Web.Pages EditingOrganization.ProfilePictureStreamContent = null; FileEntry = new FileEntry(); ProfileImageUrl = null; + DisabledProfileImageButton = true; IsLoadingProfileImage = false; } @@ -123,18 +128,19 @@ namespace EventHub.Admin.Web.Pages FileName = FileEntry.Name }; - SetProfileImageUrl(FileEntry.Type, stream.ToArray()); - await InvokeAsync(StateHasChanged); - } - - private void SetProfileImageUrl(string contentType, byte[] content) - { - if (content != null) + void SetProfileImageUrl(string contentType, byte[] content) { - contentType = string.IsNullOrWhiteSpace(contentType) ? "image/png" : contentType; - var imageDataUrl = $"data:{contentType};base64,{Convert.ToBase64String(content)}"; - ProfileImageUrl = imageDataUrl; + if (content != null) + { + contentType = string.IsNullOrWhiteSpace(contentType) ? "image/png" : contentType; + var imageDataUrl = $"data:{contentType};base64,{Convert.ToBase64String(content)}"; + ProfileImageUrl = imageDataUrl; + DisabledProfileImageButton = false; + } } + + SetProfileImageUrl(FileEntry.Type, stream.ToArray()); + await InvokeAsync(StateHasChanged); } private void OnProgressedForProfileImage(FileProgressedEventArgs e) @@ -163,6 +169,18 @@ namespace EventHub.Admin.Web.Pages await GetOrganizationsAsync(); } } + + private async Task SetProfileImageUrlAsync() + { + var imageRemoteStreamContent = await OrganizationAppService.GetCoverImageAsync(id: EditingOrganizationId); + if (imageRemoteStreamContent.ContentLength <= 0) + { + ProfileImageUrl = "assets/eh-organization.png"; + DisabledProfileImageButton = true; + return; + } + ProfileImageUrl = UrlOptions.Value.AdminApi.EnsureEndsWith('/') + "api/eventhub/admin/organization/cover-image/" + EditingOrganizationId; + } } public enum TabContentInEditModal : byte diff --git a/src/EventHub.Admin.HttpApi.Host/Images/eh-event.png b/src/EventHub.Admin.Web/wwwroot/assets/eh-event.png similarity index 100% rename from src/EventHub.Admin.HttpApi.Host/Images/eh-event.png rename to src/EventHub.Admin.Web/wwwroot/assets/eh-event.png diff --git a/src/EventHub.Admin.HttpApi.Host/Images/eh-organization.png b/src/EventHub.Admin.Web/wwwroot/assets/eh-organization.png similarity index 100% rename from src/EventHub.Admin.HttpApi.Host/Images/eh-organization.png rename to src/EventHub.Admin.Web/wwwroot/assets/eh-organization.png diff --git a/src/EventHub.Domain.Shared/Organizations/OrganizationContst.cs b/src/EventHub.Domain.Shared/Organizations/OrganizationContst.cs index 712dcf6..1097ad3 100644 --- a/src/EventHub.Domain.Shared/Organizations/OrganizationContst.cs +++ b/src/EventHub.Domain.Shared/Organizations/OrganizationContst.cs @@ -26,5 +26,7 @@ public const int MaxInstagramUsernameLength = 24; public const int MaxMediumUsernameLength = 24; + + public static string[] AllowedProfilePictureExtensions = { ".jpg", ".png" }; } } From ba9000c88c005eb7732462cdd28234da9acfb7c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 7 Oct 2021 16:47:08 +0300 Subject: [PATCH 031/159] Added checkout page --- .../IPaymentRequestAppService.cs | 5 ++- .../PaymentRequestAppService.cs | 12 +++++-- .../Payment.Web/Pages/Payment/Checkout.cshtml | 34 +++++++++++++++++++ .../Pages/Payment/Checkout.cshtml.cs | 32 +++++++++++++++++ .../Payment.Web/Pages/Payment/Index.cshtml | 17 ---------- .../Payment.Web/Pages/Payment/Index.cshtml.cs | 9 ----- 6 files changed, 80 insertions(+), 29 deletions(-) create mode 100644 modules/payment/src/Payment.Web/Pages/Payment/Checkout.cshtml create mode 100644 modules/payment/src/Payment.Web/Pages/Payment/Checkout.cshtml.cs delete mode 100644 modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml delete mode 100644 modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml.cs diff --git a/modules/payment/src/Payment.Application.Contracts/PaymentRequests/IPaymentRequestAppService.cs b/modules/payment/src/Payment.Application.Contracts/PaymentRequests/IPaymentRequestAppService.cs index 0467c6d..b2ddaac 100644 --- a/modules/payment/src/Payment.Application.Contracts/PaymentRequests/IPaymentRequestAppService.cs +++ b/modules/payment/src/Payment.Application.Contracts/PaymentRequests/IPaymentRequestAppService.cs @@ -1,10 +1,13 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Volo.Abp.Application.Services; namespace Payment.PaymentRequests { public interface IPaymentRequestAppService : IApplicationService { + Task GetAsync(Guid id); + Task CreateAsync(PaymentRequestCreationDto input); } } \ No newline at end of file diff --git a/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs b/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs index bfe3504..9f4cc6e 100644 --- a/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs +++ b/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; namespace Payment.PaymentRequests { @@ -10,7 +11,14 @@ namespace Payment.PaymentRequests { _paymentRequestRepository = paymentRequestRepository; } - + + public async Task GetAsync(Guid id) + { + var paymentRequest = await _paymentRequestRepository.GetAsync(id); + + return ObjectMapper.Map(paymentRequest); + } + public async Task CreateAsync(PaymentRequestCreationDto input) { var paymentRequest = new PaymentRequest( diff --git a/modules/payment/src/Payment.Web/Pages/Payment/Checkout.cshtml b/modules/payment/src/Payment.Web/Pages/Payment/Checkout.cshtml new file mode 100644 index 0000000..f1f30e4 --- /dev/null +++ b/modules/payment/src/Payment.Web/Pages/Payment/Checkout.cshtml @@ -0,0 +1,34 @@ +@page +@using Microsoft.Extensions.Localization +@using Payment.Localization +@using Payment.Web.Pages.Payment +@model Payment.Web.Pages.Payment.CheckoutPageModel +@inject IStringLocalizer L + +@section scripts { + + + +} + +

                  Checkout

                  + + + +

                  Product Information

                  +
                  + +
                    +
                  • Product name: @Model.PaymentRequest.ProductName
                  • +
                  • Amount: @Model.PaymentRequest.Amount
                  • +
                  +
                  +
                  + + + + + Complete the payment + + + \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/Pages/Payment/Checkout.cshtml.cs b/modules/payment/src/Payment.Web/Pages/Payment/Checkout.cshtml.cs new file mode 100644 index 0000000..732d2b2 --- /dev/null +++ b/modules/payment/src/Payment.Web/Pages/Payment/Checkout.cshtml.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Payment.PaymentRequests; + +namespace Payment.Web.Pages.Payment +{ + public class CheckoutPageModel : PaymentPageModel + { + [BindProperty(SupportsGet = true)] + public Guid PaymentRequestId { get; set; } + + public PaymentRequestDto PaymentRequest { get; set; } + + private readonly IPaymentRequestAppService _paymentRequestAppService; + + public CheckoutPageModel(IPaymentRequestAppService paymentRequestAppService) + { + _paymentRequestAppService = paymentRequestAppService; + } + + public async Task OnGetAsync() + { + PaymentRequest = await _paymentRequestAppService.GetAsync(PaymentRequestId); + } + + public async Task OnPostAsync() + { + PaymentRequest = await _paymentRequestAppService.GetAsync(PaymentRequestId); + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml b/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml deleted file mode 100644 index 80d5365..0000000 --- a/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml +++ /dev/null @@ -1,17 +0,0 @@ -@page -@using Microsoft.Extensions.Localization -@using Payment.Localization -@using Payment.Web.Pages.Payment -@model Payment.Web.Pages.Payment.IndexModel -@inject IStringLocalizer L - -@section scripts { - - - -} - -@{ -} -

                  Payment

                  -

                  @L["SamplePageMessage"]

                  diff --git a/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml.cs b/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml.cs deleted file mode 100644 index d57c76c..0000000 --- a/modules/payment/src/Payment.Web/Pages/Payment/Index.cshtml.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Payment.Web.Pages.Payment -{ - public class IndexModel : PaymentPageModel - { - public void OnGet() - { - } - } -} \ No newline at end of file From e60fdbbc7ff091d27abce13208ab0851a42dae90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 8 Oct 2021 11:46:42 +0300 Subject: [PATCH 032/159] added PaymentBackgroundServicesModule --- modules/payment/Payment.sln | 7 +++++++ .../Payment.BackgroundServices.csproj | 14 ++++++++++++++ .../PaymentBackgroundServicesModule.cs | 15 +++++++++++++++ .../PaymentRequests/PaymentRequest.cs | 4 +++- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 modules/payment/src/Payment.BackgroundServices/Payment.BackgroundServices.csproj create mode 100644 modules/payment/src/Payment.BackgroundServices/PaymentBackgroundServicesModule.cs diff --git a/modules/payment/Payment.sln b/modules/payment/Payment.sln index 03efb75..0366988 100644 --- a/modules/payment/Payment.sln +++ b/modules/payment/Payment.sln @@ -43,6 +43,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "admin", "admin", "{FC718EF0 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payment.HttpApi.Client", "src\Payment.HttpApi.Client\Payment.HttpApi.Client.csproj", "{3FF65447-69D5-4115-8398-8156FB381215}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payment.BackgroundServices", "src\Payment.BackgroundServices\Payment.BackgroundServices.csproj", "{98CAA357-46A3-48EC-B5D9-27C706862351}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -97,6 +99,10 @@ Global {3FF65447-69D5-4115-8398-8156FB381215}.Debug|Any CPU.Build.0 = Debug|Any CPU {3FF65447-69D5-4115-8398-8156FB381215}.Release|Any CPU.ActiveCfg = Release|Any CPU {3FF65447-69D5-4115-8398-8156FB381215}.Release|Any CPU.Build.0 = Release|Any CPU + {98CAA357-46A3-48EC-B5D9-27C706862351}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98CAA357-46A3-48EC-B5D9-27C706862351}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98CAA357-46A3-48EC-B5D9-27C706862351}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98CAA357-46A3-48EC-B5D9-27C706862351}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -120,6 +126,7 @@ Global {90CB5DC4-C040-45C7-8900-9688B26405BC} = {D3FD0217-A8C7-4BAF-BF77-962F1B055515} {FC718EF0-43EB-4767-9578-95FA0B3727A5} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} {3FF65447-69D5-4115-8398-8156FB381215} = {4EF8B98A-E7A3-48A6-9C1F-10DE32001213} + {98CAA357-46A3-48EC-B5D9-27C706862351} = {E46CF089-D16A-4761-BE24-1B1B1D49225A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6AAFA1C6-603E-13FA-45E5-7910AA9F661D} diff --git a/modules/payment/src/Payment.BackgroundServices/Payment.BackgroundServices.csproj b/modules/payment/src/Payment.BackgroundServices/Payment.BackgroundServices.csproj new file mode 100644 index 0000000..b7c107a --- /dev/null +++ b/modules/payment/src/Payment.BackgroundServices/Payment.BackgroundServices.csproj @@ -0,0 +1,14 @@ + + + + + + netstandard2.0 + Payment + + + + + + + diff --git a/modules/payment/src/Payment.BackgroundServices/PaymentBackgroundServicesModule.cs b/modules/payment/src/Payment.BackgroundServices/PaymentBackgroundServicesModule.cs new file mode 100644 index 0000000..e64fb55 --- /dev/null +++ b/modules/payment/src/Payment.BackgroundServices/PaymentBackgroundServicesModule.cs @@ -0,0 +1,15 @@ +using Volo.Abp.Modularity; + +namespace Payment +{ + [DependsOn( + typeof(PaymentDomainModule) + )] + public class PaymentBackgroundServicesModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + + } + } +} \ No newline at end of file diff --git a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs index 80049b4..648a24e 100644 --- a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs +++ b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs @@ -5,7 +5,7 @@ using Volo.Abp.Domain.Entities.Auditing; namespace Payment.PaymentRequests { - public class PaymentRequest : CreationAuditedAggregateRoot + public class PaymentRequest : CreationAuditedAggregateRoot, ISoftDelete { [CanBeNull] public string CustomerId { get; private set; } @@ -20,6 +20,8 @@ namespace Payment.PaymentRequests public PaymentRequestState State { get; set; } + public bool IsDeleted { get; set; } + public PaymentRequest( Guid id, [CanBeNull] string customerId, From 8f533bd678ef24124c80dfbc7e9ce0abf850cb7d Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Fri, 8 Oct 2021 13:40:48 +0300 Subject: [PATCH 033/159] Use local reference for `Volo.Abp.EntityFrameworkCore.PostgreSql` to prevent version mismatch --- .../EntityFrameworkCore/EventHubDbContext.cs | 5 + ...ventHubDbContextModelCreatingExtensions.cs | 1 + .../EventHub.EntityFrameworkCore.csproj | 4 +- ...Added_IsActive_To_IdentityUser.Designer.cs | 2634 +++++++++++++++++ ...08103457_Added_IsActive_To_IdentityUser.cs | 773 +++++ .../EventHubDbContextModelSnapshot.cs | 200 +- .../EventHub.IdentityServer.csproj | 2 +- 7 files changed, 3519 insertions(+), 100 deletions(-) create mode 100644 src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.Designer.cs create mode 100644 src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs diff --git a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContext.cs b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContext.cs index 50bb830..65d746c 100644 --- a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContext.cs +++ b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContext.cs @@ -4,6 +4,7 @@ using EventHub.Events.Registrations; using EventHub.Organizations; using EventHub.Organizations.Memberships; using Microsoft.EntityFrameworkCore; +using System; using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.BackgroundJobs.EntityFrameworkCore; using Volo.Abp.BlobStoring.Database.EntityFrameworkCore; @@ -60,6 +61,10 @@ namespace EventHub.EntityFrameworkCore { base.OnModelCreating(builder); + //allows to use DateTime with timezone (by default) + //See: https://www.npgsql.org/efcore/release-notes/6.0.html#opting-out-of-the-new-timestamp-mapping-logic + AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); + builder.ConfigurePermissionManagement(); builder.ConfigureSettingManagement(); builder.ConfigureBackgroundJobs(); diff --git a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContextModelCreatingExtensions.cs b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContextModelCreatingExtensions.cs index 262d2bd..c9313ba 100644 --- a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContextModelCreatingExtensions.cs +++ b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContextModelCreatingExtensions.cs @@ -4,6 +4,7 @@ using EventHub.Events.Registrations; using EventHub.Organizations; using EventHub.Organizations.Memberships; using Microsoft.EntityFrameworkCore; +using System; using Volo.Abp; using Volo.Abp.EntityFrameworkCore.Modeling; using Volo.Abp.Identity; diff --git a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj index b33b4f0..eb67420 100644 --- a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj +++ b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj @@ -8,13 +8,13 @@ - + - + diff --git a/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.Designer.cs b/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.Designer.cs new file mode 100644 index 0000000..77f4f15 --- /dev/null +++ b/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.Designer.cs @@ -0,0 +1,2634 @@ +// +using System; +using EventHub.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace EventHub.Migrations +{ + [DbContext(typeof(EventHubDbContext))] + [Migration("20211008103457_Added_IsActive_To_IdentityUser")] + partial class Added_IsActive_To_IdentityUser + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "6.0.0-rc.1.21452.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("EventHub.Countries.Country", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("EhCountries", (string)null); + }); + + modelBuilder.Entity("EventHub.Events.Event", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Capacity") + .HasColumnType("integer"); + + b.Property("City") + .HasMaxLength(32) + .HasColumnType("character varying(32)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CountryId") + .HasColumnType("uuid"); + + b.Property("CountryName") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("EndTime") + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsEmailSentToMembers") + .HasColumnType("boolean"); + + b.Property("IsOnline") + .HasColumnType("boolean"); + + b.Property("IsRemindingEmailSent") + .HasColumnType("boolean"); + + b.Property("IsTimingChangeEmailSent") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(true); + + b.Property("Language") + .HasMaxLength(16) + .HasColumnType("character varying(16)"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OnlineLink") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("OrganizationId") + .HasColumnType("uuid"); + + b.Property("StartTime") + .HasColumnType("timestamp with time zone"); + + b.Property("TimingChangeCount") + .HasColumnType("integer"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("Url") + .IsRequired() + .HasMaxLength(69) + .HasColumnType("character varying(69)"); + + b.Property("UrlCode") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)"); + + b.HasKey("Id"); + + b.HasIndex("CountryId"); + + b.HasIndex("IsEmailSentToMembers"); + + b.HasIndex("StartTime"); + + b.HasIndex("UrlCode"); + + b.HasIndex("IsRemindingEmailSent", "StartTime"); + + b.HasIndex("OrganizationId", "StartTime"); + + b.ToTable("EhEvents", (string)null); + }); + + modelBuilder.Entity("EventHub.Events.Registrations.EventRegistration", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EventId") + .HasColumnType("uuid"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.HasIndex("EventId", "UserId"); + + b.ToTable("EhEventRegistrations", (string)null); + }); + + modelBuilder.Entity("EventHub.Organizations.Memberships.OrganizationMembership", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("OrganizationId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.HasIndex("OrganizationId", "UserId"); + + b.ToTable("EhOrganizationMemberships", (string)null); + }); + + modelBuilder.Entity("EventHub.Organizations.Organization", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("character varying(1000)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FacebookUsername") + .HasColumnType("text"); + + b.Property("GitHubUsername") + .HasColumnType("text"); + + b.Property("InstagramUsername") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MediumUsername") + .HasColumnType("text"); + + b.Property("MemberCount") + .HasColumnType("integer"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("character varying(32)"); + + b.Property("OwnerUserId") + .HasColumnType("uuid"); + + b.Property("TwitterUsername") + .HasColumnType("text"); + + b.Property("Website") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("DisplayName"); + + b.HasIndex("Name"); + + b.HasIndex("OwnerUserId"); + + b.ToTable("EhOrganizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("character varying(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("text"); + + b.Property("ExecutionDuration") + .HasColumnType("integer") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("integer") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uuid") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uuid") + .HasColumnName("ImpersonatorUserId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasColumnType("text"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AuditLogId") + .HasColumnType("uuid") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("integer") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AuditLogId") + .HasColumnType("uuid") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("smallint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uuid"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("EntityChangeId") + .HasColumnType("uuid"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("character varying(1048576)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("LastTryTime") + .HasColumnType("timestamp with time zone"); + + b.Property("NextTryTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContainerId") + .HasColumnType("uuid"); + + b.Property("Content") + .HasMaxLength(2147483647) + .HasColumnType("bytea"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ContainerId"); + + b.HasIndex("TenantId", "ContainerId", "Name"); + + b.ToTable("AbpBlobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name"); + + b.ToTable("AbpBlobContainers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("boolean"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("Required") + .HasColumnType("boolean"); + + b.Property("ValueType") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("SourceTenantId") + .HasColumnType("uuid"); + + b.Property("SourceUserId") + .HasColumnType("uuid"); + + b.Property("TargetTenantId") + .HasColumnType("uuid"); + + b.Property("TargetUserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique(); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("boolean") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("boolean") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("character varying(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("character varying(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("character varying(96)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("SecurityStamp"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("character varying(196)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("character varying(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AllowedAccessTokenSigningAlgorithms") + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("character varying(1000)"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerApiResources", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => + { + b.Property("ApiResourceId") + .HasColumnType("uuid"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.HasKey("ApiResourceId", "Type"); + + b.ToTable("IdentityServerApiResourceClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => + { + b.Property("ApiResourceId") + .HasColumnType("uuid"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("Value") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.HasKey("ApiResourceId", "Key", "Value"); + + b.ToTable("IdentityServerApiResourceProperties", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => + { + b.Property("ApiResourceId") + .HasColumnType("uuid"); + + b.Property("Scope") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.HasKey("ApiResourceId", "Scope"); + + b.ToTable("IdentityServerApiResourceScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => + { + b.Property("ApiResourceId") + .HasColumnType("uuid"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("Value") + .HasMaxLength(4000) + .HasColumnType("character varying(4000)"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("character varying(1000)"); + + b.Property("Expiration") + .HasColumnType("timestamp with time zone"); + + b.HasKey("ApiResourceId", "Type", "Value"); + + b.ToTable("IdentityServerApiResourceSecrets", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("character varying(1000)"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Emphasize") + .HasColumnType("boolean"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Required") + .HasColumnType("boolean"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerApiScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => + { + b.Property("ApiScopeId") + .HasColumnType("uuid"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.HasKey("ApiScopeId", "Type"); + + b.ToTable("IdentityServerApiScopeClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => + { + b.Property("ApiScopeId") + .HasColumnType("uuid"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("Value") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.HasKey("ApiScopeId", "Key", "Value"); + + b.ToTable("IdentityServerApiScopeProperties", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AbsoluteRefreshTokenLifetime") + .HasColumnType("integer"); + + b.Property("AccessTokenLifetime") + .HasColumnType("integer"); + + b.Property("AccessTokenType") + .HasColumnType("integer"); + + b.Property("AllowAccessTokensViaBrowser") + .HasColumnType("boolean"); + + b.Property("AllowOfflineAccess") + .HasColumnType("boolean"); + + b.Property("AllowPlainTextPkce") + .HasColumnType("boolean"); + + b.Property("AllowRememberConsent") + .HasColumnType("boolean"); + + b.Property("AllowedIdentityTokenSigningAlgorithms") + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("AlwaysIncludeUserClaimsInIdToken") + .HasColumnType("boolean"); + + b.Property("AlwaysSendClientClaims") + .HasColumnType("boolean"); + + b.Property("AuthorizationCodeLifetime") + .HasColumnType("integer"); + + b.Property("BackChannelLogoutSessionRequired") + .HasColumnType("boolean"); + + b.Property("BackChannelLogoutUri") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("ClientClaimsPrefix") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ClientName") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ClientUri") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentLifetime") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("character varying(1000)"); + + b.Property("DeviceCodeLifetime") + .HasColumnType("integer"); + + b.Property("EnableLocalLogin") + .HasColumnType("boolean"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FrontChannelLogoutSessionRequired") + .HasColumnType("boolean"); + + b.Property("FrontChannelLogoutUri") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("IdentityTokenLifetime") + .HasColumnType("integer"); + + b.Property("IncludeJwtId") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("PairWiseSubjectSalt") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ProtocolType") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("RefreshTokenExpiration") + .HasColumnType("integer"); + + b.Property("RefreshTokenUsage") + .HasColumnType("integer"); + + b.Property("RequireClientSecret") + .HasColumnType("boolean"); + + b.Property("RequireConsent") + .HasColumnType("boolean"); + + b.Property("RequirePkce") + .HasColumnType("boolean"); + + b.Property("RequireRequestObject") + .HasColumnType("boolean"); + + b.Property("SlidingRefreshTokenLifetime") + .HasColumnType("integer"); + + b.Property("UpdateAccessTokenClaimsOnRefresh") + .HasColumnType("boolean"); + + b.Property("UserCodeType") + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("UserSsoLifetime") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("IdentityServerClients", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("Value") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("ClientId", "Type", "Value"); + + b.ToTable("IdentityServerClientClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("Origin") + .HasMaxLength(150) + .HasColumnType("character varying(150)"); + + b.HasKey("ClientId", "Origin"); + + b.ToTable("IdentityServerClientCorsOrigins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("GrantType") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("ClientId", "GrantType"); + + b.ToTable("IdentityServerClientGrantTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("Provider") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.HasKey("ClientId", "Provider"); + + b.ToTable("IdentityServerClientIdPRestrictions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("PostLogoutRedirectUri") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.HasKey("ClientId", "PostLogoutRedirectUri"); + + b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("Value") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.HasKey("ClientId", "Key", "Value"); + + b.ToTable("IdentityServerClientProperties", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("RedirectUri") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.HasKey("ClientId", "RedirectUri"); + + b.ToTable("IdentityServerClientRedirectUris", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("Scope") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.HasKey("ClientId", "Scope"); + + b.ToTable("IdentityServerClientScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + { + b.Property("ClientId") + .HasColumnType("uuid"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("Value") + .HasMaxLength(4000) + .HasColumnType("character varying(4000)"); + + b.Property("Description") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("Expiration") + .HasColumnType("timestamp with time zone"); + + b.HasKey("ClientId", "Type", "Value"); + + b.ToTable("IdentityServerClientSecrets", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Data") + .IsRequired() + .HasMaxLength(50000) + .HasColumnType("character varying(50000)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("DeviceCode") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Expiration") + .IsRequired() + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("SessionId") + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("SubjectId") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("UserCode") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.HasKey("Id"); + + b.HasIndex("DeviceCode") + .IsUnique(); + + b.HasIndex("Expiration"); + + b.HasIndex("UserCode"); + + b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + { + b.Property("Key") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsumedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Data") + .IsRequired() + .HasMaxLength(50000) + .HasColumnType("character varying(50000)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Expiration") + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("SessionId") + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("SubjectId") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.HasKey("Key"); + + b.HasIndex("Expiration"); + + b.HasIndex("SubjectId", "ClientId", "Type"); + + b.HasIndex("SubjectId", "SessionId", "Type"); + + b.ToTable("IdentityServerPersistedGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("character varying(1000)"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Emphasize") + .HasColumnType("boolean"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Required") + .HasColumnType("boolean"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerIdentityResources", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + { + b.Property("IdentityResourceId") + .HasColumnType("uuid"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.HasKey("IdentityResourceId", "Type"); + + b.ToTable("IdentityServerIdentityResourceClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => + { + b.Property("IdentityResourceId") + .HasColumnType("uuid"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("Value") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.HasKey("IdentityResourceId", "Key", "Value"); + + b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("character varying(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("EventHub.Events.Event", b => + { + b.HasOne("EventHub.Countries.Country", null) + .WithMany() + .HasForeignKey("CountryId") + .OnDelete(DeleteBehavior.NoAction); + + b.HasOne("EventHub.Organizations.Organization", null) + .WithMany() + .HasForeignKey("OrganizationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + }); + + modelBuilder.Entity("EventHub.Events.Registrations.EventRegistration", b => + { + b.HasOne("EventHub.Events.Event", null) + .WithMany() + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + }); + + modelBuilder.Entity("EventHub.Organizations.Memberships.OrganizationMembership", b => + { + b.HasOne("EventHub.Organizations.Organization", null) + .WithMany() + .HasForeignKey("OrganizationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + }); + + modelBuilder.Entity("EventHub.Organizations.Organization", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("OwnerUserId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => + { + b.HasOne("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", null) + .WithMany() + .HasForeignKey("ContainerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("UserClaims") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Properties") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Scopes") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Secrets") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) + .WithMany("UserClaims") + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) + .WithMany("Properties") + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("Claims") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedCorsOrigins") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedGrantTypes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("IdentityProviderRestrictions") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("PostLogoutRedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("Properties") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("RedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedScopes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("ClientSecrets") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) + .WithMany("UserClaims") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) + .WithMany("Properties") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + { + b.Navigation("Properties"); + + b.Navigation("Scopes"); + + b.Navigation("Secrets"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => + { + b.Navigation("Properties"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => + { + b.Navigation("AllowedCorsOrigins"); + + b.Navigation("AllowedGrantTypes"); + + b.Navigation("AllowedScopes"); + + b.Navigation("Claims"); + + b.Navigation("ClientSecrets"); + + b.Navigation("IdentityProviderRestrictions"); + + b.Navigation("PostLogoutRedirectUris"); + + b.Navigation("Properties"); + + b.Navigation("RedirectUris"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + { + b.Navigation("Properties"); + + b.Navigation("UserClaims"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs b/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs new file mode 100644 index 0000000..c642516 --- /dev/null +++ b/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs @@ -0,0 +1,773 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace EventHub.Migrations +{ + public partial class Added_IsActive_To_IdentityUser : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "Expiration", + table: "IdentityServerPersistedGrants", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerPersistedGrants", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "ConsumedTime", + table: "IdentityServerPersistedGrants", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "IdentityServerIdentityResources", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "IdentityServerIdentityResources", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerIdentityResources", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "Expiration", + table: "IdentityServerDeviceFlowCodes", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerDeviceFlowCodes", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "Expiration", + table: "IdentityServerClientSecrets", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "IdentityServerClients", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "IdentityServerClients", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerClients", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "IdentityServerApiScopes", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "IdentityServerApiScopes", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerApiScopes", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "Expiration", + table: "IdentityServerApiResourceSecrets", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "IdentityServerApiResources", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "IdentityServerApiResources", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerApiResources", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "EhOrganizations", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "EhOrganizations", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "EhOrganizations", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "EhOrganizationMemberships", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "StartTime", + table: "EhEvents", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "EhEvents", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "EndTime", + table: "EhEvents", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "EhEvents", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "EhEvents", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "EhEventRegistrations", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "AbpUsers", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "AbpUsers", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpUsers", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AddColumn( + name: "IsActive", + table: "AbpUsers", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpUserOrganizationUnits", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpSecurityLogs", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "AbpOrganizationUnits", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "AbpOrganizationUnits", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpOrganizationUnits", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpOrganizationUnitRoles", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "ChangeTime", + table: "AbpEntityChanges", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "NextTryTime", + table: "AbpBackgroundJobs", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "LastTryTime", + table: "AbpBackgroundJobs", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpBackgroundJobs", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "ExecutionTime", + table: "AbpAuditLogs", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "ExecutionTime", + table: "AbpAuditLogActions", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "IsActive", + table: "AbpUsers"); + + migrationBuilder.AlterColumn( + name: "Expiration", + table: "IdentityServerPersistedGrants", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerPersistedGrants", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "ConsumedTime", + table: "IdentityServerPersistedGrants", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "IdentityServerIdentityResources", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "IdentityServerIdentityResources", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerIdentityResources", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "Expiration", + table: "IdentityServerDeviceFlowCodes", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerDeviceFlowCodes", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "Expiration", + table: "IdentityServerClientSecrets", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "IdentityServerClients", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "IdentityServerClients", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerClients", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "IdentityServerApiScopes", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "IdentityServerApiScopes", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerApiScopes", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "Expiration", + table: "IdentityServerApiResourceSecrets", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "IdentityServerApiResources", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "IdentityServerApiResources", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "IdentityServerApiResources", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "EhOrganizations", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "EhOrganizations", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "EhOrganizations", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "EhOrganizationMemberships", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "StartTime", + table: "EhEvents", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "EhEvents", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "EndTime", + table: "EhEvents", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "EhEvents", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "EhEvents", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "EhEventRegistrations", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "AbpUsers", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "AbpUsers", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpUsers", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpUserOrganizationUnits", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpSecurityLogs", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "LastModificationTime", + table: "AbpOrganizationUnits", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "DeletionTime", + table: "AbpOrganizationUnits", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpOrganizationUnits", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpOrganizationUnitRoles", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "ChangeTime", + table: "AbpEntityChanges", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "NextTryTime", + table: "AbpBackgroundJobs", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "LastTryTime", + table: "AbpBackgroundJobs", + type: "timestamp without time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "CreationTime", + table: "AbpBackgroundJobs", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "ExecutionTime", + table: "AbpAuditLogs", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "ExecutionTime", + table: "AbpAuditLogActions", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + } + } +} diff --git a/src/EventHub.EntityFrameworkCore/Migrations/EventHubDbContextModelSnapshot.cs b/src/EventHub.EntityFrameworkCore/Migrations/EventHubDbContextModelSnapshot.cs index 9e891c7..d9d5626 100644 --- a/src/EventHub.EntityFrameworkCore/Migrations/EventHubDbContextModelSnapshot.cs +++ b/src/EventHub.EntityFrameworkCore/Migrations/EventHubDbContextModelSnapshot.cs @@ -7,6 +7,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using Volo.Abp.EntityFrameworkCore; +#nullable disable + namespace EventHub.Migrations { [DbContext(typeof(EventHubDbContext))] @@ -17,9 +19,10 @@ namespace EventHub.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) - .HasAnnotation("Relational:MaxIdentifierLength", 63) - .HasAnnotation("ProductVersion", "5.0.8") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasAnnotation("ProductVersion", "6.0.0-rc.1.21452.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("EventHub.Countries.Country", b => { @@ -35,7 +38,7 @@ namespace EventHub.Migrations b.HasIndex("Name"); - b.ToTable("EhCountries"); + b.ToTable("EhCountries", (string)null); }); modelBuilder.Entity("EventHub.Events.Event", b => @@ -63,7 +66,7 @@ namespace EventHub.Migrations .HasColumnType("text"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -75,7 +78,7 @@ namespace EventHub.Migrations .HasColumnName("DeleterId"); b.Property("DeletionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("DeletionTime"); b.Property("Description") @@ -84,7 +87,7 @@ namespace EventHub.Migrations .HasColumnType("character varying(2000)"); b.Property("EndTime") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("ExtraProperties") .HasColumnType("text") @@ -115,7 +118,7 @@ namespace EventHub.Migrations .HasColumnType("character varying(16)"); b.Property("LastModificationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("LastModificationTime"); b.Property("LastModifierId") @@ -130,7 +133,7 @@ namespace EventHub.Migrations .HasColumnType("uuid"); b.Property("StartTime") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("TimingChangeCount") .HasColumnType("integer"); @@ -164,7 +167,7 @@ namespace EventHub.Migrations b.HasIndex("OrganizationId", "StartTime"); - b.ToTable("EhEvents"); + b.ToTable("EhEvents", (string)null); }); modelBuilder.Entity("EventHub.Events.Registrations.EventRegistration", b => @@ -179,7 +182,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -202,7 +205,7 @@ namespace EventHub.Migrations b.HasIndex("EventId", "UserId"); - b.ToTable("EhEventRegistrations"); + b.ToTable("EhEventRegistrations", (string)null); }); modelBuilder.Entity("EventHub.Organizations.Memberships.OrganizationMembership", b => @@ -217,7 +220,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -240,7 +243,7 @@ namespace EventHub.Migrations b.HasIndex("OrganizationId", "UserId"); - b.ToTable("EhOrganizationMemberships"); + b.ToTable("EhOrganizationMemberships", (string)null); }); modelBuilder.Entity("EventHub.Organizations.Organization", b => @@ -255,7 +258,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -267,7 +270,7 @@ namespace EventHub.Migrations .HasColumnName("DeleterId"); b.Property("DeletionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("DeletionTime"); b.Property("Description") @@ -300,7 +303,7 @@ namespace EventHub.Migrations .HasColumnName("IsDeleted"); b.Property("LastModificationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("LastModificationTime"); b.Property("LastModifierId") @@ -335,7 +338,7 @@ namespace EventHub.Migrations b.HasIndex("OwnerUserId"); - b.ToTable("EhOrganizations"); + b.ToTable("EhOrganizations", (string)null); }); modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => @@ -393,7 +396,7 @@ namespace EventHub.Migrations .HasColumnName("ExecutionDuration"); b.Property("ExecutionTime") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("ExtraProperties") .HasColumnType("text") @@ -443,7 +446,7 @@ namespace EventHub.Migrations b.HasIndex("TenantId", "UserId", "ExecutionTime"); - b.ToTable("AbpAuditLogs"); + b.ToTable("AbpAuditLogs", (string)null); }); modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => @@ -461,7 +464,7 @@ namespace EventHub.Migrations .HasColumnName("ExecutionDuration"); b.Property("ExecutionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("ExecutionTime"); b.Property("ExtraProperties") @@ -493,7 +496,7 @@ namespace EventHub.Migrations b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); - b.ToTable("AbpAuditLogActions"); + b.ToTable("AbpAuditLogActions", (string)null); }); modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => @@ -507,7 +510,7 @@ namespace EventHub.Migrations .HasColumnName("AuditLogId"); b.Property("ChangeTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("ChangeTime"); b.Property("ChangeType") @@ -543,7 +546,7 @@ namespace EventHub.Migrations b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); - b.ToTable("AbpEntityChanges"); + b.ToTable("AbpEntityChanges", (string)null); }); modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => @@ -585,7 +588,7 @@ namespace EventHub.Migrations b.HasIndex("EntityChangeId"); - b.ToTable("AbpEntityPropertyChanges"); + b.ToTable("AbpEntityPropertyChanges", (string)null); }); modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => @@ -601,7 +604,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("ExtraProperties") @@ -624,10 +627,10 @@ namespace EventHub.Migrations .HasColumnType("character varying(128)"); b.Property("LastTryTime") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("NextTryTime") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("Priority") .ValueGeneratedOnAdd() @@ -643,7 +646,7 @@ namespace EventHub.Migrations b.HasIndex("IsAbandoned", "NextTryTime"); - b.ToTable("AbpBackgroundJobs"); + b.ToTable("AbpBackgroundJobs", (string)null); }); modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => @@ -684,7 +687,7 @@ namespace EventHub.Migrations b.HasIndex("TenantId", "ContainerId", "Name"); - b.ToTable("AbpBlobs"); + b.ToTable("AbpBlobs", (string)null); }); modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", b => @@ -716,7 +719,7 @@ namespace EventHub.Migrations b.HasIndex("TenantId", "Name"); - b.ToTable("AbpBlobContainers"); + b.ToTable("AbpBlobContainers", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => @@ -762,7 +765,7 @@ namespace EventHub.Migrations b.HasKey("Id"); - b.ToTable("AbpClaimTypes"); + b.ToTable("AbpClaimTypes", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => @@ -787,7 +790,7 @@ namespace EventHub.Migrations b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") .IsUnique(); - b.ToTable("AbpLinkUsers"); + b.ToTable("AbpLinkUsers", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => @@ -835,7 +838,7 @@ namespace EventHub.Migrations b.HasIndex("NormalizedName"); - b.ToTable("AbpRoles"); + b.ToTable("AbpRoles", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => @@ -863,7 +866,7 @@ namespace EventHub.Migrations b.HasIndex("RoleId"); - b.ToTable("AbpRoleClaims"); + b.ToTable("AbpRoleClaims", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => @@ -902,7 +905,7 @@ namespace EventHub.Migrations .HasColumnType("character varying(64)"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("ExtraProperties") .HasColumnType("text") @@ -937,7 +940,7 @@ namespace EventHub.Migrations b.HasIndex("TenantId", "UserId"); - b.ToTable("AbpSecurityLogs"); + b.ToTable("AbpSecurityLogs", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => @@ -958,7 +961,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -970,7 +973,7 @@ namespace EventHub.Migrations .HasColumnName("DeleterId"); b.Property("DeletionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("DeletionTime"); b.Property("Email") @@ -989,6 +992,9 @@ namespace EventHub.Migrations .HasColumnType("text") .HasColumnName("ExtraProperties"); + b.Property("IsActive") + .HasColumnType("boolean"); + b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("boolean") @@ -1002,7 +1008,7 @@ namespace EventHub.Migrations .HasColumnName("IsExternal"); b.Property("LastModificationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("LastModificationTime"); b.Property("LastModifierId") @@ -1088,7 +1094,7 @@ namespace EventHub.Migrations b.HasIndex("UserName"); - b.ToTable("AbpUsers"); + b.ToTable("AbpUsers", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => @@ -1116,7 +1122,7 @@ namespace EventHub.Migrations b.HasIndex("UserId"); - b.ToTable("AbpUserClaims"); + b.ToTable("AbpUserClaims", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => @@ -1145,7 +1151,7 @@ namespace EventHub.Migrations b.HasIndex("LoginProvider", "ProviderKey"); - b.ToTable("AbpUserLogins"); + b.ToTable("AbpUserLogins", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => @@ -1157,7 +1163,7 @@ namespace EventHub.Migrations .HasColumnType("uuid"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -1172,7 +1178,7 @@ namespace EventHub.Migrations b.HasIndex("UserId", "OrganizationUnitId"); - b.ToTable("AbpUserOrganizationUnits"); + b.ToTable("AbpUserOrganizationUnits", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => @@ -1191,7 +1197,7 @@ namespace EventHub.Migrations b.HasIndex("RoleId", "UserId"); - b.ToTable("AbpUserRoles"); + b.ToTable("AbpUserRoles", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => @@ -1216,7 +1222,7 @@ namespace EventHub.Migrations b.HasKey("UserId", "LoginProvider", "Name"); - b.ToTable("AbpUserTokens"); + b.ToTable("AbpUserTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => @@ -1237,7 +1243,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -1249,7 +1255,7 @@ namespace EventHub.Migrations .HasColumnName("DeleterId"); b.Property("DeletionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("DeletionTime"); b.Property("DisplayName") @@ -1269,7 +1275,7 @@ namespace EventHub.Migrations .HasColumnName("IsDeleted"); b.Property("LastModificationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("LastModificationTime"); b.Property("LastModifierId") @@ -1289,7 +1295,7 @@ namespace EventHub.Migrations b.HasIndex("ParentId"); - b.ToTable("AbpOrganizationUnits"); + b.ToTable("AbpOrganizationUnits", (string)null); }); modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => @@ -1301,7 +1307,7 @@ namespace EventHub.Migrations .HasColumnType("uuid"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -1316,7 +1322,7 @@ namespace EventHub.Migrations b.HasIndex("RoleId", "OrganizationUnitId"); - b.ToTable("AbpOrganizationUnitRoles"); + b.ToTable("AbpOrganizationUnitRoles", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => @@ -1336,7 +1342,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -1348,7 +1354,7 @@ namespace EventHub.Migrations .HasColumnName("DeleterId"); b.Property("DeletionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("DeletionTime"); b.Property("Description") @@ -1373,7 +1379,7 @@ namespace EventHub.Migrations .HasColumnName("IsDeleted"); b.Property("LastModificationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("LastModificationTime"); b.Property("LastModifierId") @@ -1390,7 +1396,7 @@ namespace EventHub.Migrations b.HasKey("Id"); - b.ToTable("IdentityServerApiResources"); + b.ToTable("IdentityServerApiResources", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => @@ -1404,7 +1410,7 @@ namespace EventHub.Migrations b.HasKey("ApiResourceId", "Type"); - b.ToTable("IdentityServerApiResourceClaims"); + b.ToTable("IdentityServerApiResourceClaims", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => @@ -1422,7 +1428,7 @@ namespace EventHub.Migrations b.HasKey("ApiResourceId", "Key", "Value"); - b.ToTable("IdentityServerApiResourceProperties"); + b.ToTable("IdentityServerApiResourceProperties", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => @@ -1436,7 +1442,7 @@ namespace EventHub.Migrations b.HasKey("ApiResourceId", "Scope"); - b.ToTable("IdentityServerApiResourceScopes"); + b.ToTable("IdentityServerApiResourceScopes", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => @@ -1457,11 +1463,11 @@ namespace EventHub.Migrations .HasColumnType("character varying(1000)"); b.Property("Expiration") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.HasKey("ApiResourceId", "Type", "Value"); - b.ToTable("IdentityServerApiResourceSecrets"); + b.ToTable("IdentityServerApiResourceSecrets", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => @@ -1477,7 +1483,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -1489,7 +1495,7 @@ namespace EventHub.Migrations .HasColumnName("DeleterId"); b.Property("DeletionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("DeletionTime"); b.Property("Description") @@ -1517,7 +1523,7 @@ namespace EventHub.Migrations .HasColumnName("IsDeleted"); b.Property("LastModificationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("LastModificationTime"); b.Property("LastModifierId") @@ -1537,7 +1543,7 @@ namespace EventHub.Migrations b.HasKey("Id"); - b.ToTable("IdentityServerApiScopes"); + b.ToTable("IdentityServerApiScopes", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => @@ -1551,7 +1557,7 @@ namespace EventHub.Migrations b.HasKey("ApiScopeId", "Type"); - b.ToTable("IdentityServerApiScopeClaims"); + b.ToTable("IdentityServerApiScopeClaims", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => @@ -1569,7 +1575,7 @@ namespace EventHub.Migrations b.HasKey("ApiScopeId", "Key", "Value"); - b.ToTable("IdentityServerApiScopeProperties"); + b.ToTable("IdentityServerApiScopeProperties", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => @@ -1646,7 +1652,7 @@ namespace EventHub.Migrations .HasColumnType("integer"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -1658,7 +1664,7 @@ namespace EventHub.Migrations .HasColumnName("DeleterId"); b.Property("DeletionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("DeletionTime"); b.Property("Description") @@ -1698,7 +1704,7 @@ namespace EventHub.Migrations .HasColumnName("IsDeleted"); b.Property("LastModificationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("LastModificationTime"); b.Property("LastModifierId") @@ -1753,7 +1759,7 @@ namespace EventHub.Migrations b.HasIndex("ClientId"); - b.ToTable("IdentityServerClients"); + b.ToTable("IdentityServerClients", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => @@ -1771,7 +1777,7 @@ namespace EventHub.Migrations b.HasKey("ClientId", "Type", "Value"); - b.ToTable("IdentityServerClientClaims"); + b.ToTable("IdentityServerClientClaims", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => @@ -1785,7 +1791,7 @@ namespace EventHub.Migrations b.HasKey("ClientId", "Origin"); - b.ToTable("IdentityServerClientCorsOrigins"); + b.ToTable("IdentityServerClientCorsOrigins", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => @@ -1799,7 +1805,7 @@ namespace EventHub.Migrations b.HasKey("ClientId", "GrantType"); - b.ToTable("IdentityServerClientGrantTypes"); + b.ToTable("IdentityServerClientGrantTypes", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => @@ -1813,7 +1819,7 @@ namespace EventHub.Migrations b.HasKey("ClientId", "Provider"); - b.ToTable("IdentityServerClientIdPRestrictions"); + b.ToTable("IdentityServerClientIdPRestrictions", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => @@ -1827,7 +1833,7 @@ namespace EventHub.Migrations b.HasKey("ClientId", "PostLogoutRedirectUri"); - b.ToTable("IdentityServerClientPostLogoutRedirectUris"); + b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => @@ -1845,7 +1851,7 @@ namespace EventHub.Migrations b.HasKey("ClientId", "Key", "Value"); - b.ToTable("IdentityServerClientProperties"); + b.ToTable("IdentityServerClientProperties", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => @@ -1859,7 +1865,7 @@ namespace EventHub.Migrations b.HasKey("ClientId", "RedirectUri"); - b.ToTable("IdentityServerClientRedirectUris"); + b.ToTable("IdentityServerClientRedirectUris", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => @@ -1873,7 +1879,7 @@ namespace EventHub.Migrations b.HasKey("ClientId", "Scope"); - b.ToTable("IdentityServerClientScopes"); + b.ToTable("IdentityServerClientScopes", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => @@ -1894,11 +1900,11 @@ namespace EventHub.Migrations .HasColumnType("character varying(2000)"); b.Property("Expiration") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.HasKey("ClientId", "Type", "Value"); - b.ToTable("IdentityServerClientSecrets"); + b.ToTable("IdentityServerClientSecrets", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => @@ -1919,7 +1925,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -1942,7 +1948,7 @@ namespace EventHub.Migrations b.Property("Expiration") .IsRequired() - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("ExtraProperties") .HasColumnType("text") @@ -1970,7 +1976,7 @@ namespace EventHub.Migrations b.HasIndex("UserCode"); - b.ToTable("IdentityServerDeviceFlowCodes"); + b.ToTable("IdentityServerDeviceFlowCodes", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => @@ -1991,10 +1997,10 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("ConsumedTime") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("Data") .IsRequired() @@ -2006,7 +2012,7 @@ namespace EventHub.Migrations .HasColumnType("character varying(200)"); b.Property("Expiration") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("ExtraProperties") .HasColumnType("text") @@ -2036,7 +2042,7 @@ namespace EventHub.Migrations b.HasIndex("SubjectId", "SessionId", "Type"); - b.ToTable("IdentityServerPersistedGrants"); + b.ToTable("IdentityServerPersistedGrants", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => @@ -2052,7 +2058,7 @@ namespace EventHub.Migrations .HasColumnName("ConcurrencyStamp"); b.Property("CreationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("CreationTime"); b.Property("CreatorId") @@ -2064,7 +2070,7 @@ namespace EventHub.Migrations .HasColumnName("DeleterId"); b.Property("DeletionTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("DeletionTime"); b.Property("Description") @@ -2092,7 +2098,7 @@ namespace EventHub.Migrations .HasColumnName("IsDeleted"); b.Property("LastModificationTime") - .HasColumnType("timestamp without time zone") + .HasColumnType("timestamp with time zone") .HasColumnName("LastModificationTime"); b.Property("LastModifierId") @@ -2112,7 +2118,7 @@ namespace EventHub.Migrations b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources"); + b.ToTable("IdentityServerIdentityResources", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => @@ -2126,7 +2132,7 @@ namespace EventHub.Migrations b.HasKey("IdentityResourceId", "Type"); - b.ToTable("IdentityServerIdentityResourceClaims"); + b.ToTable("IdentityServerIdentityResourceClaims", (string)null); }); modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => @@ -2144,7 +2150,7 @@ namespace EventHub.Migrations b.HasKey("IdentityResourceId", "Key", "Value"); - b.ToTable("IdentityServerIdentityResourceProperties"); + b.ToTable("IdentityServerIdentityResourceProperties", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2176,7 +2182,7 @@ namespace EventHub.Migrations b.HasIndex("Name", "ProviderName", "ProviderKey"); - b.ToTable("AbpPermissionGrants"); + b.ToTable("AbpPermissionGrants", (string)null); }); modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => @@ -2207,7 +2213,7 @@ namespace EventHub.Migrations b.HasIndex("Name", "ProviderName", "ProviderKey"); - b.ToTable("AbpSettings"); + b.ToTable("AbpSettings", (string)null); }); modelBuilder.Entity("EventHub.Events.Event", b => diff --git a/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj b/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj index bb6787e..11cec43 100644 --- a/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj +++ b/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj @@ -38,7 +38,7 @@ - + From 7ab509cc214ad56c35bed4e637cdc232df343557 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Fri, 8 Oct 2021 13:51:34 +0300 Subject: [PATCH 034/159] Set default value as true for "IsActive" property in migration --- .../Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs b/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs index c642516..2898bd8 100644 --- a/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs +++ b/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs @@ -288,7 +288,7 @@ namespace EventHub.Migrations table: "AbpUsers", type: "boolean", nullable: false, - defaultValue: false); + defaultValue: true); migrationBuilder.AlterColumn( name: "CreationTime", From 6bcb6d205ec56c1e87a491344242c0e404849902 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Fri, 8 Oct 2021 14:05:18 +0300 Subject: [PATCH 035/159] Remove local reference for `Volo.Abp.EntityFrameworkCore.PostgreSql` package --- .../EventHub.EntityFrameworkCore.csproj | 5 +++-- ...0211008110036_Added_IsActive_To_IdentityUser.Designer.cs} | 2 +- ...r.cs => 20211008110036_Added_IsActive_To_IdentityUser.cs} | 0 3 files changed, 4 insertions(+), 3 deletions(-) rename src/EventHub.EntityFrameworkCore/Migrations/{20211008103457_Added_IsActive_To_IdentityUser.Designer.cs => 20211008110036_Added_IsActive_To_IdentityUser.Designer.cs} (99%) rename src/EventHub.EntityFrameworkCore/Migrations/{20211008103457_Added_IsActive_To_IdentityUser.cs => 20211008110036_Added_IsActive_To_IdentityUser.cs} (100%) diff --git a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj index eb67420..80c9aea 100644 --- a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj +++ b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj @@ -1,4 +1,4 @@ - + @@ -14,7 +14,8 @@ - + + diff --git a/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.Designer.cs b/src/EventHub.EntityFrameworkCore/Migrations/20211008110036_Added_IsActive_To_IdentityUser.Designer.cs similarity index 99% rename from src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.Designer.cs rename to src/EventHub.EntityFrameworkCore/Migrations/20211008110036_Added_IsActive_To_IdentityUser.Designer.cs index 77f4f15..088ecc5 100644 --- a/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.Designer.cs +++ b/src/EventHub.EntityFrameworkCore/Migrations/20211008110036_Added_IsActive_To_IdentityUser.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace EventHub.Migrations { [DbContext(typeof(EventHubDbContext))] - [Migration("20211008103457_Added_IsActive_To_IdentityUser")] + [Migration("20211008110036_Added_IsActive_To_IdentityUser")] partial class Added_IsActive_To_IdentityUser { protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs b/src/EventHub.EntityFrameworkCore/Migrations/20211008110036_Added_IsActive_To_IdentityUser.cs similarity index 100% rename from src/EventHub.EntityFrameworkCore/Migrations/20211008103457_Added_IsActive_To_IdentityUser.cs rename to src/EventHub.EntityFrameworkCore/Migrations/20211008110036_Added_IsActive_To_IdentityUser.cs From 7e14a624592d9a269275748e672f7aa0a00d37e6 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Fri, 8 Oct 2021 15:16:36 +0300 Subject: [PATCH 036/159] Fix blazor launch problem --- .../EventHub.Admin.Web.csproj | 4 +- src/EventHub.Admin.Web/wwwroot/global.css | 18 +- src/EventHub.Admin.Web/wwwroot/global.js | 792 +----------------- src/EventHub.Admin.Web/wwwroot/index.html | 4 +- .../EntityFrameworkCore/EventHubDbContext.cs | 4 - .../EventHubEntityFrameworkCoreModule.cs | 5 + .../EventHub.IdentityServer.csproj | 1 + .../EventHubIdentityServerModule.cs | 3 + 8 files changed, 28 insertions(+), 803 deletions(-) diff --git a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj index 1835250..2517fdd 100644 --- a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj +++ b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/src/EventHub.Admin.Web/wwwroot/global.css b/src/EventHub.Admin.Web/wwwroot/global.css index 910b08b..4b88a3c 100644 --- a/src/EventHub.Admin.Web/wwwroot/global.css +++ b/src/EventHub.Admin.Web/wwwroot/global.css @@ -1,17 +1,17 @@ /*! - * Bootstrap v4.5.0 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors - * Copyright 2011-2020 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}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{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[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}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.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:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.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:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;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}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;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::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.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;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;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{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.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:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' 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:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.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)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' 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") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;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;line-height:1.5;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' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%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 .2rem 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)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%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") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem 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-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;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;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.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;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 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-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{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}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .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}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .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}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;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:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .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{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;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:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;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){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;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){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-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;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{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}.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{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;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;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;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}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.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,.5)}.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 .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);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' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%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,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.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,.5)}.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 .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);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' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%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,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;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-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;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-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;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:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;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-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;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}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item{display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;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}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.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;line-height:1.5}.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:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;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){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;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:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.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:.75rem 1.25rem;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:#007bff;border-color:#007bff}.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{-ms-flex-direction:row;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{-ms-flex-direction:row;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{-ms-flex-direction:row;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{-ms-flex-direction:row;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{-ms-flex-direction:row;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}}.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:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;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:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;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 .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.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}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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 .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;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:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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 .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-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 #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;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:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-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-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;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:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.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}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{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-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!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}.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}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!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}.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}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} + * Bootstrap v4.6.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{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}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{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}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,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[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}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.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:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.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:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;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}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;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::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.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;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;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{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.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:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' 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:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.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)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' 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") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.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' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%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 .2rem 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)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%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") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem 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-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;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;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.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;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 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-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{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}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .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}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .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}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.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 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;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:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .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{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;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:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;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){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;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){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-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;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;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}.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{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;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;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;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}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;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>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.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,.5)}.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 .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);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' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%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,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.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,.5)}.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 .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);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' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%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,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;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{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;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:.75rem 1.25rem;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:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;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-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;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}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;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}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.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;line-height:1.5}.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:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;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){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;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}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.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:.75rem 1.25rem;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:#007bff;border-color:#007bff}.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{-ms-flex-direction:row;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{-ms-flex-direction:row;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{-ms-flex-direction:row;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{-ms-flex-direction:row;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{-ms-flex-direction:row;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}}.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:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .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-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;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:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;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 .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.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}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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 .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;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:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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 .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-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 #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;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:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-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-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;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:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;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%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;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}}.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}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{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-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!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:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!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;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!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}.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}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!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}.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}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} /*# sourceMappingURL=bootstrap.min.css.map */ /*! * Font Awesome Free 5.12.0 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) */ .fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:""}.fa-accessible-icon:before{content:""}.fa-accusoft:before{content:""}.fa-acquisitions-incorporated:before{content:""}.fa-ad:before{content:""}.fa-address-book:before{content:""}.fa-address-card:before{content:""}.fa-adjust:before{content:""}.fa-adn:before{content:""}.fa-adobe:before{content:""}.fa-adversal:before{content:""}.fa-affiliatetheme:before{content:""}.fa-air-freshener:before{content:""}.fa-airbnb:before{content:""}.fa-algolia:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-alipay:before{content:""}.fa-allergies:before{content:""}.fa-amazon:before{content:""}.fa-amazon-pay:before{content:""}.fa-ambulance:before{content:""}.fa-american-sign-language-interpreting:before{content:""}.fa-amilia:before{content:""}.fa-anchor:before{content:""}.fa-android:before{content:""}.fa-angellist:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angry:before{content:""}.fa-angrycreative:before{content:""}.fa-angular:before{content:""}.fa-ankh:before{content:""}.fa-app-store:before{content:""}.fa-app-store-ios:before{content:""}.fa-apper:before{content:""}.fa-apple:before{content:""}.fa-apple-alt:before{content:""}.fa-apple-pay:before{content:""}.fa-archive:before{content:""}.fa-archway:before{content:""}.fa-arrow-alt-circle-down:before{content:""}.fa-arrow-alt-circle-left:before{content:""}.fa-arrow-alt-circle-right:before{content:""}.fa-arrow-alt-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrows-alt:before{content:""}.fa-arrows-alt-h:before{content:""}.fa-arrows-alt-v:before{content:""}.fa-artstation:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asterisk:before{content:""}.fa-asymmetrik:before{content:""}.fa-at:before{content:""}.fa-atlas:before{content:""}.fa-atlassian:before{content:""}.fa-atom:before{content:""}.fa-audible:before{content:""}.fa-audio-description:before{content:""}.fa-autoprefixer:before{content:""}.fa-avianex:before{content:""}.fa-aviato:before{content:""}.fa-award:before{content:""}.fa-aws:before{content:""}.fa-baby:before{content:""}.fa-baby-carriage:before{content:""}.fa-backspace:before{content:""}.fa-backward:before{content:""}.fa-bacon:before{content:""}.fa-bahai:before{content:""}.fa-balance-scale:before{content:""}.fa-balance-scale-left:before{content:""}.fa-balance-scale-right:before{content:""}.fa-ban:before{content:""}.fa-band-aid:before{content:""}.fa-bandcamp:before{content:""}.fa-barcode:before{content:""}.fa-bars:before{content:""}.fa-baseball-ball:before{content:""}.fa-basketball-ball:before{content:""}.fa-bath:before{content:""}.fa-battery-empty:before{content:""}.fa-battery-full:before{content:""}.fa-battery-half:before{content:""}.fa-battery-quarter:before{content:""}.fa-battery-three-quarters:before{content:""}.fa-battle-net:before{content:""}.fa-bed:before{content:""}.fa-beer:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bible:before{content:""}.fa-bicycle:before{content:""}.fa-biking:before{content:""}.fa-bimobject:before{content:""}.fa-binoculars:before{content:""}.fa-biohazard:before{content:""}.fa-birthday-cake:before{content:""}.fa-bitbucket:before{content:""}.fa-bitcoin:before{content:""}.fa-bity:before{content:""}.fa-black-tie:before{content:""}.fa-blackberry:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blind:before{content:""}.fa-blog:before{content:""}.fa-blogger:before{content:""}.fa-blogger-b:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-bold:before{content:""}.fa-bolt:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-book-dead:before{content:""}.fa-book-medical:before{content:""}.fa-book-open:before{content:""}.fa-book-reader:before{content:""}.fa-bookmark:before{content:""}.fa-bootstrap:before{content:""}.fa-border-all:before{content:""}.fa-border-none:before{content:""}.fa-border-style:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-box-open:before{content:""}.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-bread-slice:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broadcast-tower:before{content:""}.fa-broom:before{content:""}.fa-brush:before{content:""}.fa-btc:before{content:""}.fa-buffer:before{content:""}.fa-bug:before{content:""}.fa-building:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burn:before{content:""}.fa-buromobelexperte:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before{content:""}.fa-business-time:before{content:""}.fa-buy-n-large:before{content:""}.fa-buysellads:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-alt:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-day:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-times:before{content:""}.fa-calendar-week:before{content:""}.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-campground:before{content:""}.fa-canadian-maple-leaf:before{content:""}.fa-candy-cane:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-car:before{content:""}.fa-car-alt:before{content:""}.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-side:before{content:""}.fa-caravan:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-square-down:before{content:""}.fa-caret-square-left:before{content:""}.fa-caret-square-right:before{content:""}.fa-caret-square-up:before{content:""}.fa-caret-up:before{content:""}.fa-carrot:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-plus:before{content:""}.fa-cash-register:before{content:""}.fa-cat:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-cc-diners-club:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-cc-visa:before{content:""}.fa-centercode:before{content:""}.fa-centos:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before{content:""}.fa-charging-station:before{content:""}.fa-chart-area:before{content:""}.fa-chart-bar:before{content:""}.fa-chart-line:before{content:""}.fa-chart-pie:before{content:""}.fa-check:before{content:""}.fa-check-circle:before{content:""}.fa-check-double:before{content:""}.fa-check-square:before{content:""}.fa-cheese:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-chrome:before{content:""}.fa-chromecast:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-city:before{content:""}.fa-clinic-medical:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-download-alt:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-cloud-upload-alt:before{content:""}.fa-cloudscale:before{content:""}.fa-cloudsmith:before{content:""}.fa-cloudversify:before{content:""}.fa-cocktail:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-codepen:before{content:""}.fa-codiepie:before{content:""}.fa-coffee:before{content:""}.fa-cog:before{content:""}.fa-cogs:before{content:""}.fa-coins:before{content:""}.fa-columns:before{content:""}.fa-comment:before{content:""}.fa-comment-alt:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before{content:""}.fa-comment-medical:before{content:""}.fa-comment-slash:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compress:before{content:""}.fa-compress-alt:before{content:""}.fa-compress-arrows-alt:before{content:""}.fa-concierge-bell:before{content:""}.fa-confluence:before{content:""}.fa-connectdevelop:before{content:""}.fa-contao:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-cotton-bureau:before{content:""}.fa-couch:before{content:""}.fa-cpanel:before{content:""}.fa-creative-commons:before{content:""}.fa-creative-commons-by:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-creative-commons-share:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-credit-card:before{content:""}.fa-critical-role:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-crutch:before{content:""}.fa-css3:before{content:""}.fa-css3-alt:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-cut:before{content:""}.fa-cuttlefish:before{content:""}.fa-d-and-d:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-dashcube:before{content:""}.fa-database:before{content:""}.fa-deaf:before{content:""}.fa-delicious:before{content:""}.fa-democrat:before{content:""}.fa-deploydog:before{content:""}.fa-deskpro:before{content:""}.fa-desktop:before{content:""}.fa-dev:before{content:""}.fa-deviantart:before{content:""}.fa-dharmachakra:before{content:""}.fa-dhl:before{content:""}.fa-diagnoses:before{content:""}.fa-diaspora:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-digg:before{content:""}.fa-digital-ocean:before{content:""}.fa-digital-tachograph:before{content:""}.fa-directions:before{content:""}.fa-discord:before{content:""}.fa-discourse:before{content:""}.fa-divide:before{content:""}.fa-dizzy:before{content:""}.fa-dna:before{content:""}.fa-dochub:before{content:""}.fa-docker:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before{content:""}.fa-dolly:before{content:""}.fa-dolly-flatbed:before{content:""}.fa-donate:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dot-circle:before{content:""}.fa-dove:before{content:""}.fa-download:before{content:""}.fa-draft2digital:before{content:""}.fa-drafting-compass:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-dropbox:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-drupal:before{content:""}.fa-dumbbell:before{content:""}.fa-dumpster:before{content:""}.fa-dumpster-fire:before{content:""}.fa-dungeon:before{content:""}.fa-dyalog:before{content:""}.fa-earlybirds:before{content:""}.fa-ebay:before{content:""}.fa-edge:before{content:""}.fa-edit:before{content:""}.fa-egg:before{content:""}.fa-eject:before{content:""}.fa-elementor:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-ello:before{content:""}.fa-ember:before{content:""}.fa-empire:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelope-square:before{content:""}.fa-envira:before{content:""}.fa-equals:before{content:""}.fa-eraser:before{content:""}.fa-erlang:before{content:""}.fa-ethereum:before{content:""}.fa-ethernet:before{content:""}.fa-etsy:before{content:""}.fa-euro-sign:before{content:""}.fa-evernote:before{content:""}.fa-exchange-alt:before{content:""}.fa-exclamation:before{content:""}.fa-exclamation-circle:before{content:""}.fa-exclamation-triangle:before{content:""}.fa-expand:before{content:""}.fa-expand-alt:before{content:""}.fa-expand-arrows-alt:before{content:""}.fa-expeditedssl:before{content:""}.fa-external-link-alt:before{content:""}.fa-external-link-square-alt:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper:before{content:""}.fa-eye-slash:before{content:""}.fa-facebook:before{content:""}.fa-facebook-f:before{content:""}.fa-facebook-messenger:before{content:""}.fa-facebook-square:before{content:""}.fa-fan:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-fast-backward:before{content:""}.fa-fast-forward:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before{content:""}.fa-fedex:before{content:""}.fa-fedora:before{content:""}.fa-female:before{content:""}.fa-fighter-jet:before{content:""}.fa-figma:before{content:""}.fa-file:before{content:""}.fa-file-alt:before{content:""}.fa-file-archive:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-download:before{content:""}.fa-file-excel:before{content:""}.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-medical:before{content:""}.fa-file-medical-alt:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-upload:before{content:""}.fa-file-video:before{content:""}.fa-file-word:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-alt:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-firefox:before{content:""}.fa-firefox-browser:before{content:"龜"}.fa-first-aid:before{content:""}.fa-first-order:before{content:""}.fa-first-order-alt:before{content:""}.fa-firstdraft:before{content:""}.fa-fish:before{content:""}.fa-fist-raised:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-flickr:before{content:""}.fa-flipboard:before{content:""}.fa-flushed:before{content:""}.fa-fly:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-font:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-fonticons:before{content:""}.fa-fonticons-fi:before{content:""}.fa-football-ball:before{content:""}.fa-fort-awesome:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-forumbee:before{content:""}.fa-forward:before{content:""}.fa-foursquare:before{content:""}.fa-free-code-camp:before{content:""}.fa-freebsd:before{content:""}.fa-frog:before{content:""}.fa-frown:before{content:""}.fa-frown-open:before{content:""}.fa-fulcrum:before{content:""}.fa-funnel-dollar:before{content:""}.fa-futbol:before{content:""}.fa-galactic-republic:before{content:""}.fa-galactic-senate:before{content:""}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-gavel:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-get-pocket:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-gifts:before{content:""}.fa-git:before{content:""}.fa-git-alt:before{content:""}.fa-git-square:before{content:""}.fa-github:before{content:""}.fa-github-alt:before{content:""}.fa-github-square:before{content:""}.fa-gitkraken:before{content:""}.fa-gitlab:before{content:""}.fa-gitter:before{content:""}.fa-glass-cheers:before{content:""}.fa-glass-martini:before{content:""}.fa-glass-martini-alt:before{content:""}.fa-glass-whiskey:before{content:""}.fa-glasses:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-globe:before{content:""}.fa-globe-africa:before{content:""}.fa-globe-americas:before{content:""}.fa-globe-asia:before{content:""}.fa-globe-europe:before{content:""}.fa-gofore:before{content:""}.fa-golf-ball:before{content:""}.fa-goodreads:before{content:""}.fa-goodreads-g:before{content:""}.fa-google:before{content:""}.fa-google-drive:before{content:""}.fa-google-play:before{content:""}.fa-google-plus:before{content:""}.fa-google-plus-g:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-wallet:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before{content:""}.fa-gratipay:before{content:""}.fa-grav:before{content:""}.fa-greater-than:before{content:""}.fa-greater-than-equal:before{content:""}.fa-grimace:before{content:""}.fa-grin:before{content:""}.fa-grin-alt:before{content:""}.fa-grin-beam:before{content:""}.fa-grin-beam-sweat:before{content:""}.fa-grin-hearts:before{content:""}.fa-grin-squint:before{content:""}.fa-grin-squint-tears:before{content:""}.fa-grin-stars:before{content:""}.fa-grin-tears:before{content:""}.fa-grin-tongue:before{content:""}.fa-grin-tongue-squint:before{content:""}.fa-grin-tongue-wink:before{content:""}.fa-grin-wink:before{content:""}.fa-grip-horizontal:before{content:""}.fa-grip-lines:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-grip-vertical:before{content:""}.fa-gripfire:before{content:""}.fa-grunt:before{content:""}.fa-guitar:before{content:""}.fa-gulp:before{content:""}.fa-h-square:before{content:""}.fa-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-hackerrank:before{content:""}.fa-hamburger:before{content:""}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-usd:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-hand-paper:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-rock:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before{content:""}.fa-hands-helping:before{content:""}.fa-handshake:before{content:""}.fa-hanukiah:before{content:""}.fa-hard-hat:before{content:""}.fa-hashtag:before{content:""}.fa-hat-cowboy:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-hat-wizard:before{content:""}.fa-hdd:before{content:""}.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heart-broken:before{content:""}.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-highlighter:before{content:""}.fa-hiking:before{content:""}.fa-hippo:before{content:""}.fa-hips:before{content:""}.fa-hire-a-helper:before{content:""}.fa-history:before{content:""}.fa-hockey-puck:before{content:""}.fa-holly-berry:before{content:""}.fa-home:before{content:""}.fa-hooli:before{content:""}.fa-hornbill:before{content:""}.fa-horse:before{content:""}.fa-horse-head:before{content:""}.fa-hospital:before{content:""}.fa-hospital-alt:before{content:""}.fa-hospital-symbol:before{content:""}.fa-hot-tub:before{content:""}.fa-hotdog:before{content:""}.fa-hotel:before{content:""}.fa-hotjar:before{content:""}.fa-hourglass:before{content:""}.fa-hourglass-end:before{content:""}.fa-hourglass-half:before{content:""}.fa-hourglass-start:before{content:""}.fa-house-damage:before{content:""}.fa-houzz:before{content:""}.fa-hryvnia:before{content:""}.fa-html5:before{content:""}.fa-hubspot:before{content:""}.fa-i-cursor:before{content:""}.fa-ice-cream:before{content:""}.fa-icicles:before{content:""}.fa-icons:before{content:""}.fa-id-badge:before{content:""}.fa-id-card:before{content:""}.fa-id-card-alt:before{content:""}.fa-ideal:before{content:"邏"}.fa-igloo:before{content:""}.fa-image:before{content:""}.fa-images:before{content:""}.fa-imdb:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-info-circle:before{content:""}.fa-instagram:before{content:""}.fa-intercom:before{content:""}.fa-internet-explorer:before{content:""}.fa-invision:before{content:""}.fa-ioxhost:before{content:""}.fa-italic:before{content:""}.fa-itch-io:before{content:""}.fa-itunes:before{content:""}.fa-itunes-note:before{content:""}.fa-java:before{content:""}.fa-jedi:before{content:""}.fa-jedi-order:before{content:""}.fa-jenkins:before{content:""}.fa-jira:before{content:""}.fa-joget:before{content:""}.fa-joint:before{content:""}.fa-joomla:before{content:""}.fa-journal-whills:before{content:""}.fa-js:before{content:""}.fa-js-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-kaaba:before{content:""}.fa-kaggle:before{content:""}.fa-key:before{content:""}.fa-keybase:before{content:""}.fa-keyboard:before{content:""}.fa-keycdn:before{content:""}.fa-khanda:before{content:""}.fa-kickstarter:before{content:""}.fa-kickstarter-k:before{content:""}.fa-kiss:before{content:""}.fa-kiss-beam:before{content:""}.fa-kiss-wink-heart:before{content:""}.fa-kiwi-bird:before{content:""}.fa-korvue:before{content:""}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laptop-medical:before{content:""}.fa-laravel:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-laugh:before{content:""}.fa-laugh-beam:before{content:""}.fa-laugh-squint:before{content:""}.fa-laugh-wink:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-leanpub:before{content:""}.fa-lemon:before{content:""}.fa-less:before{content:""}.fa-less-than:before{content:""}.fa-less-than-equal:before{content:""}.fa-level-down-alt:before{content:""}.fa-level-up-alt:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-line:before{content:""}.fa-link:before{content:""}.fa-linkedin:before{content:""}.fa-linkedin-in:before{content:""}.fa-linode:before{content:""}.fa-linux:before{content:""}.fa-lira-sign:before{content:""}.fa-list:before{content:""}.fa-list-alt:before{content:""}.fa-list-ol:before{content:""}.fa-list-ul:before{content:""}.fa-location-arrow:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-long-arrow-alt-down:before{content:""}.fa-long-arrow-alt-left:before{content:""}.fa-long-arrow-alt-right:before{content:""}.fa-long-arrow-alt-up:before{content:""}.fa-low-vision:before{content:""}.fa-luggage-cart:before{content:""}.fa-lyft:before{content:""}.fa-magento:before{content:""}.fa-magic:before{content:""}.fa-magnet:before{content:""}.fa-mail-bulk:before{content:""}.fa-mailchimp:before{content:""}.fa-male:before{content:""}.fa-mandalorian:before{content:""}.fa-map:before{content:""}.fa-map-marked:before{content:""}.fa-map-marked-alt:before{content:""}.fa-map-marker:before{content:""}.fa-map-marker-alt:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-markdown:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mask:before{content:""}.fa-mastodon:before{content:""}.fa-maxcdn:before{content:""}.fa-mdb:before{content:""}.fa-medal:before{content:""}.fa-medapps:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-medkit:before{content:""}.fa-medrt:before{content:""}.fa-meetup:before{content:""}.fa-megaport:before{content:""}.fa-meh:before{content:""}.fa-meh-blank:before{content:""}.fa-meh-rolling-eyes:before{content:""}.fa-memory:before{content:""}.fa-mendeley:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-meteor:before{content:""}.fa-microblog:before{content:"駱"}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before{content:""}.fa-microphone-alt-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-microsoft:before{content:""}.fa-minus:before{content:""}.fa-minus-circle:before{content:""}.fa-minus-square:before{content:""}.fa-mitten:before{content:""}.fa-mix:before{content:""}.fa-mixcloud:before{content:""}.fa-mizuni:before{content:""}.fa-mobile:before{content:""}.fa-mobile-alt:before{content:""}.fa-modx:before{content:""}.fa-monero:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-bill-wave-alt:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mouse:before{content:""}.fa-mouse-pointer:before{content:""}.fa-mug-hot:before{content:""}.fa-music:before{content:""}.fa-napster:before{content:""}.fa-neos:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-nimblr:before{content:""}.fa-node:before{content:""}.fa-node-js:before{content:""}.fa-not-equal:before{content:""}.fa-notes-medical:before{content:""}.fa-npm:before{content:""}.fa-ns8:before{content:""}.fa-nutritionix:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-oil-can:before{content:""}.fa-old-republic:before{content:""}.fa-om:before{content:""}.fa-opencart:before{content:""}.fa-openid:before{content:""}.fa-opera:before{content:""}.fa-optin-monster:before{content:""}.fa-orcid:before{content:""}.fa-osi:before{content:""}.fa-otter:before{content:""}.fa-outdent:before{content:""}.fa-page4:before{content:""}.fa-pagelines:before{content:""}.fa-pager:before{content:""}.fa-paint-brush:before{content:""}.fa-paint-roller:before{content:""}.fa-palette:before{content:""}.fa-palfed:before{content:""}.fa-pallet:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-parking:before{content:""}.fa-passport:before{content:""}.fa-pastafarianism:before{content:""}.fa-paste:before{content:""}.fa-patreon:before{content:""}.fa-pause:before{content:""}.fa-pause-circle:before{content:""}.fa-paw:before{content:""}.fa-paypal:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-square:before{content:""}.fa-pencil-alt:before{content:""}.fa-pencil-ruler:before{content:""}.fa-penny-arcade:before{content:""}.fa-people-carry:before{content:""}.fa-pepper-hot:before{content:""}.fa-percent:before{content:""}.fa-percentage:before{content:""}.fa-periscope:before{content:""}.fa-person-booth:before{content:""}.fa-phabricator:before{content:""}.fa-phoenix-framework:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-phone:before{content:""}.fa-phone-alt:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-square:before{content:""}.fa-phone-square-alt:before{content:""}.fa-phone-volume:before{content:""}.fa-photo-video:before{content:""}.fa-php:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-square:before{content:"爛"}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-p:before{content:""}.fa-pinterest-square:before{content:""}.fa-pizza-slice:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-play:before{content:""}.fa-play-circle:before{content:""}.fa-playstation:before{content:""}.fa-plug:before{content:""}.fa-plus:before{content:""}.fa-plus-circle:before{content:""}.fa-plus-square:before{content:""}.fa-podcast:before{content:""}.fa-poll:before{content:""}.fa-poll-h:before{content:""}.fa-poo:before{content:""}.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-portrait:before{content:""}.fa-pound-sign:before{content:""}.fa-power-off:before{content:""}.fa-pray:before{content:""}.fa-praying-hands:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before{content:""}.fa-print:before{content:""}.fa-procedures:before{content:""}.fa-product-hunt:before{content:""}.fa-project-diagram:before{content:""}.fa-pushed:before{content:""}.fa-puzzle-piece:before{content:""}.fa-python:before{content:""}.fa-qq:before{content:""}.fa-qrcode:before{content:""}.fa-question:before{content:""}.fa-question-circle:before{content:""}.fa-quidditch:before{content:""}.fa-quinscape:before{content:""}.fa-quora:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-quran:before{content:""}.fa-r-project:before{content:""}.fa-radiation:before{content:""}.fa-radiation-alt:before{content:""}.fa-rainbow:before{content:""}.fa-random:before{content:""}.fa-raspberry-pi:before{content:""}.fa-ravelry:before{content:""}.fa-react:before{content:""}.fa-reacteurope:before{content:""}.fa-readme:before{content:""}.fa-rebel:before{content:""}.fa-receipt:before{content:""}.fa-record-vinyl:before{content:""}.fa-recycle:before{content:""}.fa-red-river:before{content:""}.fa-reddit:before{content:""}.fa-reddit-alien:before{content:""}.fa-reddit-square:before{content:""}.fa-redhat:before{content:""}.fa-redo:before{content:""}.fa-redo-alt:before{content:""}.fa-registered:before{content:""}.fa-remove-format:before{content:""}.fa-renren:before{content:""}.fa-reply:before{content:""}.fa-reply-all:before{content:""}.fa-replyd:before{content:""}.fa-republican:before{content:""}.fa-researchgate:before{content:""}.fa-resolving:before{content:""}.fa-restroom:before{content:""}.fa-retweet:before{content:""}.fa-rev:before{content:""}.fa-ribbon:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rocketchat:before{content:""}.fa-rockrms:before{content:""}.fa-route:before{content:""}.fa-rss:before{content:""}.fa-rss-square:before{content:""}.fa-ruble-sign:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-running:before{content:""}.fa-rupee-sign:before{content:""}.fa-sad-cry:before{content:""}.fa-sad-tear:before{content:""}.fa-safari:before{content:""}.fa-salesforce:before{content:""}.fa-sass:before{content:""}.fa-satellite:before{content:""}.fa-satellite-dish:before{content:""}.fa-save:before{content:""}.fa-schlix:before{content:""}.fa-school:before{content:""}.fa-screwdriver:before{content:""}.fa-scribd:before{content:""}.fa-scroll:before{content:""}.fa-sd-card:before{content:""}.fa-search:before{content:""}.fa-search-dollar:before{content:""}.fa-search-location:before{content:""}.fa-search-minus:before{content:""}.fa-search-plus:before{content:""}.fa-searchengin:before{content:""}.fa-seedling:before{content:""}.fa-sellcast:before{content:""}.fa-sellsy:before{content:""}.fa-server:before{content:""}.fa-servicestack:before{content:""}.fa-shapes:before{content:""}.fa-share:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-share-square:before{content:""}.fa-shekel-sign:before{content:""}.fa-shield-alt:before{content:""}.fa-ship:before{content:""}.fa-shipping-fast:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-shoe-prints:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-shopping-cart:before{content:""}.fa-shopware:before{content:""}.fa-shower:before{content:""}.fa-shuttle-van:before{content:""}.fa-sign:before{content:""}.fa-sign-in-alt:before{content:""}.fa-sign-language:before{content:""}.fa-sign-out-alt:before{content:""}.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-sim-card:before{content:""}.fa-simplybuilt:before{content:""}.fa-sistrix:before{content:""}.fa-sitemap:before{content:""}.fa-sith:before{content:""}.fa-skating:before{content:""}.fa-sketch:before{content:""}.fa-skiing:before{content:""}.fa-skiing-nordic:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-skyatlas:before{content:""}.fa-skype:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-slash:before{content:""}.fa-sleigh:before{content:""}.fa-sliders-h:before{content:""}.fa-slideshare:before{content:""}.fa-smile:before{content:""}.fa-smile-beam:before{content:""}.fa-smile-wink:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-smoking-ban:before{content:""}.fa-sms:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-snowboarding:before{content:""}.fa-snowflake:before{content:""}.fa-snowman:before{content:""}.fa-snowplow:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before{content:""}.fa-sort-alpha-down:before{content:""}.fa-sort-alpha-down-alt:before{content:""}.fa-sort-alpha-up:before{content:""}.fa-sort-alpha-up-alt:before{content:""}.fa-sort-amount-down:before{content:""}.fa-sort-amount-down-alt:before{content:""}.fa-sort-amount-up:before{content:""}.fa-sort-amount-up-alt:before{content:""}.fa-sort-down:before{content:""}.fa-sort-numeric-down:before{content:""}.fa-sort-numeric-down-alt:before{content:""}.fa-sort-numeric-up:before{content:""}.fa-sort-numeric-up-alt:before{content:""}.fa-sort-up:before{content:""}.fa-soundcloud:before{content:""}.fa-sourcetree:before{content:""}.fa-spa:before{content:""}.fa-space-shuttle:before{content:""}.fa-speakap:before{content:""}.fa-speaker-deck:before{content:""}.fa-spell-check:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spotify:before{content:""}.fa-spray-can:before{content:""}.fa-square:before{content:""}.fa-square-full:before{content:""}.fa-square-root-alt:before{content:""}.fa-squarespace:before{content:""}.fa-stack-exchange:before{content:""}.fa-stack-overflow:before{content:""}.fa-stackpath:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-staylinked:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-steam-symbol:before{content:""}.fa-step-backward:before{content:""}.fa-step-forward:before{content:""}.fa-stethoscope:before{content:""}.fa-sticker-mule:before{content:""}.fa-sticky-note:before{content:""}.fa-stop:before{content:""}.fa-stop-circle:before{content:""}.fa-stopwatch:before{content:""}.fa-store:before{content:""}.fa-store-alt:before{content:""}.fa-strava:before{content:""}.fa-stream:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stripe:before{content:""}.fa-stripe-s:before{content:""}.fa-stroopwafel:before{content:""}.fa-studiovinari:before{content:""}.fa-stumbleupon:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-subscript:before{content:""}.fa-subway:before{content:""}.fa-suitcase:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superpowers:before{content:""}.fa-superscript:before{content:""}.fa-supple:before{content:""}.fa-surprise:before{content:""}.fa-suse:before{content:""}.fa-swatchbook:before{content:""}.fa-swift:before{content:""}.fa-swimmer:before{content:""}.fa-swimming-pool:before{content:""}.fa-symfony:before{content:""}.fa-synagogue:before{content:""}.fa-sync:before{content:""}.fa-sync-alt:before{content:""}.fa-syringe:before{content:""}.fa-table:before{content:""}.fa-table-tennis:before{content:""}.fa-tablet:before{content:""}.fa-tablet-alt:before{content:""}.fa-tablets:before{content:""}.fa-tachometer-alt:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-tasks:before{content:""}.fa-taxi:before{content:""}.fa-teamspeak:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-tencent-weibo:before{content:""}.fa-tenge:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-th:before{content:""}.fa-th-large:before{content:""}.fa-th-list:before{content:""}.fa-the-red-yeti:before{content:""}.fa-theater-masks:before{content:""}.fa-themeco:before{content:""}.fa-themeisle:before{content:""}.fa-thermometer:before{content:""}.fa-thermometer-empty:before{content:""}.fa-thermometer-full:before{content:""}.fa-thermometer-half:before{content:""}.fa-thermometer-quarter:before{content:""}.fa-thermometer-three-quarters:before{content:""}.fa-think-peaks:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbtack:before{content:""}.fa-ticket-alt:before{content:""}.fa-times:before{content:""}.fa-times-circle:before{content:""}.fa-tint:before{content:""}.fa-tint-slash:before{content:""}.fa-tired:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet:before{content:""}.fa-toilet-paper:before{content:""}.fa-toolbox:before{content:""}.fa-tools:before{content:""}.fa-tooth:before{content:""}.fa-torah:before{content:""}.fa-torii-gate:before{content:""}.fa-tractor:before{content:""}.fa-trade-federation:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-trailer:before{content:"論"}.fa-train:before{content:""}.fa-tram:before{content:""}.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-trash:before{content:""}.fa-trash-alt:before{content:""}.fa-trash-restore:before{content:""}.fa-trash-restore-alt:before{content:""}.fa-tree:before{content:""}.fa-trello:before{content:""}.fa-tripadvisor:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-truck-loading:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-tshirt:before{content:""}.fa-tty:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-tv:before{content:""}.fa-twitch:before{content:""}.fa-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-typo3:before{content:""}.fa-uber:before{content:""}.fa-ubuntu:before{content:""}.fa-uikit:before{content:""}.fa-umbraco:before{content:""}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-undo:before{content:""}.fa-undo-alt:before{content:""}.fa-uniregistry:before{content:""}.fa-unity:before{content:"雷"}.fa-universal-access:before{content:""}.fa-university:before{content:""}.fa-unlink:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before{content:""}.fa-untappd:before{content:""}.fa-upload:before{content:""}.fa-ups:before{content:""}.fa-usb:before{content:""}.fa-user:before{content:""}.fa-user-alt:before{content:""}.fa-user-alt-slash:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-circle:before{content:""}.fa-user-clock:before{content:""}.fa-user-cog:before{content:""}.fa-user-edit:before{content:""}.fa-user-friends:before{content:""}.fa-user-graduate:before{content:""}.fa-user-injured:before{content:""}.fa-user-lock:before{content:""}.fa-user-md:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-nurse:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before{content:""}.fa-users:before{content:""}.fa-users-cog:before{content:""}.fa-usps:before{content:""}.fa-ussunnah:before{content:""}.fa-utensil-spoon:before{content:""}.fa-utensils:before{content:""}.fa-vaadin:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-viacoin:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-viber:before{content:""}.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-vine:before{content:""}.fa-vk:before{content:""}.fa-vnv:before{content:""}.fa-voicemail:before{content:""}.fa-volleyball-ball:before{content:""}.fa-volume-down:before{content:""}.fa-volume-mute:before{content:""}.fa-volume-off:before{content:""}.fa-volume-up:before{content:""}.fa-vote-yea:before{content:""}.fa-vr-cardboard:before{content:""}.fa-vuejs:before{content:""}.fa-walking:before{content:""}.fa-wallet:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-wave-square:before{content:""}.fa-waze:before{content:""}.fa-weebly:before{content:""}.fa-weibo:before{content:""}.fa-weight:before{content:""}.fa-weight-hanging:before{content:""}.fa-weixin:before{content:""}.fa-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-wheelchair:before{content:""}.fa-whmcs:before{content:""}.fa-wifi:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wind:before{content:""}.fa-window-close:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-windows:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before{content:""}.fa-wix:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-won-sign:before{content:""}.fa-wordpress:before{content:""}.fa-wordpress-simple:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpexplorer:before{content:""}.fa-wpforms:before{content:""}.fa-wpressr:before{content:""}.fa-wrench:before{content:""}.fa-x-ray:before{content:""}.fa-xbox:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-y-combinator:before{content:""}.fa-yahoo:before{content:""}.fa-yammer:before{content:""}.fa-yandex:before{content:""}.fa-yandex-international:before{content:""}.fa-yarn:before{content:""}.fa-yelp:before{content:""}.fa-yen-sign:before{content:""}.fa-yin-yang:before{content:""}.fa-yoast:before{content:""}.fa-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-zhihu:before{content:""}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.eot);src:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.woff) format("woff"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.ttf) format("truetype"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.eot);src:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.woff) format("woff"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.ttf) format("truetype"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.eot);src:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.woff) format("woff"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.ttf) format("truetype"),url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} -body:before{content:"mobile";display:none;visibility:hidden}@media(min-width:768px){body:before{content:"tablet"}}@media(min-width:992px){body:before{content:"desktop"}}@media(min-width:1200px){body:before{content:"widescreen"}}@media(min-width:1400px){body:before{content:"fullhd"}}.progress.progress-xs{height:.25rem}.progress.progress-sm{height:.5rem}.progress.progress-md{height:1rem}.progress.progress-lg{height:1.5rem}.progress.progress-xl{height:2rem}[data-tooltip]:not(.is-loading),[data-tooltip]:not(.is-disabled),[data-tooltip]:not([disabled]){cursor:pointer;overflow:visible;position:relative}[data-tooltip]:not(.is-loading)::before,[data-tooltip]:not(.is-loading)::after,[data-tooltip]:not(.is-disabled)::before,[data-tooltip]:not(.is-disabled)::after,[data-tooltip]:not([disabled])::before,[data-tooltip]:not([disabled])::after{box-sizing:border-box;color:var(--b-tooltip-color,#fff);display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:var(--b-tooltip-font-size,var(--b-font-size-sm,.875rem));hyphens:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;visibility:hidden;z-index:var(--b-tooltip-z-index,1020)}[data-tooltip]:not(.is-loading)::after,[data-tooltip]:not(.is-disabled)::after,[data-tooltip]:not([disabled])::after{content:"";border-style:solid;border-width:6px;border-color:rgba(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),.9) transparent transparent transparent;margin-bottom:-5px}[data-tooltip]:not(.is-loading)::after,[data-tooltip]:not(.is-disabled)::after,[data-tooltip]:not([disabled])::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),.9) transparent transparent transparent}[data-tooltip]:not(.is-loading)::before,[data-tooltip]:not(.is-disabled)::before,[data-tooltip]:not([disabled])::before{background:rgba(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),.9);border-radius:var(--b-tooltip-border-radius,4px);content:attr(data-tooltip);padding:var(--b-tooltip-padding,.5rem 1rem);text-overflow:ellipsis;white-space:pre}[data-tooltip]:not(.is-loading)::before,[data-tooltip]:not(.is-disabled)::before,[data-tooltip]:not([disabled])::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;transform:translate(-50%,-100%)}[data-tooltip]:not(.is-loading).b-tooltip-bottom::after,[data-tooltip]:not(.is-disabled).b-tooltip-bottom::after,[data-tooltip]:not([disabled]).b-tooltip-bottom::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),.9) transparent}[data-tooltip]:not(.is-loading).b-tooltip-bottom::before,[data-tooltip]:not(.is-disabled).b-tooltip-bottom::before,[data-tooltip]:not([disabled]).b-tooltip-bottom::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;transform:translate(-50%,100%)}[data-tooltip]:not(.is-loading).b-tooltip-left::after,[data-tooltip]:not(.is-disabled).b-tooltip-left::after,[data-tooltip]:not([disabled]).b-tooltip-left::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),.9)}[data-tooltip]:not(.is-loading).b-tooltip-left::before,[data-tooltip]:not(.is-disabled).b-tooltip-left::before,[data-tooltip]:not([disabled]).b-tooltip-left::before{top:auto;right:auto;bottom:50%;left:-11px;transform:translate(-100%,50%)}[data-tooltip]:not(.is-loading).b-tooltip-right::after,[data-tooltip]:not(.is-disabled).b-tooltip-right::after,[data-tooltip]:not([disabled]).b-tooltip-right::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),.9) transparent transparent}[data-tooltip]:not(.is-loading).b-tooltip-right::before,[data-tooltip]:not(.is-disabled).b-tooltip-right::before,[data-tooltip]:not([disabled]).b-tooltip-right::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;transform:translate(100%,50%)}[data-tooltip]:not(.is-loading).b-tooltip-multiline::before,[data-tooltip]:not(.is-disabled).b-tooltip-multiline::before,[data-tooltip]:not([disabled]).b-tooltip-multiline::before{height:auto;width:var(--b-tooltip-maxwidth,15rem);max-width:var(--b-tooltip-maxwidth,15rem);text-overflow:clip;white-space:normal;word-break:keep-all}[data-tooltip]:not(.is-loading).b-tooltip-primary.b-tooltip-bottom::after,[data-tooltip]:not(.is-disabled).b-tooltip-primary.b-tooltip-bottom::after,[data-tooltip]:not([disabled]).b-tooltip-primary.b-tooltip-bottom::after{border-color:transparent transparent rgba(142,51,41,.9) transparent}[data-tooltip]:not(.is-loading).b-tooltip-primary.b-tooltip-left::after,[data-tooltip]:not(.is-disabled).b-tooltip-primary.b-tooltip-left::after,[data-tooltip]:not([disabled]).b-tooltip-primary.b-tooltip-left::after{border-color:transparent transparent transparent rgba(142,51,41,.9)}[data-tooltip]:not(.is-loading).b-tooltip-primary.b-tooltip-right::after,[data-tooltip]:not(.is-disabled).b-tooltip-primary.b-tooltip-right::after,[data-tooltip]:not([disabled]).b-tooltip-primary.b-tooltip-right::after{border-color:transparent rgba(142,51,41,.9) transparent transparent}[data-tooltip]:not(.is-loading).b-tooltip-primary:not(.b-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).b-tooltip-primary:not(.b-tooltip-left)::after,[data-tooltip]:not(.is-loading).b-tooltip-primary:not(.b-tooltip-right)::after,[data-tooltip]:not(.is-disabled).b-tooltip-primary:not(.b-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).b-tooltip-primary:not(.b-tooltip-left)::after,[data-tooltip]:not(.is-disabled).b-tooltip-primary:not(.b-tooltip-right)::after,[data-tooltip]:not([disabled]).b-tooltip-primary:not(.b-tooltip-bottom)::after,[data-tooltip]:not([disabled]).b-tooltip-primary:not(.b-tooltip-left)::after,[data-tooltip]:not([disabled]).b-tooltip-primary:not(.b-tooltip-right)::after{border-color:rgba(142,51,41,.9) transparent transparent transparent}[data-tooltip]:not(.is-loading).b-tooltip-primary:before,[data-tooltip]:not(.is-disabled).b-tooltip-primary:before,[data-tooltip]:not([disabled]).b-tooltip-primary:before{background-color:rgba(142,51,41,.9);color:#8e3329}[data-tooltip]:not(.is-loading):focus::before,[data-tooltip]:not(.is-loading):focus::after,[data-tooltip]:not(.is-loading):hover::before,[data-tooltip]:not(.is-loading):hover::after,[data-tooltip]:not(.is-loading).b-tooltip-active::before,[data-tooltip]:not(.is-loading).b-tooltip-active::after,[data-tooltip]:not(.is-disabled):focus::before,[data-tooltip]:not(.is-disabled):focus::after,[data-tooltip]:not(.is-disabled):hover::before,[data-tooltip]:not(.is-disabled):hover::after,[data-tooltip]:not(.is-disabled).b-tooltip-active::before,[data-tooltip]:not(.is-disabled).b-tooltip-active::after,[data-tooltip]:not([disabled]):focus::before,[data-tooltip]:not([disabled]):focus::after,[data-tooltip]:not([disabled]):hover::before,[data-tooltip]:not([disabled]):hover::after,[data-tooltip]:not([disabled]).b-tooltip-active::before,[data-tooltip]:not([disabled]).b-tooltip-active::after{opacity:1;visibility:visible}[data-tooltip]:not(.is-loading).b-tooltip-fade::before,[data-tooltip]:not(.is-loading).b-tooltip-fade::after,[data-tooltip]:not(.is-disabled).b-tooltip-fade::before,[data-tooltip]:not(.is-disabled).b-tooltip-fade::after,[data-tooltip]:not([disabled]).b-tooltip-fade::before,[data-tooltip]:not([disabled]).b-tooltip-fade::after{transition:opacity var(--b-tooltip-fade-time,.3s) linear,visibility var(--b-tooltip-fade-time,.3s) linear}.b-tooltip-inline{display:inline-block}.b-layout{display:flex;flex:auto;flex-direction:column}.b-layout.b-layout-root{height:100vh}.b-layout,.b-layout *{box-sizing:border-box}@keyframes spinner{0%{transform:translate3d(-50%,-50%,0) rotate(0deg)}100%{transform:translate3d(-50%,-50%,0) rotate(360deg)}}.b-layout>.b-layout-loading{z-index:9999;position:fixed;width:100%;height:100%;background:rgba(0,0,0,.3)}.b-layout>.b-layout-loading:before{animation:1s linear infinite spinner;border:solid 3px #eee;border-bottom-color:var(--b-theme-primary);border-radius:50%;height:40px;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:40px;content:' '}.b-layout.b-layout-has-sider{flex-direction:row;min-height:0}.b-layout.b-layout-has-sider .b-layout{overflow-x:hidden}.b-layout-header,.b-layout-footer{flex:0 0 auto}.b-layout-header{color:rgba(0,0,0,.65)}.b-layout-header-fixed{position:sticky;z-index:1;top:0;flex:0}.b-layout-footer{color:rgba(0,0,0,.65)}.b-layout-footer-fixed{position:sticky;z-index:1;bottom:0;flex:0}.b-layout-content{flex:1}.b-layout-sider{display:flex;position:relative;background:#001529}.b-layout-sider-content{position:sticky;top:0;z-index:2}.b-layout-header .navbar{line-height:inherit}.b-bar-horizontal[data-collapse=hide]{flex-wrap:nowrap}.b-bar-horizontal[data-collapse=hide][data-broken=true]{height:var(--b-bar-horizontal-height,auto)}.b-bar-horizontal[data-broken=false]{height:var(--b-bar-horizontal-height,auto)}.b-bar-vertical-inline,.b-bar-vertical-popout,.b-bar-vertical-small{display:flex;flex-direction:column;flex-wrap:nowrap;position:sticky;top:0;padding:0;min-width:var(--b-vertical-bar-width,230px);max-width:var(--b-vertical-bar-width,230px);width:var(--b-vertical-bar-width,230px);transition:width 200ms ease-in-out,min-width 200ms ease-in-out;box-shadow:2px 0 6px rgba(0,21,41,.35);height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.b-bar-vertical-inline .b-bar-menu,.b-bar-vertical-popout .b-bar-menu,.b-bar-vertical-small .b-bar-menu{width:100%;display:flex;flex:1;justify-content:space-between;flex-direction:column;align-self:stretch}.b-bar-vertical-inline .b-bar-brand,.b-bar-vertical-popout .b-bar-brand,.b-bar-vertical-small .b-bar-brand{width:100%;display:flex;height:var(--b-vertical-bar-brand-height,64px);min-height:var(--b-vertical-bar-brand-height,64px)}.b-bar-vertical-inline .b-bar-toggler-inline,.b-bar-vertical-popout .b-bar-toggler-inline,.b-bar-vertical-small .b-bar-toggler-inline{height:var(--b-vertical-bar-brand-height,64px);padding:12px;display:inline-flex;cursor:pointer;position:absolute;right:0}.b-bar-vertical-inline .b-bar-toggler-inline>*,.b-bar-vertical-popout .b-bar-toggler-inline>*,.b-bar-vertical-small .b-bar-toggler-inline>*{margin:auto}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle){display:flex;position:fixed;left:var(--b-vertical-bar-width,230px);border-radius:0 10px 10px 0;border:0;width:10px;height:40px;padding:5px;align-items:center;transition:width 200ms ease-in-out,left 200ms ease-in-out;box-shadow:2px 0 6px rgba(0,21,41,.35);cursor:pointer}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*{margin:auto;display:none}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover{width:45px}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*{display:block}.b-bar-vertical-inline .b-bar-item,.b-bar-vertical-popout .b-bar-item,.b-bar-vertical-small .b-bar-item{margin:auto;flex-grow:1;min-height:40px}.b-bar-vertical-inline .b-bar-item .b-bar-icon,.b-bar-vertical-popout .b-bar-item .b-bar-icon,.b-bar-vertical-small .b-bar-item .b-bar-icon{font-size:1.25rem;vertical-align:middle;margin:3px;display:inline-block}.b-bar-vertical-inline .b-bar-start,.b-bar-vertical-popout .b-bar-start,.b-bar-vertical-small .b-bar-start{width:100%;display:block}.b-bar-vertical-inline .b-bar-end,.b-bar-vertical-popout .b-bar-end,.b-bar-vertical-small .b-bar-end{padding-bottom:1rem;width:100%;padding-top:1rem;display:block}.b-bar-vertical-inline .b-bar-link,.b-bar-vertical-popout .b-bar-link,.b-bar-vertical-small .b-bar-link{display:block;width:100%;text-decoration:none;padding:.5rem .5rem .5rem 1.5rem;cursor:pointer;overflow-x:hidden;line-height:1.5rem;vertical-align:middle;transition:font-size 150ms ease-in}.b-bar-vertical-inline .b-bar-label,.b-bar-vertical-popout .b-bar-label,.b-bar-vertical-small .b-bar-label{background:transparent;color:#adb5bd;padding:.375rem 1.25rem;font-size:.75rem;text-overflow:ellipsis;overflow-x:hidden}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(225deg);transform:rotate(225deg);top:.7rem}.b-bar-vertical-inline .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-popout .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-small .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(45deg);transform:rotate(45deg);top:.5rem}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu{display:none;background:inherit;color:inherit;float:none;padding:5px 0}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true],.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true],.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true]{display:block}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item{position:relative;color:inherit;transition:background 100ms ease-in-out,color 100ms ease-in-out;text-decoration:none;display:block;width:100%;overflow-x:hidden}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i{margin-right:.3rem}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu:before,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu:before,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu:before{background:inherit;box-shadow:none}.b-bar-vertical-inline .b-bar-mobile-toggle,.b-bar-vertical-popout .b-bar-mobile-toggle,.b-bar-vertical-small .b-bar-mobile-toggle{right:20px;margin:auto;display:none}.b-bar-vertical-inline .b-bar-item-multi-line,.b-bar-vertical-popout .b-bar-item-multi-line,.b-bar-vertical-small .b-bar-item-multi-line{display:-webkit-box !important;-webkit-box-orient:vertical;-webkit-line-clamp:var(--b-bar-item-lines,2);white-space:normal !important;overflow:hidden;text-overflow:ellipsis}.b-bar-vertical-inline.b-bar-dark,.b-bar-vertical-popout.b-bar-dark,.b-bar-vertical-small.b-bar-dark{background:var(--b-bar-dark-background,#001529);color:var(--b-bar-dark-color,rgba(255,255,255,.5))}.b-bar-vertical-inline.b-bar-dark .b-bar-brand,.b-bar-vertical-popout.b-bar-dark .b-bar-brand,.b-bar-vertical-small.b-bar-dark .b-bar-brand{background:var(--b-bar-brand-dark-background,rgba(255,255,255,.025))}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link{color:#fff}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link.active,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link.active,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link.active{color:#fff;background:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link:hover,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link:hover{color:#fff;background:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle){background:var(--b-bar-dark-background,#001529);color:var(--b-bar-dark-color,rgba(255,255,255,.5))}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu{background:var(--b-bar-dropdown-dark-background,#000c17)}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active{color:var(--b-bar-item-dark-active-color,#fff);background:var(--b-bar-item-dark-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover{color:var(--b-bar-item-dark-hover-color,#fff);background:var(--b-bar-item-dark-hover-background,rgba(255,255,255,.3))}.b-bar-vertical-inline.b-bar-dark .b-bar-link,.b-bar-vertical-popout.b-bar-dark .b-bar-link,.b-bar-vertical-small.b-bar-dark .b-bar-link{color:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-link.active,.b-bar-vertical-popout.b-bar-dark .b-bar-link.active,.b-bar-vertical-small.b-bar-dark .b-bar-link.active{color:var(--b-bar-item-dark-active-color,#fff);background:var(--b-bar-item-dark-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-dark .b-bar-link:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-link:hover,.b-bar-vertical-small.b-bar-dark .b-bar-link:hover{color:var(--b-bar-item-dark-hover-color,#fff);background:var(--b-bar-item-dark-hover-background,rgba(255,255,255,.3))}.b-bar-vertical-inline.b-bar-light,.b-bar-vertical-popout.b-bar-light,.b-bar-vertical-small.b-bar-light{background:var(--b-bar-light-background,#fff);color:var(--b-bar-light-color,rgba(0,0,0,.7))}.b-bar-vertical-inline.b-bar-light .b-bar-brand,.b-bar-vertical-popout.b-bar-light .b-bar-brand,.b-bar-vertical-small.b-bar-light .b-bar-brand{background:var(--b-bar-brand-light-background,rgba(0,0,0,.025))}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link{color:#000}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link.active,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link.active,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link.active{background:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link:hover,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link:hover,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link:hover{background:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle){background:var(--b-bar-brand-light-background,#fff);color:var(--b-bar-light-color,rgba(0,0,0,.7))}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu{background:var(--b-bar-dropdown-light-background,#f2f2f2)}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active{color:var(--b-bar-item-light-active-color,#000);background:var(--b-bar-item-light-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover{color:var(--b-bar-item-dark-hover-color,#000);background:var(--b-bar-item-dark-hover-background,rgba(0,0,0,.3))}.b-bar-vertical-inline.b-bar-light .b-bar-link,.b-bar-vertical-popout.b-bar-light .b-bar-link,.b-bar-vertical-small.b-bar-light .b-bar-link{color:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-link.active,.b-bar-vertical-popout.b-bar-light .b-bar-link.active,.b-bar-vertical-small.b-bar-light .b-bar-link.active{color:var(--b-bar-item-light-active-color,#000);background:var(--b-bar-item-light-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-light .b-bar-link:hover,.b-bar-vertical-popout.b-bar-light .b-bar-link:hover,.b-bar-vertical-small.b-bar-light .b-bar-link:hover{color:var(--b-bar-item-dark-hover-color,#000);background:var(--b-bar-item-dark-hover-background,rgba(0,0,0,.3))}.b-bar-vertical-small,.b-bar-vertical-inline[data-collapse=small],.b-bar-vertical-popout[data-collapse=small]{width:var(--b-vertical-bar-small-width,64px);min-width:var(--b-vertical-bar-small-width,64px);transition:width 200ms ease-in-out,min-width 200ms ease-in-out}.b-bar-vertical-small .b-bar-toggler-inline,.b-bar-vertical-inline[data-collapse=small] .b-bar-toggler-inline,.b-bar-vertical-popout[data-collapse=small] .b-bar-toggler-inline{position:relative;width:100%}.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-inline[data-collapse=small] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout[data-collapse=small] .b-bar-toggler-popout:not(.b-bar-mobile-toggle){left:var(--b-vertical-bar-small-width,64px)}.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before{display:none}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container{z-index:100;max-height:50vh;position:absolute !important;margin:-42px 5px 0 5px;display:flex;width:var(--b-vertical-bar-popout-menu-width,180px);left:var(--b-vertical-bar-small-width,64px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-small-width,64px);left:unset}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px 0 rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05);border-radius:3px;overflow-y:auto;overflow-x:hidden;flex:1 100%}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 1.5rem}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before{position:absolute;top:0;left:-7px;right:0;bottom:0;width:100%;height:100%;opacity:.0001;content:' ';z-index:-1}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before{left:unset;right:-7px}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container{left:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(135deg);transform:rotate(135deg);right:.8rem}@keyframes b-bar-link-small{to{text-align:center;padding-left:0;padding-right:0}}.b-bar-vertical-small .b-bar-item>.b-bar-link,.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-link,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-link,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-link,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link{animation:b-bar-link-small forwards;animation-delay:170ms;font-size:0;transition:font-size 100ms ease-out}.b-bar-vertical-small .b-bar-item>.b-bar-link:after,.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-link:after,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-link:after,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link:after,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-link:after,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link:after{display:none}.b-bar-vertical-small .b-bar-label,.b-bar-vertical-inline[data-collapse=small] .b-bar-label,.b-bar-vertical-popout[data-collapse=small] .b-bar-label{text-align:center}.b-bar-vertical-inline:not([data-collapse]){overflow-y:auto;overflow-x:hidden}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container{position:relative}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{position:relative !important;border:none;border-radius:0;box-shadow:none}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 3rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(135deg);transform:rotate(135deg);right:.8rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container{z-index:100;max-height:50vh;position:absolute !important;margin:-42px 5px 0 5px;display:flex;width:var(--b-vertical-bar-popout-menu-width,180px);left:var(--b-vertical-bar-width,230px)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-width,230px);left:unset}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px 0 rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05);border-radius:3px;overflow-y:auto;overflow-x:hidden;flex:1 100%}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 1.5rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before{position:absolute;top:0;left:-7px;right:0;bottom:0;width:100%;height:100%;opacity:.0001;content:' ';z-index:-1}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before{left:unset;right:-7px}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container{left:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-inline[data-collapse=hide],.b-bar-vertical-popout[data-collapse=hide],.b-bar-vertical-small[data-collapse=hide]{width:0;min-width:0;transition:width 200ms ease-in-out,min-width 200ms ease-in-out,visibility 100ms;visibility:hidden}.b-bar-vertical-inline[data-collapse=hide] .b-bar-toggler-inline,.b-bar-vertical-popout[data-collapse=hide] .b-bar-toggler-inline,.b-bar-vertical-small[data-collapse=hide] .b-bar-toggler-inline{display:none}.b-bar-vertical-inline[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle){visibility:visible;left:0}@media only screen and (max-width:576px){.b-bar-vertical-inline:not([data-collapse]){min-width:100vw}.b-bar-vertical-inline:not([data-collapse]) .b-bar-toggler-inline:not(.b-bar-mobile-toggle){display:none}.b-bar-vertical-inline:not([data-collapse]) .b-bar-toggler-popout:not(.b-bar-mobile-toggle){left:100vw}.b-bar-vertical-inline:not([data-collapse]) .b-bar-mobile-toggle{display:flex}}.b-character-casing-lower{text-transform:lowercase}.b-character-casing-upper{text-transform:uppercase}.b-character-casing-title{text-transform:lowercase}.b-character-casing-title::first-letter {text-transform:uppercase}hr.divider.divider-solid{border-top:var(--b-divider-thickness,2px) solid var(--b-divider-color,#999)}hr.divider.divider-dashed{border-top:var(--b-divider-thickness,2px) dashed var(--b-divider-color,#999)}hr.divider.divider-dotted{border-top:var(--b-divider-thickness,2px) dotted var(--b-divider-color,#999)}hr.divider.divider-text{position:relative;border:none;height:1px;background:var(--b-divider-color,#999)}hr.divider.divider-text::before{content:attr(data-content);display:inline-block;background:#fff;font-weight:bold;font-size:var(--b-divider-font-size,.85rem);color:var(--b-divider-color,#999);border-radius:30rem;padding:.2rem 2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)} -@keyframes fadeIn{0%{opacity:0}100%{opacity:1}0%{opacity:0}}@keyframes slideIn{0%{transform:translateY(1rem);opacity:0}100%{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}.badge-close{cursor:pointer}.badge-close::before{height:2px;width:50%}.badge-close::after{height:50%;width:2px}.badge-close:hover,.badge-close:focus{background-color:rgba(10,10,10,.3)}.badge-close:active{background-color:rgba(10,10,10,.4)}.navbar-nav .nav-item:hover{cursor:pointer}.navbar-nav .nav-link:hover{cursor:pointer}.nav .nav-link:hover{cursor:pointer}.nav-item{position:relative}.btn-group>.b-tooltip:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.b-tooltip:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.b-tooltip:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.b-tooltip:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-xs,.btn-group-xs>.btn{padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.15rem}.btn-md,.btn-group-md>.btn{padding:.47rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.25rem}.btn-xl,.btn-group-xl>.btn{padding:.5rem 1rem;font-size:1.5rem;line-height:1.5;border-radius:.4rem}.dropdown-toggle.dropdown-toggle-hidden::after{content:none !important}.dropdown-toggle.dropdown-toggle-hidden::before{content:none !important}.dropdown-menu.show{animation-duration:.3s;animation-fill-mode:both;animation-name:fadeIn}.figure-is-16x16{height:16px;width:16px}.figure-is-24x24{height:24px;width:24px}.figure-is-32x32{height:32px;width:32px}.figure-is-48x48{height:48px;width:48px}.figure-is-64x64{height:64px;width:64px}.figure-is-96x96{height:96px;width:96px}.figure-is-128x128{height:128px;width:128px}.figure-is-256x256{height:256px;width:256px}.figure-is-512x512{height:512px;width:512px}.form-check>.form-check-input.form-check-input-pointer,.form-check>.form-check-label.form-check-label-pointer,.custom-checkbox>.custom-control-input.custom-control-input-pointer,.custom-checkbox>.custom-control-label.custom-control-label-pointer,.custom-switch>.custom-control-input.custom-control-input-pointer,.custom-switch>.custom-control-label.custom-control-label-pointer{cursor:pointer}.form-control-plaintext.form-control-xs,.form-control-plaintext.form-control-md,.form-control-plaintext.form-control-xl{padding-right:0;padding-left:0}.form-control-xs{height:calc(1.5em + .3rem + 2px);padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.15rem}.form-control-md{height:calc(1.5em + .94rem + 2px);padding:.47rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.25rem}.form-control-xl{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.5rem;line-height:1.5;border-radius:.4rem}.custom-select-xs{height:calc(1.5em + .3rem + 2px);padding-top:.15rem;padding-bottom:.15rem;padding-left:.5rem;font-size:.75rem}.custom-select-md{height:calc(1.5em + .94rem + 2px);padding-top:.47rem;padding-bottom:.47rem;padding-left:1rem;font-size:1.125rem}.custom-select-xl{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.5rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label::after{width:.7rem;height:.7rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label{line-height:"normal";padding-left:0}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label::after{width:.8rem;height:.8rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label{line-height:"normal";padding-left:0}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label::after{width:1.25rem;height:1.25rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label{line-height:1.7rem;padding-left:3px}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label::after{width:1.55rem;height:1.55rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2rem;padding-left:6px}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label::after{width:1.85rem;height:1.85rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label{line-height:2.5rem;padding-left:10px}.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label::after{width:.7rem;height:.7rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label{line-height:normal;padding-left:0}.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label::after{width:.8rem;height:.8rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label{line-height:normal;padding-left:0}.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label::after{width:1.25rem;height:1.25rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label{line-height:1.7rem;padding-left:3px}.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label::after{width:1.55rem;height:1.55rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2rem;padding-left:6px}.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label::after{width:1.85rem;height:1.85rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label{line-height:2.5rem;padding-left:10px}.jumbotron.jumbotron-primary{background-color:#007bff;color:#fff}.jumbotron.jumbotron-secondary{background-color:#6c757d;color:#fff}.jumbotron.jumbotron-success{background-color:#28a745;color:#fff}.jumbotron.jumbotron-info{background-color:#17a2b8;color:#fff}.jumbotron.jumbotron-warning{background-color:#ffc107;color:#212529}.jumbotron.jumbotron-danger{background-color:#dc3545;color:#fff}.jumbotron.jumbotron-light{background-color:#f8f9fa;color:#212529}.jumbotron.jumbotron-dark{background-color:#343a40;color:#fff}.jumbotron.jumbotron-link{background-color:#3273dc;color:#fff}.modal-backdrop{z-index:-1}.modal.show{animation-duration:.25s;animation-fill-mode:both;animation-name:fadeIn}.page-item:not(.disabled) .page-link{cursor:pointer}.pagination-xs .page-link{padding:.125rem .25rem;font-size:.75rem;line-height:1.5}.pagination-xs .page-item:first-child .page-link{border-top-left-radius:.15rem;border-bottom-left-radius:.15rem}.pagination-xs .page-item:last-child .page-link{border-top-right-radius:.15rem;border-bottom-right-radius:.15rem}.pagination-md .page-link{padding:.625rem 1.25rem;font-size:1.125rem;line-height:1.5}.pagination-md .page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-md .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-xl .page-link{padding:1rem 2rem;font-size:1.5rem;line-height:1.5}.pagination-xl .page-item:first-child .page-link{border-top-left-radius:.4rem;border-bottom-left-radius:.4rem}.pagination-xl .page-item:last-child .page-link{border-top-right-radius:.4rem;border-bottom-right-radius:.4rem}.custom-switch .custom-control-input.custom-control-input-primary:checked~.custom-control-label::before{background-color:#007bff;border-color:#007bff}.custom-switch .custom-control-input.custom-control-input-primary:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25);border-color:#007bff}.custom-switch .custom-control-input:disabled.custom-control-input-primary:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch .custom-control-input.custom-control-input-secondary:checked~.custom-control-label::before{background-color:#6c757d;border-color:#6c757d}.custom-switch .custom-control-input.custom-control-input-secondary:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(108,117,125,.25);border-color:#6c757d}.custom-switch .custom-control-input:disabled.custom-control-input-secondary:checked~.custom-control-label::before{background-color:rgba(108,117,125,.5)}.custom-switch .custom-control-input.custom-control-input-success:checked~.custom-control-label::before{background-color:#28a745;border-color:#28a745}.custom-switch .custom-control-input.custom-control-input-success:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25);border-color:#28a745}.custom-switch .custom-control-input:disabled.custom-control-input-success:checked~.custom-control-label::before{background-color:rgba(40,167,69,.5)}.custom-switch .custom-control-input.custom-control-input-info:checked~.custom-control-label::before{background-color:#17a2b8;border-color:#17a2b8}.custom-switch .custom-control-input.custom-control-input-info:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(23,162,184,.25);border-color:#17a2b8}.custom-switch .custom-control-input:disabled.custom-control-input-info:checked~.custom-control-label::before{background-color:rgba(23,162,184,.5)}.custom-switch .custom-control-input.custom-control-input-warning:checked~.custom-control-label::before{background-color:#ffc107;border-color:#ffc107}.custom-switch .custom-control-input.custom-control-input-warning:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(255,193,7,.25);border-color:#ffc107}.custom-switch .custom-control-input:disabled.custom-control-input-warning:checked~.custom-control-label::before{background-color:rgba(255,193,7,.5)}.custom-switch .custom-control-input.custom-control-input-danger:checked~.custom-control-label::before{background-color:#dc3545;border-color:#dc3545}.custom-switch .custom-control-input.custom-control-input-danger:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25);border-color:#dc3545}.custom-switch .custom-control-input:disabled.custom-control-input-danger:checked~.custom-control-label::before{background-color:rgba(220,53,69,.5)}.custom-switch .custom-control-input.custom-control-input-light:checked~.custom-control-label::before{background-color:#f8f9fa;border-color:#f8f9fa}.custom-switch .custom-control-input.custom-control-input-light:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(248,249,250,.25);border-color:#f8f9fa}.custom-switch .custom-control-input:disabled.custom-control-input-light:checked~.custom-control-label::before{background-color:rgba(248,249,250,.5)}.custom-switch .custom-control-input.custom-control-input-dark:checked~.custom-control-label::before{background-color:#343a40;border-color:#343a40}.custom-switch .custom-control-input.custom-control-input-dark:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(52,58,64,.25);border-color:#343a40}.custom-switch .custom-control-input:disabled.custom-control-input-dark:checked~.custom-control-label::before{background-color:rgba(52,58,64,.5)}.custom-switch .custom-control-input.custom-control-input-link:checked~.custom-control-label::before{background-color:#3273dc;border-color:#3273dc}.custom-switch .custom-control-input.custom-control-input-link:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(50,115,220,.25);border-color:#3273dc}.custom-switch .custom-control-input:disabled.custom-control-input-link:checked~.custom-control-label::before{background-color:rgba(50,115,220,.5)}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label{line-height:1rem;vertical-align:middle;padding-left:0}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label::before{height:.5rem;width:calc(.75rem + (.5rem/2));border-radius:1rem}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label::after{height:calc(.5rem - 4px);width:calc(.5rem - 4px);border-radius:calc(.75rem - (.5rem/2))}.custom-switch .custom-control-input.custom-control-input-xs:checked~.custom-control-label::after{transform:translateX(calc(.75rem - (.5rem/2)))}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label{line-height:1.25rem;vertical-align:middle;padding-left:0}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label::before{height:.75rem;width:calc(1rem + (.75rem/2));border-radius:1.5rem}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label::after{height:calc(.75rem - 4px);width:calc(.75rem - 4px);border-radius:calc(1rem - (.75rem/2))}.custom-switch .custom-control-input.custom-control-input-sm:checked~.custom-control-label::after{transform:translateX(calc(1rem - (.75rem/2)))}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label{line-height:2rem;vertical-align:middle;padding-left:2rem}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label::before{height:1.5rem;width:calc(2rem + (1.5rem/2));border-radius:3rem}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label::after{height:calc(1.5rem - 4px);width:calc(1.5rem - 4px);border-radius:calc(2rem - (1.5rem/2))}.custom-switch .custom-control-input.custom-control-input-md:checked~.custom-control-label::after{transform:translateX(calc(2rem - (1.5rem/2)))}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2.5rem;vertical-align:middle;padding-left:3rem}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label::before{height:2rem;width:calc(3rem + (2rem/2));border-radius:4rem}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label::after{height:calc(2rem - 4px);width:calc(2rem - 4px);border-radius:calc(3rem - (2rem/2))}.custom-switch .custom-control-input.custom-control-input-lg:checked~.custom-control-label::after{transform:translateX(calc(3rem - (2rem/2)))}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label{line-height:3rem;vertical-align:middle;padding-left:4rem}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label::before{height:2.5rem;width:calc(4rem + (2.5rem/2));border-radius:5rem}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label::after{height:calc(2.5rem - 4px);width:calc(2.5rem - 4px);border-radius:calc(4rem - (2.5rem/2))}.custom-switch .custom-control-input.custom-control-input-xl:checked~.custom-control-label::after{transform:translateX(calc(4rem - (2.5rem/2)))}table.table tbody tr.selected{background-color:var(--primary)}tr.table-row-selectable:hover{cursor:pointer} -.snackbar{align-items:center;background-color:var(--b-snackbar-background,#323232);color:var(--b-snackbar-text-color,#fff);font-size:.875rem;line-height:1.42857;opacity:0;padding:.875rem 1.5rem;position:absolute;bottom:0;left:0;transform:translateY(100%);transition:opacity 0s .195s,transform .195s cubic-bezier(.4,0,1,1);width:100%;z-index:60}@media(min-width:768px){.snackbar{border-radius:2px;max-width:35.5rem;min-width:18rem;left:50%;transform:translate(-50%,100%);width:auto}}@media(min-width:768px){.snackbar{transition:opacity 0s .2535s,transform .2535s cubic-bezier(.4,0,1,1)}}@media(min-width:1200px){.snackbar{transition:opacity 0s .13s,transform .13s cubic-bezier(.4,0,1,1)}}@media screen and (prefers-reduced-motion:reduce){.snackbar{transition:none}}.snackbar.snackbar-show{transition-duration:.225s;transition-property:transform;transition-timing-function:cubic-bezier(0,0,.2,1);opacity:1;transform:translateY(0)}@media(min-width:768px){.snackbar.snackbar-show{transition-duration:.2925s}}@media(min-width:1200px){.snackbar.snackbar-show{transition-duration:.15s}}@media screen and (prefers-reduced-motion:reduce){.snackbar.snackbar-show{transition:none}}@media(min-width:768px){.snackbar.snackbar-show{transform:translate(-50%,-1.5rem)}}.snackbar-header{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:DARKEN(var(--b-snackbar-background,#323232),30%);margin-right:auto;min-width:0;font-weight:bold;padding-bottom:.875rem}.snackbar-footer{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:DARKEN(var(--b-snackbar-background,#323232),30%);margin-right:auto;min-width:0;padding-top:.875rem}.snackbar-body{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:auto;max-height:100%;min-width:0}.snackbar-action-button{transition-duration:.3s;transition-property:background-color,background-image;transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:transparent;background-image:none;border:0;color:var(--b-snackbar-button-color,var(--b-snackbar-button-color,#ff4081));cursor:pointer;display:block;flex-shrink:0;font-size:inherit;font-weight:500;line-height:inherit;padding:0;text-transform:uppercase;white-space:nowrap}@media(min-width:768px){.snackbar-action-button{transition-duration:.39s}}@media(min-width:1200px){.snackbar-action-button{transition-duration:.2s}}@media screen and (prefers-reduced-motion:reduce){.snackbar-action-button{transition:none}}.snackbar-action-button:focus,.snackbar-action-button:hover{color:var(--b-snackbar-button-hover-color,var(--b-snackbar-button-hover-color,#ff80ab));text-decoration:none}@media(min-width:768px){.snackbar-action-button{margin-left:3rem}}.snackbar-action-button:focus{outline:0}@media(min-width:768px){.snackbar-left,.snackbar-right{transform:translateY(100%)}.snackbar-left.snackbar-show,.snackbar-right.snackbar-show{transform:translateY(-1.5rem)}}@media(min-width:768px){.snackbar-left{left:1.5rem}}@media(min-width:768px){.snackbar-right{right:1.5rem;left:auto}}.snackbar-multi-line{padding-top:1.25rem;padding-bottom:1.25rem}.snackbar-multi-line .snackbar-body{white-space:normal}.snackbar-primary{background-color:var(--b-snackbar-background-primary,#cce5ff);color:var(--b-snackbar-text-primary,#004085)}.snackbar-action-button-primary{color:var(--b-snackbar-button-primary,#ff4081)}.snackbar-action-button-primary:focus,.snackbar-action-button-primary:hover{color:var(--b-snackbar-button-hover-primary,#ff80ab)}.snackbar-secondary{background-color:var(--b-snackbar-background-secondary,#e2e3e5);color:var(--b-snackbar-text-secondary,#383d41)}.snackbar-action-button-secondary{color:var(--b-snackbar-button-secondary,#ff4081)}.snackbar-action-button-secondary:focus,.snackbar-action-button-secondary:hover{color:var(--b-snackbar-button-hover-secondary,#ff80ab)}.snackbar-success{background-color:var(--b-snackbar-background-success,#d4edda);color:var(--b-snackbar-text-success,#155724)}.snackbar-action-button-success{color:var(--b-snackbar-button-success,#ff4081)}.snackbar-action-button-success:focus,.snackbar-action-button-success:hover{color:var(--b-snackbar-button-hover-success,#ff80ab)}.snackbar-danger{background-color:var(--b-snackbar-background-danger,#f8d7da);color:var(--b-snackbar-text-danger,#721c24)}.snackbar-action-button-danger{color:var(--b-snackbar-button-danger,#ff4081)}.snackbar-action-button-danger:focus,.snackbar-action-button-danger:hover{color:var(--b-snackbar-button-hover-danger,#ff80ab)}.snackbar-warning{background-color:var(--b-snackbar-background-warning,#fff3cd);color:var(--b-snackbar-text-warning,#856404)}.snackbar-action-button-warning{color:var(--b-snackbar-button-warning,#ff4081)}.snackbar-action-button-warning:focus,.snackbar-action-button-warning:hover{color:var(--b-snackbar-button-hover-warning,#ff80ab)}.snackbar-info{background-color:var(--b-snackbar-background-info,#d1ecf1);color:var(--b-snackbar-text-info,#0c5460)}.snackbar-action-button-info{color:var(--b-snackbar-button-info,#ff4081)}.snackbar-action-button-info:focus,.snackbar-action-button-info:hover{color:var(--b-snackbar-button-hover-info,#ff80ab)}.snackbar-light{background-color:var(--b-snackbar-background-light,#fefefe);color:var(--b-snackbar-text-light,#818182)}.snackbar-action-button-light{color:var(--b-snackbar-button-light,#ff4081)}.snackbar-action-button-light:focus,.snackbar-action-button-light:hover{color:var(--b-snackbar-button-hover-light,#ff80ab)}.snackbar-dark{background-color:var(--b-snackbar-background-dark,#d6d8d9);color:var(--b-snackbar-text-dark,#1b1e21)}.snackbar-action-button-dark{color:var(--b-snackbar-button-dark,#ff4081)}.snackbar-action-button-dark:focus,.snackbar-action-button-dark:hover{color:var(--b-snackbar-button-hover-dark,#ff80ab)}.snackbar-stack{display:flex;flex-direction:column;position:fixed;z-index:60;bottom:0}.snackbar-stack .snackbar{position:relative;flex-direction:row;margin-bottom:0}.snackbar-stack .snackbar:not(:last-child){margin-bottom:1.5rem}@media(min-width:576px){.snackbar-stack-center{left:50%;transform:translate(-50%,0%)}.snackbar-stack-left{left:1.5rem}.snackbar-stack-right{right:1.5rem}} .flag-icon-background{background-size:contain;background-position:50%;background-repeat:no-repeat}.flag-icon{background-size:contain;background-position:50%;background-repeat:no-repeat;position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:" "}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ae.svg)}.flag-icon-af{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/af.svg)}.flag-icon-ag{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ai.svg)}.flag-icon-al{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/al.svg)}.flag-icon-am{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/am.svg)}.flag-icon-ao{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ar.svg)}.flag-icon-as{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/as.svg)}.flag-icon-at{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/at.svg)}.flag-icon-au{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/au.svg)}.flag-icon-aw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ax.svg)}.flag-icon-az{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/az.svg)}.flag-icon-ba{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bd.svg)}.flag-icon-be{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/be.svg)}.flag-icon-bf{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bq.svg)}.flag-icon-br{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/br.svg)}.flag-icon-bs{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bw.svg)}.flag-icon-by{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/by.svg)}.flag-icon-bz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cn.svg)}.flag-icon-co{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/co.svg)}.flag-icon-cr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cz.svg)}.flag-icon-de{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/de.svg)}.flag-icon-dj{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dm.svg)}.flag-icon-do{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/do.svg)}.flag-icon-dz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eh.svg)}.flag-icon-er{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/er.svg)}.flag-icon-es{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es.svg)}.flag-icon-et{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/et.svg)}.flag-icon-fi{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hu.svg)}.flag-icon-id{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/id.svg)}.flag-icon-ie{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ie.svg)}.flag-icon-il{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/il.svg)}.flag-icon-im{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/im.svg)}.flag-icon-in{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/in.svg)}.flag-icon-io{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/io.svg)}.flag-icon-iq{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ir.svg)}.flag-icon-is{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/is.svg)}.flag-icon-it{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/it.svg)}.flag-icon-je{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/je.svg)}.flag-icon-jm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ki.svg)}.flag-icon-km{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/km.svg)}.flag-icon-kn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kz.svg)}.flag-icon-la{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/la.svg)}.flag-icon-lb{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lc.svg)}.flag-icon-li{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/li.svg)}.flag-icon-lk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mc.svg)}.flag-icon-md{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/md.svg)}.flag-icon-me{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/me.svg)}.flag-icon-mf{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mx.svg)}.flag-icon-my{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/my.svg)}.flag-icon-mz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mz.svg)}.flag-icon-na{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/na.svg)}.flag-icon-nc{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nl.svg)}.flag-icon-no{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/no.svg)}.flag-icon-np{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/np.svg)}.flag-icon-nr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nz.svg)}.flag-icon-om{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/om.svg)}.flag-icon-pa{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pw.svg)}.flag-icon-py{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/py.svg)}.flag-icon-qa{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/qa.svg)}.flag-icon-re{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/re.svg)}.flag-icon-ro{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sd.svg)}.flag-icon-se{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/se.svg)}.flag-icon-sg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sh.svg)}.flag-icon-si{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/si.svg)}.flag-icon-sj{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sn.svg)}.flag-icon-so{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/so.svg)}.flag-icon-sr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ss.svg)}.flag-icon-st{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/st.svg)}.flag-icon-sv{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tc.svg)}.flag-icon-td{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/td.svg)}.flag-icon-tf{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tg.svg)}.flag-icon-th{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/th.svg)}.flag-icon-tj{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tn.svg)}.flag-icon-to{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/to.svg)}.flag-icon-tr{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ug.svg)}.flag-icon-um{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/um.svg)}.flag-icon-us{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/us.svg)}.flag-icon-uy{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/uz.svg)}.flag-icon-va{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/va.svg)}.flag-icon-vc{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/yt.svg)}.flag-icon-za{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/za.svg)}.flag-icon-zm{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/zw.svg)}.flag-icon-es-ca{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es-ca.svg)}.flag-icon-es-ca.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es-ca.svg)}.flag-icon-es-ga{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es-ga.svg)}.flag-icon-es-ga.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es-ga.svg)}.flag-icon-eu{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-eng.svg)}.flag-icon-gb-nir{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-nir.svg)}.flag-icon-gb-nir.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-nir.svg)}.flag-icon-gb-sct{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/un.svg)}.flag-icon-xk{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/xk.svg)}.flag-icon-xk.flag-icon-squared{background-image:url(_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/xk.svg)} -#main-navbar-tools a.dropdown-toggle{text-decoration:none;color:#fff}.navbar .dropdown-submenu{position:relative}.navbar .dropdown-menu{margin:0;padding:0}.navbar .dropdown-menu a{font-size:.9em;padding:10px 15px;display:block;min-width:210px;text-align:left;border-radius:.25rem;min-height:44px}.navbar .dropdown-submenu a::after{transform:rotate(-90deg);position:absolute;right:16px;top:18px}.navbar .dropdown-submenu .dropdown-menu{top:0;left:100%}.card-header .btn{padding:2px 6px}.card-header h5{margin:0}.container>.card{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}@media screen and (min-width:768px){.navbar .dropdown:hover>.dropdown-menu{display:block}.navbar .dropdown-submenu:hover>.dropdown-menu{display:block}}.input-validation-error{border-color:#dc3545}.field-validation-error{font-size:.8em}.dataTables_scrollBody{min-height:248px}div.dataTables_wrapper div.dataTables_info{padding-top:11px;white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{padding-top:10px;margin-bottom:0}.rtl .dropdown-menu-right{right:auto;left:0}.rtl .dropdown-menu-right a{text-align:right}.rtl .navbar .dropdown-menu a{text-align:right}.rtl .navbar .dropdown-submenu .dropdown-menu{top:0;left:auto;right:100%}.navbar-dark .navbar-nav .nav-link{color:#000 !important}.navbar-nav>.nav-item>.nav-link,.navbar-nav>.nav-item>.dropdown>.nav-link{color:#fff !important}.navbar-nav>.nav-item>div>button{color:#fff}.btn span.spinner-border{margin-right:.5rem} +body:before{content:"mobile";display:none;visibility:hidden}@media(min-width:768px){body:before{content:"tablet"}}@media(min-width:992px){body:before{content:"desktop"}}@media(min-width:1200px){body:before{content:"widescreen"}}@media(min-width:1400px){body:before{content:"fullhd"}}hr.divider.divider-solid{border-top:var(--b-divider-thickness,1px) solid var(--b-divider-color,#999)}hr.divider.divider-dashed{border-top:var(--b-divider-thickness,1px) dashed var(--b-divider-color,#999)}hr.divider.divider-dotted{border-top:var(--b-divider-thickness,1px) dotted var(--b-divider-color,#999)}hr.divider.divider-text{position:relative;border:none;height:var(--b-divider-thickness,1px);background:var(--b-divider-color,#999)}hr.divider.divider-text::before{content:attr(data-content);display:inline-block;background:#fff;font-weight:bold;font-size:var(--b-divider-font-size,.85rem);color:var(--b-divider-color,#999);border-radius:30rem;padding:.2rem 2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.progress.progress-xs{height:.25rem}.progress.progress-sm{height:.5rem}.progress.progress-md{height:1rem}.progress.progress-lg{height:1.5rem}.progress.progress-xl{height:2rem}.b-page-progress{width:100%;height:4px;z-index:9999;top:0;left:0;position:fixed;display:none}.b-page-progress .b-page-progress-indicator{width:0;height:100%;transition:height .3s;background-color:#000;transition:width 1s}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-indeterminate{width:30%;animation:running-page-progress 2s cubic-bezier(.4,0,.2,1) infinite}.b-page-progress.b-page-progress-active{display:block}@keyframes running-page-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0%}100%{margin-left:100%;margin-right:0}}.tippy-box[data-animation=scale][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=scale][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=scale][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=scale][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=scale][data-state=hidden]{transform:scale(.5);opacity:0}.tippy-box[data-theme~='blazorise']{background-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9));color:var(--b-tooltip-color,#fff)}.tippy-box[data-theme~='blazorise'][data-placement^='top']>.tippy-arrow::before{border-top-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.tippy-box[data-theme~='blazorise'][data-placement^='bottom']>.tippy-arrow::before{border-bottom-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.tippy-box[data-theme~='blazorise'][data-placement^='left']>.tippy-arrow::before{border-left-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.tippy-box[data-theme~='blazorise'][data-placement^='right']>.tippy-arrow::before{border-right-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.tippy-box[data-theme~='blazorise']>.tippy-svg-arrow{fill:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.b-tooltip-inline{display:inline-block}.b-layout{display:flex;flex:auto;flex-direction:column}.b-layout.b-layout-root{height:100vh}.b-layout,.b-layout *{box-sizing:border-box}@keyframes spinner{0%{transform:translate3d(-50%,-50%,0) rotate(0deg)}100%{transform:translate3d(-50%,-50%,0) rotate(360deg)}}.b-layout>.b-layout-loading{z-index:9999;position:fixed;width:100%;height:100%;background:rgba(0,0,0,.3)}.b-layout>.b-layout-loading:before{animation:1s linear infinite spinner;border:solid 3px #eee;border-bottom-color:var(--b-theme-primary);border-radius:50%;height:40px;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:40px;content:' '}.b-layout.b-layout-has-sider{flex-direction:row;min-height:0}.b-layout.b-layout-has-sider .b-layout{overflow-x:hidden}.b-layout-header,.b-layout-footer{flex:0 0 auto}.b-layout-header{color:rgba(0,0,0,.65)}.b-layout.b-layout-root.b-layout-has-sider>.b-layout-header-fixed,.b-layout.b-layout-root.b-layout-has-sider>.b-layout>.b-layout-header-fixed{position:sticky;top:0;width:100%;flex:0}.b-layout.b-layout-root:not(.b-layout-has-sider) .b-layout-header-fixed,.b-layout.b-layout-root:not(.b-layout-has-sider)>.b-layout .b-layout-header-fixed{position:fixed;top:0;left:0;right:0;flex:0}.b-layout.b-layout-root:not(.b-layout-has-sider) .b-layout-header-fixed+.b-layout-content,.b-layout.b-layout-root:not(.b-layout-has-sider)>.b-layout .b-layout-header-fixed+.b-layout-content{margin-top:var(--b-bar-horizontal-height,auto)}.b-layout-footer{color:rgba(0,0,0,.65)}.b-layout-footer-fixed{position:sticky;z-index:1;bottom:0;flex:0}.b-layout-content{flex:1}.b-layout-sider{display:flex;position:relative;background:#001529}.b-layout-sider-content{position:sticky;top:0;z-index:2}.b-layout-header .navbar{line-height:inherit}.b-bar-horizontal[data-collapse=hide]{flex-wrap:nowrap}.b-bar-horizontal[data-collapse=hide][data-broken=true]{height:var(--b-bar-horizontal-height,auto)}.b-bar-horizontal[data-broken=false]{height:var(--b-bar-horizontal-height,auto)}.b-bar-vertical-inline,.b-bar-vertical-popout,.b-bar-vertical-small{display:flex;flex-direction:column;flex-wrap:nowrap;position:sticky;top:0;padding:0;min-width:var(--b-vertical-bar-width,230px);max-width:var(--b-vertical-bar-width,230px);width:var(--b-vertical-bar-width,230px);transition:width 200ms ease-in-out,min-width 200ms ease-in-out;box-shadow:2px 0 6px rgba(0,21,41,.35);height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.b-bar-vertical-inline .b-bar-menu,.b-bar-vertical-popout .b-bar-menu,.b-bar-vertical-small .b-bar-menu{width:100%;display:flex;flex:1;justify-content:space-between;flex-direction:column;align-self:stretch}.b-bar-vertical-inline .b-bar-brand,.b-bar-vertical-popout .b-bar-brand,.b-bar-vertical-small .b-bar-brand{width:100%;display:flex;height:var(--b-vertical-bar-brand-height,64px);min-height:var(--b-vertical-bar-brand-height,64px)}.b-bar-vertical-inline .b-bar-toggler-inline,.b-bar-vertical-popout .b-bar-toggler-inline,.b-bar-vertical-small .b-bar-toggler-inline{height:var(--b-vertical-bar-brand-height,64px);padding:12px;display:inline-flex;cursor:pointer;position:absolute;right:0}.b-bar-vertical-inline .b-bar-toggler-inline>*,.b-bar-vertical-popout .b-bar-toggler-inline>*,.b-bar-vertical-small .b-bar-toggler-inline>*{margin:auto}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle){display:flex;position:fixed;left:var(--b-vertical-bar-width,230px);border-radius:0 10px 10px 0;border:0;width:10px;height:40px;padding:5px;align-items:center;transition:width 200ms ease-in-out,left 200ms ease-in-out;box-shadow:2px 0 6px rgba(0,21,41,.35);cursor:pointer}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*{margin:auto;display:none}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover{width:45px}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*{display:block}.b-bar-vertical-inline .b-bar-item,.b-bar-vertical-popout .b-bar-item,.b-bar-vertical-small .b-bar-item{margin:auto;flex-grow:1;min-height:40px}.b-bar-vertical-inline .b-bar-item .b-bar-icon,.b-bar-vertical-popout .b-bar-item .b-bar-icon,.b-bar-vertical-small .b-bar-item .b-bar-icon{font-size:1.25rem;vertical-align:middle;margin:3px;display:inline-block}.b-bar-vertical-inline .b-bar-start,.b-bar-vertical-popout .b-bar-start,.b-bar-vertical-small .b-bar-start{width:100%;display:block}.b-bar-vertical-inline .b-bar-end,.b-bar-vertical-popout .b-bar-end,.b-bar-vertical-small .b-bar-end{padding-bottom:1rem;width:100%;padding-top:1rem;display:block}.b-bar-vertical-inline .b-bar-link,.b-bar-vertical-popout .b-bar-link,.b-bar-vertical-small .b-bar-link{display:block;width:100%;text-decoration:none;padding:.5rem .5rem .5rem 1.5rem;cursor:pointer;overflow-x:hidden;line-height:1.5rem;vertical-align:middle;transition:font-size 150ms ease-in}.b-bar-vertical-inline .b-bar-label,.b-bar-vertical-popout .b-bar-label,.b-bar-vertical-small .b-bar-label{background:transparent;color:#adb5bd;padding:.375rem 1.25rem;font-size:.75rem;text-overflow:ellipsis;overflow-x:hidden}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(225deg);transform:rotate(225deg);top:.7rem}.b-bar-vertical-inline .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-popout .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-small .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(45deg);transform:rotate(45deg);top:.5rem}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu{display:none;background:inherit;color:inherit;float:none;padding:5px 0}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true],.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true],.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true]{display:block}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item{position:relative;color:inherit;transition:background 100ms ease-in-out,color 100ms ease-in-out;text-decoration:none;display:block;width:100%;overflow-x:hidden}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i{margin-right:.3rem}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu:before,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu:before,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu:before{background:inherit;box-shadow:none}.b-bar-vertical-inline .b-bar-mobile-toggle,.b-bar-vertical-popout .b-bar-mobile-toggle,.b-bar-vertical-small .b-bar-mobile-toggle{right:20px;margin:auto;display:none}.b-bar-vertical-inline .b-bar-item-multi-line,.b-bar-vertical-popout .b-bar-item-multi-line,.b-bar-vertical-small .b-bar-item-multi-line{display:-webkit-box !important;-webkit-box-orient:vertical;-webkit-line-clamp:var(--b-bar-item-lines,2);white-space:normal !important;overflow:hidden;text-overflow:ellipsis}.b-bar-vertical-inline.b-bar-dark,.b-bar-vertical-popout.b-bar-dark,.b-bar-vertical-small.b-bar-dark{background:var(--b-bar-dark-background,#001529);color:var(--b-bar-dark-color,rgba(255,255,255,.5))}.b-bar-vertical-inline.b-bar-dark .b-bar-brand,.b-bar-vertical-popout.b-bar-dark .b-bar-brand,.b-bar-vertical-small.b-bar-dark .b-bar-brand{background:var(--b-bar-brand-dark-background,rgba(255,255,255,.025))}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link{color:#fff}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link.active,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link.active,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link.active{color:#fff;background:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link:hover,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link:hover{color:#fff;background:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle){background:var(--b-bar-dark-background,#001529);color:var(--b-bar-dark-color,rgba(255,255,255,.5))}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu{background:var(--b-bar-dropdown-dark-background,#000c17)}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active{color:var(--b-bar-item-dark-active-color,#fff);background:var(--b-bar-item-dark-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover{color:var(--b-bar-item-dark-hover-color,#fff);background:var(--b-bar-item-dark-hover-background,rgba(255,255,255,.3))}.b-bar-vertical-inline.b-bar-dark .b-bar-link,.b-bar-vertical-popout.b-bar-dark .b-bar-link,.b-bar-vertical-small.b-bar-dark .b-bar-link{color:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-link.active,.b-bar-vertical-popout.b-bar-dark .b-bar-link.active,.b-bar-vertical-small.b-bar-dark .b-bar-link.active{color:var(--b-bar-item-dark-active-color,#fff);background:var(--b-bar-item-dark-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-dark .b-bar-link:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-link:hover,.b-bar-vertical-small.b-bar-dark .b-bar-link:hover{color:var(--b-bar-item-dark-hover-color,#fff);background:var(--b-bar-item-dark-hover-background,rgba(255,255,255,.3))}.b-bar-vertical-inline.b-bar-light,.b-bar-vertical-popout.b-bar-light,.b-bar-vertical-small.b-bar-light{background:var(--b-bar-light-background,#fff);color:var(--b-bar-light-color,rgba(0,0,0,.7))}.b-bar-vertical-inline.b-bar-light .b-bar-brand,.b-bar-vertical-popout.b-bar-light .b-bar-brand,.b-bar-vertical-small.b-bar-light .b-bar-brand{background:var(--b-bar-brand-light-background,rgba(0,0,0,.025))}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link{color:#000}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link.active,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link.active,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link.active{background:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link:hover,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link:hover,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link:hover{background:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle){background:var(--b-bar-brand-light-background,#fff);color:var(--b-bar-light-color,rgba(0,0,0,.7))}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu{background:var(--b-bar-dropdown-light-background,#f2f2f2)}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active{color:var(--b-bar-item-light-active-color,#000);background:var(--b-bar-item-light-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover{color:var(--b-bar-item-dark-hover-color,#000);background:var(--b-bar-item-dark-hover-background,rgba(0,0,0,.3))}.b-bar-vertical-inline.b-bar-light .b-bar-link,.b-bar-vertical-popout.b-bar-light .b-bar-link,.b-bar-vertical-small.b-bar-light .b-bar-link{color:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-link.active,.b-bar-vertical-popout.b-bar-light .b-bar-link.active,.b-bar-vertical-small.b-bar-light .b-bar-link.active{color:var(--b-bar-item-light-active-color,#000);background:var(--b-bar-item-light-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-light .b-bar-link:hover,.b-bar-vertical-popout.b-bar-light .b-bar-link:hover,.b-bar-vertical-small.b-bar-light .b-bar-link:hover{color:var(--b-bar-item-dark-hover-color,#000);background:var(--b-bar-item-dark-hover-background,rgba(0,0,0,.3))}.b-bar-vertical-small,.b-bar-vertical-inline[data-collapse=small],.b-bar-vertical-popout[data-collapse=small]{width:var(--b-vertical-bar-small-width,64px);min-width:var(--b-vertical-bar-small-width,64px);transition:width 200ms ease-in-out,min-width 200ms ease-in-out}.b-bar-vertical-small .b-bar-toggler-inline,.b-bar-vertical-inline[data-collapse=small] .b-bar-toggler-inline,.b-bar-vertical-popout[data-collapse=small] .b-bar-toggler-inline{position:relative;width:100%}.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-inline[data-collapse=small] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout[data-collapse=small] .b-bar-toggler-popout:not(.b-bar-mobile-toggle){left:var(--b-vertical-bar-small-width,64px)}.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before{display:none}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container{z-index:100;max-height:50vh;position:absolute !important;margin:-42px 5px 0 5px;display:flex;width:var(--b-vertical-bar-popout-menu-width,180px);left:var(--b-vertical-bar-small-width,64px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-small-width,64px);left:unset}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px 0 rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05);border-radius:3px;overflow-y:auto;overflow-x:hidden;flex:1 100%}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 1.5rem}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before{position:absolute;top:0;left:-7px;right:0;bottom:0;width:100%;height:100%;opacity:.0001;content:' ';z-index:-1}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before{left:unset;right:-7px}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container{left:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(135deg);transform:rotate(135deg);right:.8rem}@keyframes b-bar-link-small{to{text-align:center;padding-left:0;padding-right:0}}.b-bar-vertical-small .b-bar-item>.b-bar-link,.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-link,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-link,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-link,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link{animation:b-bar-link-small forwards;animation-delay:170ms;font-size:0;transition:font-size 100ms ease-out}.b-bar-vertical-small .b-bar-item>.b-bar-link:after,.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-link:after,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-link:after,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link:after,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-link:after,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link:after{display:none}.b-bar-vertical-small .b-bar-label,.b-bar-vertical-inline[data-collapse=small] .b-bar-label,.b-bar-vertical-popout[data-collapse=small] .b-bar-label{text-align:center}.b-bar-vertical-inline:not([data-collapse]){overflow-y:auto;overflow-x:hidden}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container{position:relative}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{position:relative !important;border:none;border-radius:0;box-shadow:none}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 3rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(135deg);transform:rotate(135deg);right:.8rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container{z-index:100;max-height:50vh;position:absolute !important;margin:-42px 5px 0 5px;display:flex;width:var(--b-vertical-bar-popout-menu-width,180px);left:var(--b-vertical-bar-width,230px)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-width,230px);left:unset}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px 0 rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05);border-radius:3px;overflow-y:auto;overflow-x:hidden;flex:1 100%}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 1.5rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before{position:absolute;top:0;left:-7px;right:0;bottom:0;width:100%;height:100%;opacity:.0001;content:' ';z-index:-1}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before{left:unset;right:-7px}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container{left:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-inline[data-collapse=hide],.b-bar-vertical-popout[data-collapse=hide],.b-bar-vertical-small[data-collapse=hide]{width:0;min-width:0;transition:width 200ms ease-in-out,min-width 200ms ease-in-out,visibility 100ms;visibility:hidden}.b-bar-vertical-inline[data-collapse=hide] .b-bar-toggler-inline,.b-bar-vertical-popout[data-collapse=hide] .b-bar-toggler-inline,.b-bar-vertical-small[data-collapse=hide] .b-bar-toggler-inline{display:none}.b-bar-vertical-inline[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle){visibility:visible;left:0}@media only screen and (max-width:576px){.b-bar-vertical-inline:not([data-collapse]){min-width:100vw}.b-bar-vertical-inline:not([data-collapse]) .b-bar-toggler-inline:not(.b-bar-mobile-toggle){display:none}.b-bar-vertical-inline:not([data-collapse]) .b-bar-toggler-popout:not(.b-bar-mobile-toggle){left:100vw}.b-bar-vertical-inline:not([data-collapse]) .b-bar-mobile-toggle{display:flex}}.b-table.table{position:relative}.b-table.table .b-table-resizer{position:absolute;top:0;right:0;width:5px;cursor:col-resize;user-select:none;z-index:1}.b-table.table .b-table-resizer:hover,.b-table.table .b-table-resizing{cursor:col-resize !important;border-right:2px solid var(--b-theme-primary,#00f)}.b-table.table .b-table-resizing{cursor:col-resize !important}thead tr th{position:relative}.b-character-casing-lower{text-transform:lowercase}.b-character-casing-upper{text-transform:uppercase}.b-character-casing-title{text-transform:lowercase}.b-character-casing-title::first-letter {text-transform:uppercase}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.flatpickr-monthSelect-months{margin:10px 1px 3px 1px;flex-wrap:wrap}.flatpickr-monthSelect-month{background:none;border:0;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;display:inline-block;font-weight:400;margin:.5px;justify-content:center;padding:10px;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;text-align:center;width:33%}.flatpickr-monthSelect-month.disabled{color:#eee}.flatpickr-monthSelect-month.disabled:hover,.flatpickr-monthSelect-month.disabled:focus{cursor:not-allowed;background:none !important}.flatpickr-monthSelect-theme-dark{background:#3f4458}.flatpickr-monthSelect-theme-dark .flatpickr-current-month input.cur-year{color:#fff}.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-prev-month,.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-next-month{color:#fff;fill:#fff}.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month{color:rgba(255,255,255,.95)}.flatpickr-monthSelect-month:hover,.flatpickr-monthSelect-month:focus{background:#e6e6e6;cursor:pointer;outline:0}.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:hover,.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:focus{background:#646c8c;border-color:#646c8c}.flatpickr-monthSelect-month.selected{background-color:#569ff7;color:#fff}.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.selected{background:#80cbc4;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#80cbc4} +@keyframes fadeIn{0%{opacity:0}100%{opacity:1}0%{opacity:0}}@keyframes slideIn{0%{transform:translateY(1rem);opacity:0}100%{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}.badge-close{cursor:pointer}.badge-close::before{height:2px;width:50%}.badge-close::after{height:50%;width:2px}.badge-close:hover,.badge-close:focus{background-color:rgba(10,10,10,.3)}.badge-close:active{background-color:rgba(10,10,10,.4)}.navbar-nav .nav-item:hover{cursor:pointer}.navbar-nav .nav-link:hover{cursor:pointer}.nav .nav-link:hover{cursor:pointer}.nav-item{position:relative}.btn-group>.b-tooltip:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.b-tooltip:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.b-tooltip:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.b-tooltip:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-xs,.btn-group-xs>.btn{padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.15rem}.btn-md,.btn-group-md>.btn{padding:.47rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.25rem}.btn-xl,.btn-group-xl>.btn{padding:.5rem 1rem;font-size:1.5rem;line-height:1.5;border-radius:.4rem}.dropdown-toggle.dropdown-toggle-hidden::after{content:none !important}.dropdown-toggle.dropdown-toggle-hidden::before{content:none !important}.dropdown-menu.show{animation-duration:.3s;animation-fill-mode:both;animation-name:fadeIn}.dropdown-menu a:not([href]).dropdown-item:not(.disabled){cursor:pointer}.figure-is-16x16{height:16px;width:16px}.figure-is-24x24{height:24px;width:24px}.figure-is-32x32{height:32px;width:32px}.figure-is-48x48{height:48px;width:48px}.figure-is-64x64{height:64px;width:64px}.figure-is-96x96{height:96px;width:96px}.figure-is-128x128{height:128px;width:128px}.figure-is-256x256{height:256px;width:256px}.figure-is-512x512{height:512px;width:512px}.form-check>.form-check-input.form-check-input-pointer,.form-check>.form-check-label.form-check-label-pointer,.custom-checkbox>.custom-control-input.custom-control-input-pointer,.custom-checkbox>.custom-control-label.custom-control-label-pointer,.custom-switch>.custom-control-input.custom-control-input-pointer,.custom-switch>.custom-control-label.custom-control-label-pointer{cursor:pointer}.form-control-plaintext.form-control-xs,.form-control-plaintext.form-control-md,.form-control-plaintext.form-control-xl{padding-right:0;padding-left:0}.form-control-xs{height:calc(1.5em + .3rem + 2px);padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.15rem}.form-control-md{height:calc(1.5em + .94rem + 2px);padding:.47rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.25rem}.form-control-xl{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.5rem;line-height:1.5;border-radius:.4rem}.custom-select-xs{height:calc(1.5em + .3rem + 2px);padding-top:.15rem;padding-bottom:.15rem;padding-left:.5rem;font-size:.75rem}.custom-select-md{height:calc(1.5em + .94rem + 2px);padding-top:.47rem;padding-bottom:.47rem;padding-left:1rem;font-size:1.125rem}.custom-select-xl{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.5rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label::after{width:.7rem;height:.7rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label{line-height:"normal";padding-left:0}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label::after{width:.8rem;height:.8rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label{line-height:"normal";padding-left:0}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label::after{width:1.25rem;height:1.25rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label{line-height:1.7rem;padding-left:3px}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label::after{width:1.55rem;height:1.55rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2rem;padding-left:6px}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label::after{width:1.85rem;height:1.85rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label{line-height:2.5rem;padding-left:10px}.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label::after{width:.7rem;height:.7rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label{line-height:normal;padding-left:0}.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label::after{width:.8rem;height:.8rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label{line-height:normal;padding-left:0}.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label::after{width:1.25rem;height:1.25rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label{line-height:1.7rem;padding-left:3px}.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label::after{width:1.55rem;height:1.55rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2rem;padding-left:6px}.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label::after{width:1.85rem;height:1.85rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label{line-height:2.5rem;padding-left:10px}.jumbotron.jumbotron-primary{background-color:#007bff;color:#fff}.jumbotron.jumbotron-secondary{background-color:#6c757d;color:#fff}.jumbotron.jumbotron-success{background-color:#28a745;color:#fff}.jumbotron.jumbotron-info{background-color:#17a2b8;color:#fff}.jumbotron.jumbotron-warning{background-color:#ffc107;color:#212529}.jumbotron.jumbotron-danger{background-color:#dc3545;color:#fff}.jumbotron.jumbotron-light{background-color:#f8f9fa;color:#212529}.jumbotron.jumbotron-dark{background-color:#343a40;color:#fff}.jumbotron.jumbotron-link{background-color:#3273dc;color:#fff}.b-layout-header-fixed{z-index:1020}.b-layout-footer-fixed{z-index:1020}.b-layout-sider-content{z-index:1021}.modal.show{animation-duration:.25s;animation-fill-mode:both;animation-name:fadeIn}.page-item:not(.disabled) .page-link{cursor:pointer}.pagination-xs .page-link{padding:.125rem .25rem;font-size:.75rem;line-height:1.5}.pagination-xs .page-item:first-child .page-link{border-top-left-radius:.15rem;border-bottom-left-radius:.15rem}.pagination-xs .page-item:last-child .page-link{border-top-right-radius:.15rem;border-bottom-right-radius:.15rem}.pagination-md .page-link{padding:.625rem 1.25rem;font-size:1.125rem;line-height:1.5}.pagination-md .page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-md .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-xl .page-link{padding:1rem 2rem;font-size:1.5rem;line-height:1.5}.pagination-xl .page-item:first-child .page-link{border-top-left-radius:.4rem;border-bottom-left-radius:.4rem}.pagination-xl .page-item:last-child .page-link{border-top-right-radius:.4rem;border-bottom-right-radius:.4rem}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-primary{background-color:#007bff}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-secondary{background-color:#6c757d}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-success{background-color:#28a745}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-info{background-color:#17a2b8}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-warning{background-color:#ffc107}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-danger{background-color:#dc3545}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-light{background-color:#f8f9fa}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-dark{background-color:#343a40}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-link{background-color:#3273dc}.steps{padding:0;margin:0;list-style:none;display:flex;overflow-x:auto}.steps .step:first-child{margin-left:auto}.steps .step:last-child{margin-right:auto}.step:first-of-type .step-circle::before{display:none}.step:last-of-type .step-container{padding-right:0}.step-container{box-sizing:content-box;display:flex;align-items:center;flex-direction:column;width:5rem;min-width:5rem;max-width:5rem;padding-top:.5rem;padding-right:1rem}.step-circle{position:relative;display:flex;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;color:#adb5bd;border:2px solid #adb5bd;border-radius:100%;background-color:#fff}.step-circle::before{content:'';display:block;position:absolute;top:50%;left:-2px;width:calc(5rem + 1rem - 1.5rem);height:2px;transform:translate(-100%,-50%);color:#adb5bd;background-color:currentColor}.step-text{color:#adb5bd;word-break:break-all;margin-top:.25em}.step-completed .step-circle{color:#fff;background-color:#28a745;border-color:#28a745}.step-completed .step-circle::before{color:#28a745}.step-completed .step-text{color:#28a745}.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-active .step-circle::before{color:#007bff}.step-active .step-text{color:#007bff}.step-primary .step-circle{color:#007bff;border-color:#007bff}.step-primary.step-completed .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-primary.step-completed .step-circle::before{color:#007bff}.step-primary.step-completed .step-text{color:#007bff}.step-primary.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-primary.step-active::before{color:#007bff}.step-primary.step-active .step-text{color:#007bff}.step-secondary .step-circle{color:#6c757d;border-color:#6c757d}.step-secondary.step-completed .step-circle{color:#fff;background-color:#6c757d;border-color:#6c757d}.step-secondary.step-completed .step-circle::before{color:#6c757d}.step-secondary.step-completed .step-text{color:#6c757d}.step-secondary.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-secondary.step-active::before{color:#007bff}.step-secondary.step-active .step-text{color:#007bff}.step-success .step-circle{color:#28a745;border-color:#28a745}.step-success.step-completed .step-circle{color:#fff;background-color:#28a745;border-color:#28a745}.step-success.step-completed .step-circle::before{color:#28a745}.step-success.step-completed .step-text{color:#28a745}.step-success.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-success.step-active::before{color:#007bff}.step-success.step-active .step-text{color:#007bff}.step-info .step-circle{color:#17a2b8;border-color:#17a2b8}.step-info.step-completed .step-circle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.step-info.step-completed .step-circle::before{color:#17a2b8}.step-info.step-completed .step-text{color:#17a2b8}.step-info.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-info.step-active::before{color:#007bff}.step-info.step-active .step-text{color:#007bff}.step-warning .step-circle{color:#ffc107;border-color:#ffc107}.step-warning.step-completed .step-circle{color:#fff;background-color:#ffc107;border-color:#ffc107}.step-warning.step-completed .step-circle::before{color:#ffc107}.step-warning.step-completed .step-text{color:#ffc107}.step-warning.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-warning.step-active::before{color:#007bff}.step-warning.step-active .step-text{color:#007bff}.step-danger .step-circle{color:#dc3545;border-color:#dc3545}.step-danger.step-completed .step-circle{color:#fff;background-color:#dc3545;border-color:#dc3545}.step-danger.step-completed .step-circle::before{color:#dc3545}.step-danger.step-completed .step-text{color:#dc3545}.step-danger.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-danger.step-active::before{color:#007bff}.step-danger.step-active .step-text{color:#007bff}.step-light .step-circle{color:#f8f9fa;border-color:#f8f9fa}.step-light.step-completed .step-circle{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.step-light.step-completed .step-circle::before{color:#f8f9fa}.step-light.step-completed .step-text{color:#f8f9fa}.step-light.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-light.step-active::before{color:#007bff}.step-light.step-active .step-text{color:#007bff}.step-dark .step-circle{color:#343a40;border-color:#343a40}.step-dark.step-completed .step-circle{color:#fff;background-color:#343a40;border-color:#343a40}.step-dark.step-completed .step-circle::before{color:#343a40}.step-dark.step-completed .step-text{color:#343a40}.step-dark.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-dark.step-active::before{color:#007bff}.step-dark.step-active .step-text{color:#007bff}.step-link .step-circle{color:#3273dc;border-color:#3273dc}.step-link.step-completed .step-circle{color:#fff;background-color:#3273dc;border-color:#3273dc}.step-link.step-completed .step-circle::before{color:#3273dc}.step-link.step-completed .step-text{color:#3273dc}.step-link.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-link.step-active::before{color:#007bff}.step-link.step-active .step-text{color:#007bff}.steps-content{margin:1rem 0}.steps-content>.step-panel{display:none}.steps-content>.active{display:block}.custom-switch .custom-control-input.custom-control-input-primary:checked~.custom-control-label::before{background-color:#007bff;border-color:#007bff}.custom-switch .custom-control-input.custom-control-input-primary:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25);border-color:#007bff}.custom-switch .custom-control-input:disabled.custom-control-input-primary:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch .custom-control-input.custom-control-input-secondary:checked~.custom-control-label::before{background-color:#6c757d;border-color:#6c757d}.custom-switch .custom-control-input.custom-control-input-secondary:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(108,117,125,.25);border-color:#6c757d}.custom-switch .custom-control-input:disabled.custom-control-input-secondary:checked~.custom-control-label::before{background-color:rgba(108,117,125,.5)}.custom-switch .custom-control-input.custom-control-input-success:checked~.custom-control-label::before{background-color:#28a745;border-color:#28a745}.custom-switch .custom-control-input.custom-control-input-success:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25);border-color:#28a745}.custom-switch .custom-control-input:disabled.custom-control-input-success:checked~.custom-control-label::before{background-color:rgba(40,167,69,.5)}.custom-switch .custom-control-input.custom-control-input-info:checked~.custom-control-label::before{background-color:#17a2b8;border-color:#17a2b8}.custom-switch .custom-control-input.custom-control-input-info:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(23,162,184,.25);border-color:#17a2b8}.custom-switch .custom-control-input:disabled.custom-control-input-info:checked~.custom-control-label::before{background-color:rgba(23,162,184,.5)}.custom-switch .custom-control-input.custom-control-input-warning:checked~.custom-control-label::before{background-color:#ffc107;border-color:#ffc107}.custom-switch .custom-control-input.custom-control-input-warning:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(255,193,7,.25);border-color:#ffc107}.custom-switch .custom-control-input:disabled.custom-control-input-warning:checked~.custom-control-label::before{background-color:rgba(255,193,7,.5)}.custom-switch .custom-control-input.custom-control-input-danger:checked~.custom-control-label::before{background-color:#dc3545;border-color:#dc3545}.custom-switch .custom-control-input.custom-control-input-danger:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25);border-color:#dc3545}.custom-switch .custom-control-input:disabled.custom-control-input-danger:checked~.custom-control-label::before{background-color:rgba(220,53,69,.5)}.custom-switch .custom-control-input.custom-control-input-light:checked~.custom-control-label::before{background-color:#f8f9fa;border-color:#f8f9fa}.custom-switch .custom-control-input.custom-control-input-light:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(248,249,250,.25);border-color:#f8f9fa}.custom-switch .custom-control-input:disabled.custom-control-input-light:checked~.custom-control-label::before{background-color:rgba(248,249,250,.5)}.custom-switch .custom-control-input.custom-control-input-dark:checked~.custom-control-label::before{background-color:#343a40;border-color:#343a40}.custom-switch .custom-control-input.custom-control-input-dark:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(52,58,64,.25);border-color:#343a40}.custom-switch .custom-control-input:disabled.custom-control-input-dark:checked~.custom-control-label::before{background-color:rgba(52,58,64,.5)}.custom-switch .custom-control-input.custom-control-input-link:checked~.custom-control-label::before{background-color:#3273dc;border-color:#3273dc}.custom-switch .custom-control-input.custom-control-input-link:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(50,115,220,.25);border-color:#3273dc}.custom-switch .custom-control-input:disabled.custom-control-input-link:checked~.custom-control-label::before{background-color:rgba(50,115,220,.5)}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label{line-height:1rem;vertical-align:middle;padding-left:0}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label::before{height:.5rem;width:calc(.75rem + (.5rem/2));border-radius:1rem}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label::after{height:calc(.5rem - 4px);width:calc(.5rem - 4px);border-radius:calc(.75rem - (.5rem/2))}.custom-switch .custom-control-input.custom-control-input-xs:checked~.custom-control-label::after{transform:translateX(calc(.75rem - (.5rem/2)))}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label{line-height:1.25rem;vertical-align:middle;padding-left:0}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label::before{height:.75rem;width:calc(1rem + (.75rem/2));border-radius:1.5rem}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label::after{height:calc(.75rem - 4px);width:calc(.75rem - 4px);border-radius:calc(1rem - (.75rem/2))}.custom-switch .custom-control-input.custom-control-input-sm:checked~.custom-control-label::after{transform:translateX(calc(1rem - (.75rem/2)))}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label{line-height:2rem;vertical-align:middle;padding-left:2rem}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label::before{height:1.5rem;width:calc(2rem + (1.5rem/2));border-radius:3rem}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label::after{height:calc(1.5rem - 4px);width:calc(1.5rem - 4px);border-radius:calc(2rem - (1.5rem/2))}.custom-switch .custom-control-input.custom-control-input-md:checked~.custom-control-label::after{transform:translateX(calc(2rem - (1.5rem/2)))}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2.5rem;vertical-align:middle;padding-left:3rem}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label::before{height:2rem;width:calc(3rem + (2rem/2));border-radius:4rem}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label::after{height:calc(2rem - 4px);width:calc(2rem - 4px);border-radius:calc(3rem - (2rem/2))}.custom-switch .custom-control-input.custom-control-input-lg:checked~.custom-control-label::after{transform:translateX(calc(3rem - (2rem/2)))}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label{line-height:3rem;vertical-align:middle;padding-left:4rem}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label::before{height:2.5rem;width:calc(4rem + (2.5rem/2));border-radius:5rem}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label::after{height:calc(2.5rem - 4px);width:calc(2.5rem - 4px);border-radius:calc(4rem - (2.5rem/2))}.custom-switch .custom-control-input.custom-control-input-xl:checked~.custom-control-label::after{transform:translateX(calc(4rem - (2.5rem/2)))}table.table tbody tr.selected{background-color:var(--primary)}tr.table-row-selectable:hover{cursor:pointer} +.snackbar{align-items:center;background-color:var(--b-snackbar-background,#323232);color:var(--b-snackbar-text-color,#fff);font-size:.875rem;line-height:1.42857;opacity:0;padding:.875rem 1.5rem;position:fixed;bottom:0;left:0;transform:translateY(100%);transition:opacity 0s .195s,transform .195s cubic-bezier(.4,0,1,1);width:100%;z-index:60}@media(min-width:768px){.snackbar{border-radius:2px;max-width:35.5rem;min-width:18rem;left:50%;transform:translate(-50%,100%);width:auto}}@media(min-width:768px){.snackbar{transition:opacity 0s .2535s,transform .2535s cubic-bezier(.4,0,1,1)}}@media(min-width:1200px){.snackbar{transition:opacity 0s .13s,transform .13s cubic-bezier(.4,0,1,1)}}@media screen and (prefers-reduced-motion:reduce){.snackbar{transition:none}}.snackbar.snackbar-show{transition-duration:.225s;transition-property:transform;transition-timing-function:cubic-bezier(0,0,.2,1);opacity:1;transform:translateY(0)}@media(min-width:768px){.snackbar.snackbar-show{transition-duration:.2925s}}@media(min-width:1200px){.snackbar.snackbar-show{transition-duration:.15s}}@media screen and (prefers-reduced-motion:reduce){.snackbar.snackbar-show{transition:none}}@media(min-width:768px){.snackbar.snackbar-show{transform:translate(-50%,-1.5rem)}}.snackbar-header{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:DARKEN(var(--b-snackbar-background,#323232),30%);margin-right:auto;min-width:0;font-weight:bold;padding-bottom:.875rem}.snackbar-footer{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:DARKEN(var(--b-snackbar-background,#323232),30%);margin-right:auto;min-width:0;padding-top:.875rem}.snackbar-body{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:auto;max-height:100%;min-width:0}.snackbar-action-button{transition-duration:.3s;transition-property:background-color,background-image;transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:transparent;background-image:none;border:0;color:var(--b-snackbar-button-color,var(--b-snackbar-button-color,#ff4081));cursor:pointer;display:block;flex-shrink:0;font-size:inherit;font-weight:500;line-height:inherit;padding:0;text-transform:uppercase;white-space:nowrap}@media(min-width:768px){.snackbar-action-button{transition-duration:.39s}}@media(min-width:1200px){.snackbar-action-button{transition-duration:.2s}}@media screen and (prefers-reduced-motion:reduce){.snackbar-action-button{transition:none}}.snackbar-action-button:focus,.snackbar-action-button:hover{color:var(--b-snackbar-button-hover-color,var(--b-snackbar-button-hover-color,#ff80ab));text-decoration:none}@media(min-width:768px){.snackbar-action-button{margin-left:3rem}}.snackbar-action-button:focus{outline:0}@media(min-width:768px){.snackbar-left,.snackbar-right{transform:translateY(100%)}.snackbar-left.snackbar-show,.snackbar-right.snackbar-show{transform:translateY(-1.5rem)}}@media(min-width:768px){.snackbar-left{left:1.5rem}}@media(min-width:768px){.snackbar-right{right:1.5rem;left:auto}}.snackbar-multi-line{padding-top:1.25rem;padding-bottom:1.25rem}.snackbar-multi-line .snackbar-body{white-space:normal}.snackbar-primary{background-color:var(--b-snackbar-background-primary,#cce5ff);color:var(--b-snackbar-text-primary,#004085)}.snackbar-action-button-primary{color:var(--b-snackbar-button-primary,#ff4081)}.snackbar-action-button-primary:focus,.snackbar-action-button-primary:hover{color:var(--b-snackbar-button-hover-primary,#ff80ab)}.snackbar-secondary{background-color:var(--b-snackbar-background-secondary,#e2e3e5);color:var(--b-snackbar-text-secondary,#383d41)}.snackbar-action-button-secondary{color:var(--b-snackbar-button-secondary,#ff4081)}.snackbar-action-button-secondary:focus,.snackbar-action-button-secondary:hover{color:var(--b-snackbar-button-hover-secondary,#ff80ab)}.snackbar-success{background-color:var(--b-snackbar-background-success,#d4edda);color:var(--b-snackbar-text-success,#155724)}.snackbar-action-button-success{color:var(--b-snackbar-button-success,#ff4081)}.snackbar-action-button-success:focus,.snackbar-action-button-success:hover{color:var(--b-snackbar-button-hover-success,#ff80ab)}.snackbar-danger{background-color:var(--b-snackbar-background-danger,#f8d7da);color:var(--b-snackbar-text-danger,#721c24)}.snackbar-action-button-danger{color:var(--b-snackbar-button-danger,#ff4081)}.snackbar-action-button-danger:focus,.snackbar-action-button-danger:hover{color:var(--b-snackbar-button-hover-danger,#ff80ab)}.snackbar-warning{background-color:var(--b-snackbar-background-warning,#fff3cd);color:var(--b-snackbar-text-warning,#856404)}.snackbar-action-button-warning{color:var(--b-snackbar-button-warning,#ff4081)}.snackbar-action-button-warning:focus,.snackbar-action-button-warning:hover{color:var(--b-snackbar-button-hover-warning,#ff80ab)}.snackbar-info{background-color:var(--b-snackbar-background-info,#d1ecf1);color:var(--b-snackbar-text-info,#0c5460)}.snackbar-action-button-info{color:var(--b-snackbar-button-info,#ff4081)}.snackbar-action-button-info:focus,.snackbar-action-button-info:hover{color:var(--b-snackbar-button-hover-info,#ff80ab)}.snackbar-light{background-color:var(--b-snackbar-background-light,#fefefe);color:var(--b-snackbar-text-light,#818182)}.snackbar-action-button-light{color:var(--b-snackbar-button-light,#ff4081)}.snackbar-action-button-light:focus,.snackbar-action-button-light:hover{color:var(--b-snackbar-button-hover-light,#ff80ab)}.snackbar-dark{background-color:var(--b-snackbar-background-dark,#d6d8d9);color:var(--b-snackbar-text-dark,#1b1e21)}.snackbar-action-button-dark{color:var(--b-snackbar-button-dark,#ff4081)}.snackbar-action-button-dark:focus,.snackbar-action-button-dark:hover{color:var(--b-snackbar-button-hover-dark,#ff80ab)}.snackbar-stack{display:flex;flex-direction:column;position:fixed;z-index:60;bottom:0}.snackbar-stack .snackbar{position:relative;flex-direction:row;margin-bottom:0}.snackbar-stack .snackbar:not(:last-child){margin-bottom:1.5rem}@media(min-width:576px){.snackbar-stack-center{left:50%;transform:translate(-50%,0%)}.snackbar-stack-left{left:1.5rem}.snackbar-stack-right{right:1.5rem}} +#main-navbar-tools a.dropdown-toggle{text-decoration:none;color:#fff}.navbar .dropdown-submenu{position:relative}.navbar .dropdown-menu{margin:0;padding:0}.navbar .dropdown-menu a{font-size:.9em;padding:10px 15px;display:block;min-width:210px;text-align:left;border-radius:.25rem;min-height:44px}.navbar .dropdown-submenu a::after{transform:rotate(-90deg);position:absolute;right:16px;top:18px}.navbar .dropdown-submenu .dropdown-menu{top:0;left:100%}.card-header .btn{padding:2px 6px}.card-header h5{margin:0}.container>.card{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}@media screen and (min-width:768px){.navbar .dropdown:hover>.dropdown-menu{display:block}.navbar .dropdown-submenu:hover>.dropdown-menu{display:block}}.input-validation-error{border-color:#dc3545}.field-validation-error{font-size:.8em}.dataTables_scrollBody{min-height:248px}div.dataTables_wrapper div.dataTables_info{padding-top:11px;white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{padding-top:10px;margin-bottom:0}.rtl .dropdown-menu-right{right:auto;left:0}.rtl .dropdown-menu-right a{text-align:right}.rtl .navbar .dropdown-menu a{text-align:right}.rtl .navbar .dropdown-submenu .dropdown-menu{top:0;left:auto;right:100%}.navbar-dark .navbar-nav .nav-link{color:#000 !important}.navbar-nav>.nav-item>.nav-link,.navbar-nav>.nav-item>.dropdown>.nav-link{color:#fff !important}.navbar-nav>.nav-item>div>button{color:#fff}.btn span.spinner-border{margin-right:.5rem}.radar-spinner,.radar-spinner *{box-sizing:border-box}.radar-spinner{height:60px;width:60px;position:relative}.radar-spinner .circle{position:absolute;height:100%;width:100%;top:0;left:0;animation:radar-spinner-animation 2s infinite}.radar-spinner .circle:nth-child(1){padding:calc(60px*5*2*0/110);animation-delay:300ms}.radar-spinner .circle:nth-child(2){padding:calc(60px*5*2*1/110);animation-delay:300ms}.radar-spinner .circle:nth-child(3){padding:calc(60px*5*2*2/110);animation-delay:300ms}.radar-spinner .circle:nth-child(4){padding:calc(60px*5*2*3/110);animation-delay:0ms}.radar-spinner .circle-inner,.radar-spinner .circle-inner-container{height:100%;width:100%;border-radius:50%;border:calc(60px*5/110) solid transparent}.radar-spinner .circle-inner{border-left-color:var(--secondary,#ff1d5e);border-right-color:var(--secondary,#ff1d5e)}@keyframes radar-spinner-animation{50%{transform:rotate(180deg)}100%{transform:rotate(0deg)}} diff --git a/src/EventHub.Admin.Web/wwwroot/global.js b/src/EventHub.Admin.Web/wwwroot/global.js index 2c13174..e96719b 100644 --- a/src/EventHub.Admin.Web/wwwroot/global.js +++ b/src/EventHub.Admin.Web/wwwroot/global.js @@ -1,791 +1,11 @@ -var abp=abp||{};(function(){abp.utils=abp.utils||{};abp.domReady=function(n){document.readyState==="complete"||document.readyState==="interactive"?setTimeout(n,1):document.addEventListener("DOMContentLoaded",n)};abp.utils.setCookieValue=function(n,t,i,r,u){var f=encodeURIComponent(n)+"=";t&&(f=f+encodeURIComponent(t));i&&(f=f+"; expires="+i);r&&(f=f+"; path="+r);u&&(f=f+"; secure");document.cookie=f};abp.utils.getCookieValue=function(n){for(var i,r=document.cookie.split("; "),t=0;t { - window.blazorise.textEdit.keyPress(instances[elementId], e); - }); - - element.addEventListener("paste", (e) => { - window.blazorise.textEdit.paste(instances[elementId], e); - }); - - return true; - }, - destroy: (element, elementId) => { - var instances = window.blazorise.textEdit._instances || {}; - delete instances[elementId]; - return true; - }, - keyPress: (validator, e) => { - var currentValue = String.fromCharCode(e.which); - - return validator.isValid(currentValue) || e.preventDefault(); - }, - paste: (validator, e) => { - return validator.isValid(e.clipboardData.getData("text/plain")) || e.preventDefault(); - } - }, - numericEdit: { - _instances: [], - - initialize: (dotnetAdapter, element, elementId, decimals, separator, step, min, max) => { - window.blazorise.numericEdit._instances[elementId] = new window.blazorise.NumericMaskValidator(dotnetAdapter, element, elementId, decimals, separator, step, min, max); - - element.addEventListener("keypress", (e) => { - window.blazorise.numericEdit.keyPress(window.blazorise.numericEdit._instances[elementId], e); - }); - - element.addEventListener("keydown", (e) => { - window.blazorise.numericEdit.keyDown(window.blazorise.numericEdit._instances[elementId], e); - }); - - element.addEventListener("paste", (e) => { - window.blazorise.numericEdit.paste(window.blazorise.numericEdit._instances[elementId], e); - }); - return true; - }, - destroy: (element, elementId) => { - var instances = window.blazorise.numericEdit._instances || {}; - delete instances[elementId]; - return true; - }, - keyDown: (validator, e) => { - if (e.which === 38) { - validator.stepApply(1); - } else if (e.which === 40) { - validator.stepApply(-1); - } - return true; - }, - keyPress: (validator, e) => { - var currentValue = String.fromCharCode(e.which); - - return e.which === 13 // still need to allow ENTER key so that we don't preventDefault on form submit - || validator.isValid(currentValue) - || e.preventDefault(); - }, - paste: (validator, e) => { - return validator.isValid(e.clipboardData.getData("text/plain")) || e.preventDefault(); - } - }, - NoValidator: function () { - this.isValid = function (currentValue) { - return true; - }; - }, - NumericMaskValidator: function (dotnetAdapter, element, elementId, decimals, separator, step, min, max) { - this.dotnetAdapter = dotnetAdapter; - this.elementId = elementId; - this.element = element; - this.decimals = decimals === null || decimals === undefined ? 2 : decimals; - this.separator = separator || "."; - this.step = step || 1; - this.min = min; - this.max = max; - this.regex = function () { - var sep = "\\" + this.separator, - dec = this.decimals, - reg = "{0," + dec + "}"; - - return dec ? new RegExp("^(-)?(((\\d+(" + sep + "\\d" + reg + ")?)|(" + sep + "\\d" + reg + ")))?$") : /^(-)?(\d*)$/; - }; - this.carret = function () { - return [this.element.selectionStart, this.element.selectionEnd]; - }; - this.isValid = function (currentValue) { - var value = this.element.value, - selection = this.carret(); - - if (value = value.substring(0, selection[0]) + currentValue + value.substring(selection[1]), !!this.regex().test(value)) { - return value = (value || "").replace(this.separator, "."), value === "-" && this.min < 0 || value >= this.min && value <= this.max; - } - - return false; - }; - this.stepApply = function (sign) { - var value = (this.element.value || "").replace(this.separator, "."); - var number = Number(value) + this.step * sign; - - if (number >= this.min && number <= this.max) { - var newValue = number.toString().replace(".", this.separator); - this.element.value = newValue; - this.dotnetAdapter.invokeMethodAsync('SetValue', newValue); - } - }; - }, - DateTimeMaskValidator: function (element, elementId) { - this.elementId = elementId; - this.element = element; - this.regex = function () { - return /^\d{0,4}$|^\d{4}-0?$|^\d{4}-(?:0?[1-9]|1[012])(?:-(?:0?[1-9]?|[12]\d|3[01])?)?$/; - }; - this.carret = function () { - return [this.element.selectionStart, this.element.selectionEnd]; - }; - this.isValid = function (currentValue) { - var value = this.element.value, - selection = this.carret(); - - return value = value.substring(0, selection[0]) + currentValue + value.substring(selection[1]), !!this.regex().test(value); - }; - }, - RegExMaskValidator: function (element, elementId, editMask) { - this.elementId = elementId; - this.element = element; - this.editMask = editMask; - this.regex = function () { - return new RegExp(this.editMask); - }; - this.carret = function () { - return [this.element.selectionStart, this.element.selectionEnd]; - }; - this.isValid = function (currentValue) { - var value = this.element.value, - selection = this.carret(); - - return value = value.substring(0, selection[0]) + currentValue + value.substring(selection[1]), !!this.regex().test(value); - }; - }, - button: { - _instances: [], - - initialize: (element, elementId, preventDefaultOnSubmit) => { - window.blazorise.button._instances[elementId] = new window.blazorise.ButtonInfo(element, elementId, preventDefaultOnSubmit); +/*! For license information please see AuthenticationService.js.LICENSE.txt */ +(()=>{var t={671:function(n){var t;t=function(){return function(n){function t(r){if(i[r])return i[r].exports;var u=i[r]={i:r,l:!1,exports:{}};return n[r].call(u.exports,u,u.exports,t),u.l=!0,u.exports}var i={};return t.m=n,t.c=i,t.d=function(n,i,r){t.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:r})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,i){var r,u;if((1&i&&(n=t(n)),8&i)||4&i&&"object"==typeof n&&n&&n.__esModule)return n;if(r=Object.create(null),t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&i&&"string"!=typeof n)for(u in n)t.d(r,u,function(t){return n[t]}.bind(null,u));return r},t.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(i,"a",i),i},t.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},t.p="",t(t.s=22)}([function(n,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function n(n,t){for(var i,r=0;r=4){for(var t=arguments.length,u=Array(t),n=0;n=3){for(var t=arguments.length,u=Array(t),n=0;n=2){for(var t=arguments.length,u=Array(t),n=0;n=1){for(var t=arguments.length,u=Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:e.JsonService;if(o(this,n),!t)throw r.Log.error("MetadataService: No settings passed to MetadataService"),new Error("settings");this._settings=t;this._jsonService=new i(["application/jwk-set+json"])}return n.prototype.resetSigningKeys=function(){this._settings=this._settings||{};this._settings.signingKeys=void 0},n.prototype.getMetadata=function(){var n=this;return this._settings.metadata?(r.Log.debug("MetadataService.getMetadata: Returning metadata from settings"),Promise.resolve(this._settings.metadata)):this.metadataUrl?(r.Log.debug("MetadataService.getMetadata: getting metadata from",this.metadataUrl),this._jsonService.getJson(this.metadataUrl).then(function(t){r.Log.debug("MetadataService.getMetadata: json received");var i=n._settings.metadataSeed||{};return n._settings.metadata=Object.assign({},i,t),n._settings.metadata})):(r.Log.error("MetadataService.getMetadata: No authority or metadataUrl configured on settings"),Promise.reject(new Error("No authority or metadataUrl configured on settings")))},n.prototype.getIssuer=function(){return this._getMetadataProperty("issuer")},n.prototype.getAuthorizationEndpoint=function(){return this._getMetadataProperty("authorization_endpoint")},n.prototype.getUserInfoEndpoint=function(){return this._getMetadataProperty("userinfo_endpoint")},n.prototype.getTokenEndpoint=function(){var n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._getMetadataProperty("token_endpoint",n)},n.prototype.getCheckSessionIframe=function(){return this._getMetadataProperty("check_session_iframe",!0)},n.prototype.getEndSessionEndpoint=function(){return this._getMetadataProperty("end_session_endpoint",!0)},n.prototype.getRevocationEndpoint=function(){return this._getMetadataProperty("revocation_endpoint",!0)},n.prototype.getKeysEndpoint=function(){return this._getMetadataProperty("jwks_uri",!0)},n.prototype._getMetadataProperty=function(n){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r.Log.debug("MetadataService.getMetadataProperty for: "+n),this.getMetadata().then(function(i){if(r.Log.debug("MetadataService.getMetadataProperty: metadata recieved"),void 0===i[n]){if(!0===t)return void r.Log.warn("MetadataService.getMetadataProperty: Metadata does not contain optional property "+n);throw r.Log.error("MetadataService.getMetadataProperty: Metadata does not contain property "+n),new Error("Metadata does not contain property "+n);}return i[n]})},n.prototype.getSigningKeys=function(){var n=this;return this._settings.signingKeys?(r.Log.debug("MetadataService.getSigningKeys: Returning signingKeys from settings"),Promise.resolve(this._settings.signingKeys)):this._getMetadataProperty("jwks_uri").then(function(t){return r.Log.debug("MetadataService.getSigningKeys: jwks_uri received",t),n._jsonService.getJson(t).then(function(t){if(r.Log.debug("MetadataService.getSigningKeys: key set received",t),!t.keys)throw r.Log.error("MetadataService.getSigningKeys: Missing keys on keyset"),new Error("Missing keys on keyset");return n._settings.signingKeys=t.keys,n._settings.signingKeys})})},f(n,[{key:"metadataUrl",get:function(){return this._metadataUrl||(this._settings.metadataUrl?this._metadataUrl=this._settings.metadataUrl:(this._metadataUrl=this._settings.authority,this._metadataUrl&&this._metadataUrl.indexOf(u)<0&&("/"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+="/"),this._metadataUrl+=u))),this._metadataUrl}}]),n}()},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.UrlUtility=void 0;var r=i(0),u=i(1);t.UrlUtility=function(){function n(){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n)}return n.addQueryParam=function(n,t,i){return n.indexOf("?")<0&&(n+="?"),"?"!==n[n.length-1]&&(n+="&"),n+=encodeURIComponent(t),(n+="=")+encodeURIComponent(i)},n.parseUrlFragment=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:u.Global,t,c;"string"!=typeof n&&(n=o.location.href);t=n.lastIndexOf(e);t>=0&&(n=n.substr(t+1));"?"===e&&(t=n.indexOf("#"))>=0&&(n=n.substr(0,t));for(var i,f={},s=/([^&=]+)=([^&]*)/g,h=0;i=s.exec(n);)if(f[decodeURIComponent(i[1])]=decodeURIComponent(i[2].replace(/\+/g," ")),h++>50)return r.Log.error("UrlUtility.parseUrlFragment: response exceeded expected number of parameters",n),{error:"Response exceeded expected number of parameters"};for(c in f)return f;return{}},n}()},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.JoseUtil=void 0;var r=i(26),u=function(n){return n&&n.__esModule?n:{"default":n}}(i(33));t.JoseUtil=u.default({jws:r.jws,KeyUtil:r.KeyUtil,X509:r.X509,crypto:r.crypto,hextob64u:r.hextob64u,b64tohex:r.b64tohex,AllowedSigningAlgs:r.AllowedSigningAlgs})},function(n,t,i){"use strict";function l(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}Object.defineProperty(t,"__esModule",{value:!0});t.OidcClientSettings=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},e=function(){function n(n,t){for(var i,r=0;r0&&void 0!==arguments[0]?arguments[0]:{},ot=t.authority,st=t.metadataUrl,ht=t.metadata,ct=t.signingKeys,lt=t.metadataSeed,at=t.client_id,vt=t.client_secret,f=t.response_type,yt=void 0===f?a:f,e=t.scope,pt=void 0===e?v:e,wt=t.redirect_uri,bt=t.post_logout_redirect_uri,p=t.client_authentication,kt=void 0===p?y:p,dt=t.prompt,gt=t.display,ni=t.max_age,ti=t.ui_locales,ii=t.acr_values,ri=t.resource,ui=t.response_mode,w=t.filterProtocolClaims,fi=void 0===w||w,b=t.loadUserInfo,ei=void 0===b||b,k=t.staleStateAge,oi=void 0===k?900:k,d=t.clockSkew,si=void 0===d?300:d,g=t.clockService,hi=void 0===g?new o.ClockService:g,nt=t.userInfoJwtIssuer,ci=void 0===nt?"OP":nt,tt=t.mergeClaims,li=void 0!==tt&&tt,it=t.stateStore,ai=void 0===it?new s.WebStorageStateStore:it,rt=t.ResponseValidatorCtor,vi=void 0===rt?h.ResponseValidator:rt,ut=t.MetadataServiceCtor,yi=void 0===ut?c.MetadataService:ut,ft=t.extraQueryParams,i=void 0===ft?{}:ft,et=t.extraTokenParams,u=void 0===et?{}:et;l(this,n);this._authority=ot;this._metadataUrl=st;this._metadata=ht;this._metadataSeed=lt;this._signingKeys=ct;this._client_id=at;this._client_secret=vt;this._response_type=yt;this._scope=pt;this._redirect_uri=wt;this._post_logout_redirect_uri=bt;this._client_authentication=kt;this._prompt=dt;this._display=gt;this._max_age=ni;this._ui_locales=ti;this._acr_values=ii;this._resource=ri;this._response_mode=ui;this._filterProtocolClaims=!!fi;this._loadUserInfo=!!ei;this._staleStateAge=oi;this._clockSkew=si;this._clockService=hi;this._userInfoJwtIssuer=ci;this._mergeClaims=!!li;this._stateStore=ai;this._validator=new vi(this);this._metadataService=new yi(this);this._extraQueryParams="object"===(void 0===i?"undefined":r(i))?i:{};this._extraTokenParams="object"===(void 0===u?"undefined":r(u))?u:{}}return n.prototype.getEpochTime=function(){return this._clockService.getEpochTime()},e(n,[{key:"client_id",get:function(){return this._client_id},set:function(n){if(this._client_id)throw u.Log.error("OidcClientSettings.set_client_id: client_id has already been assigned."),new Error("client_id has already been assigned.");this._client_id=n}},{key:"client_secret",get:function(){return this._client_secret}},{key:"response_type",get:function(){return this._response_type}},{key:"scope",get:function(){return this._scope}},{key:"redirect_uri",get:function(){return this._redirect_uri}},{key:"post_logout_redirect_uri",get:function(){return this._post_logout_redirect_uri}},{key:"client_authentication",get:function(){return this._client_authentication}},{key:"prompt",get:function(){return this._prompt}},{key:"display",get:function(){return this._display}},{key:"max_age",get:function(){return this._max_age}},{key:"ui_locales",get:function(){return this._ui_locales}},{key:"acr_values",get:function(){return this._acr_values}},{key:"resource",get:function(){return this._resource}},{key:"response_mode",get:function(){return this._response_mode}},{key:"authority",get:function(){return this._authority},set:function(n){if(this._authority)throw u.Log.error("OidcClientSettings.set_authority: authority has already been assigned."),new Error("authority has already been assigned.");this._authority=n}},{key:"metadataUrl",get:function(){return this._metadataUrl||(this._metadataUrl=this.authority,this._metadataUrl&&this._metadataUrl.indexOf(f)<0&&("/"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+="/"),this._metadataUrl+=f)),this._metadataUrl}},{key:"metadata",get:function(){return this._metadata},set:function(n){this._metadata=n}},{key:"metadataSeed",get:function(){return this._metadataSeed},set:function(n){this._metadataSeed=n}},{key:"signingKeys",get:function(){return this._signingKeys},set:function(n){this._signingKeys=n}},{key:"filterProtocolClaims",get:function(){return this._filterProtocolClaims}},{key:"loadUserInfo",get:function(){return this._loadUserInfo}},{key:"staleStateAge",get:function(){return this._staleStateAge}},{key:"clockSkew",get:function(){return this._clockSkew}},{key:"userInfoJwtIssuer",get:function(){return this._userInfoJwtIssuer}},{key:"mergeClaims",get:function(){return this._mergeClaims}},{key:"stateStore",get:function(){return this._stateStore}},{key:"validator",get:function(){return this._validator}},{key:"metadataService",get:function(){return this._metadataService}},{key:"extraQueryParams",get:function(){return this._extraQueryParams},set:function(n){this._extraQueryParams="object"===(void 0===n?"undefined":r(n))?n:{}}},{key:"extraTokenParams",get:function(){return this._extraTokenParams},set:function(n){this._extraTokenParams="object"===(void 0===n?"undefined":r(n))?n:{}}}]),n}()},function(n,t,i){"use strict";function f(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}Object.defineProperty(t,"__esModule",{value:!0});t.WebStorageStateStore=void 0;var r=i(0),u=i(1);t.WebStorageStateStore=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.prefix,e=void 0===i?"oidc.":i,r=t.store,o=void 0===r?u.Global.localStorage:r;f(this,n);this._store=o;this._prefix=e}return n.prototype.set=function(n,t){return r.Log.debug("WebStorageStateStore.set",n),n=this._prefix+n,this._store.setItem(n,t),Promise.resolve()},n.prototype.get=function(n){r.Log.debug("WebStorageStateStore.get",n);n=this._prefix+n;var t=this._store.getItem(n);return Promise.resolve(t)},n.prototype.remove=function(n){r.Log.debug("WebStorageStateStore.remove",n);n=this._prefix+n;var t=this._store.getItem(n);return this._store.removeItem(n),Promise.resolve(t)},n.prototype.getAllKeys=function(){var t,n,i;for(r.Log.debug("WebStorageStateStore.getAllKeys"),t=[],n=0;n0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u.Global.XMLHttpRequest,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;f(this,n);this._contentTypes=t&&Array.isArray(t)?t.slice():[];this._contentTypes.push("application/json");i&&this._contentTypes.push("application/jwt");this._XMLHttpRequest=r;this._jwtHandler=i}return n.prototype.getJson=function(n,t){var i=this;if(!n)throw r.Log.error("JsonService.getJson: No url passed"),new Error("url");return r.Log.debug("JsonService.getJson, url: ",n),new Promise(function(u,f){var e=new i._XMLHttpRequest,o,s;e.open("GET",n);o=i._contentTypes;s=i._jwtHandler;e.onload=function(){var t,i;if(r.Log.debug("JsonService.getJson: HTTP response received, status",e.status),200===e.status){if(t=e.getResponseHeader("Content-Type"),t){if(i=o.find(function(n){if(t.startsWith(n))return!0}),"application/jwt"==i)return void s(e).then(u,f);if(i)try{return void u(JSON.parse(e.responseText))}catch(n){return r.Log.error("JsonService.getJson: Error parsing JSON response",n.message),void f(n)}}f(Error("Invalid response Content-Type: "+t+", from URL: "+n))}else f(Error(e.statusText+" ("+e.status+")"))};e.onerror=function(){r.Log.error("JsonService.getJson: network error");f(Error("Network Error"))};t&&(r.Log.debug("JsonService.getJson: token passed, setting Authorization header"),e.setRequestHeader("Authorization","Bearer "+t));e.send()})},n.prototype.postForm=function(n,t,i){var u=this;if(!n)throw r.Log.error("JsonService.postForm: No url passed"),new Error("url");return r.Log.debug("JsonService.postForm, url: ",n),new Promise(function(f,e){var o=new u._XMLHttpRequest,h,s,c,l;o.open("POST",n);h=u._contentTypes;o.onload=function(){var t,i;if(r.Log.debug("JsonService.postForm: HTTP response received, status",o.status),200!==o.status){if(400===o.status&&(i=o.getResponseHeader("Content-Type"))&&h.find(function(n){if(i.startsWith(n))return!0}))try{if(t=JSON.parse(o.responseText),t&&t.error)return r.Log.error("JsonService.postForm: Error from server: ",t.error),void e(new Error(t.error))}catch(n){return r.Log.error("JsonService.postForm: Error parsing JSON response",n.message),void e(n)}e(Error(o.statusText+" ("+o.status+")"))}else{if((i=o.getResponseHeader("Content-Type"))&&h.find(function(n){if(i.startsWith(n))return!0}))try{return void f(JSON.parse(o.responseText))}catch(n){return r.Log.error("JsonService.postForm: Error parsing JSON response",n.message),void e(n)}e(Error("Invalid response Content-Type: "+i+", from URL: "+n))}};o.onerror=function(){r.Log.error("JsonService.postForm: network error");e(Error("Network Error"))};s="";for(c in t)l=t[c],l&&(s.length>0&&(s+="&"),s+=encodeURIComponent(c),s+="=",s+=encodeURIComponent(l));o.setRequestHeader("Content-Type","application/x-www-form-urlencoded");void 0!==i&&o.setRequestHeader("Authorization","Basic "+btoa(i));o.send(s)})},n}()},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.SigninRequest=void 0;var u=i(0),r=i(3),f=i(13);t.SigninRequest=function(){function n(t){var i=t.url,c=t.client_id,l=t.redirect_uri,e=t.response_type,a=t.scope,w=t.authority,k=t.data,d=t.prompt,g=t.display,nt=t.max_age,tt=t.ui_locales,it=t.id_token_hint,rt=t.login_hint,ut=t.acr_values,ft=t.resource,o=t.response_mode,et=t.request,ot=t.request_uri,b=t.extraQueryParams,st=t.request_type,ht=t.client_secret,ct=t.extraTokenParams,lt=t.skipUserInfo,v,y,s,h,p;if(function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n),!i)throw u.Log.error("SigninRequest.ctor: No url passed"),new Error("url");if(!c)throw u.Log.error("SigninRequest.ctor: No client_id passed"),new Error("client_id");if(!l)throw u.Log.error("SigninRequest.ctor: No redirect_uri passed"),new Error("redirect_uri");if(!e)throw u.Log.error("SigninRequest.ctor: No response_type passed"),new Error("response_type");if(!a)throw u.Log.error("SigninRequest.ctor: No scope passed"),new Error("scope");if(!w)throw u.Log.error("SigninRequest.ctor: No authority passed"),new Error("authority");v=n.isOidc(e);y=n.isCode(e);o||(o=n.isCode(e)?"query":null);this.state=new f.SigninState({nonce:v,data:k,client_id:c,authority:w,redirect_uri:l,code_verifier:y,request_type:st,response_mode:o,client_secret:ht,scope:a,extraTokenParams:ct,skipUserInfo:lt});i=r.UrlUtility.addQueryParam(i,"client_id",c);i=r.UrlUtility.addQueryParam(i,"redirect_uri",l);i=r.UrlUtility.addQueryParam(i,"response_type",e);i=r.UrlUtility.addQueryParam(i,"scope",a);i=r.UrlUtility.addQueryParam(i,"state",this.state.id);v&&(i=r.UrlUtility.addQueryParam(i,"nonce",this.state.nonce));y&&(i=r.UrlUtility.addQueryParam(i,"code_challenge",this.state.code_challenge),i=r.UrlUtility.addQueryParam(i,"code_challenge_method","S256"));s={prompt:d,display:g,max_age:nt,ui_locales:tt,id_token_hint:it,login_hint:rt,acr_values:ut,resource:ft,request:et,request_uri:ot,response_mode:o};for(h in s)s[h]&&(i=r.UrlUtility.addQueryParam(i,h,s[h]));for(p in b)i=r.UrlUtility.addQueryParam(i,p,b[p]);this.url=i}return n.isOidc=function(n){return!!n.split(/\s+/g).filter(function(n){return"id_token"===n})[0]},n.isOAuth=function(n){return!!n.split(/\s+/g).filter(function(n){return"token"===n})[0]},n.isCode=function(n){return!!n.split(/\s+/g).filter(function(n){return"code"===n})[0]},n}()},function(n,t,i){"use strict";function e(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}Object.defineProperty(t,"__esModule",{value:!0});t.State=void 0;var u=function(){function n(n,t){for(var i,r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=t.id,u=t.data,i=t.created,o=t.request_type;e(this,n);this._id=r||f.default();this._data=u;this._created="number"==typeof i&&i>0?i:parseInt(Date.now()/1e3);this._request_type=o}return n.prototype.toStorageString=function(){return r.Log.debug("State.toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})},n.fromStorageString=function(t){return r.Log.debug("State.fromStorageString"),new n(JSON.parse(t))},n.clearStaleState=function(t,i){var u=Date.now()/1e3-i;return t.getAllKeys().then(function(i){var o;r.Log.debug("State.clearStaleState: got keys",i);for(var f=[],s=function(e){var s=i[e];o=t.get(s).then(function(i){var f=!1,e;if(i)try{e=n.fromStorageString(i);r.Log.debug("State.clearStaleState: got item from key: ",s,e.created);e.created<=u&&(f=!0)}catch(n){r.Log.error("State.clearStaleState: Error parsing state for key",s,n.message);f=!0}else r.Log.debug("State.clearStaleState: no item in storage for key: ",s),f=!0;if(f)return r.Log.debug("State.clearStaleState: removed item for key: ",s),t.remove(s)});f.push(o)},e=0;e0&&void 0!==arguments[0]?arguments[0]:{};v(this,n);this._settings=t instanceof f.OidcClientSettings?t:new f.OidcClientSettings(t)}return n.prototype.createSigninRequest=function(){var p=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=n.response_type,i=n.scope,f=n.redirect_uri,d=n.data,g=n.state,e=n.prompt,o=n.display,s=n.max_age,h=n.ui_locales,nt=n.id_token_hint,tt=n.login_hint,c=n.acr_values,l=n.resource,it=n.request,rt=n.request_uri,a=n.response_mode,v=n.extraQueryParams,y=n.extraTokenParams,ut=n.request_type,ft=n.skipUserInfo,w=arguments[1],b,k;return r.Log.debug("OidcClient.createSigninRequest"),b=this._settings.client_id,t=t||this._settings.response_type,i=i||this._settings.scope,f=f||this._settings.redirect_uri,e=e||this._settings.prompt,o=o||this._settings.display,s=s||this._settings.max_age,h=h||this._settings.ui_locales,c=c||this._settings.acr_values,l=l||this._settings.resource,a=a||this._settings.response_mode,v=v||this._settings.extraQueryParams,y=y||this._settings.extraTokenParams,k=this._settings.authority,u.SigninRequest.isCode(t)&&"code"!==t?Promise.reject(new Error("OpenID Connect hybrid flow is not supported")):this._metadataService.getAuthorizationEndpoint().then(function(n){r.Log.debug("OidcClient.createSigninRequest: Received authorization endpoint",n);var et=new u.SigninRequest({url:n,client_id:b,redirect_uri:f,response_type:t,scope:i,data:d||g,authority:k,prompt:e,display:o,max_age:s,ui_locales:h,id_token_hint:nt,login_hint:tt,acr_values:c,resource:l,request:it,request_uri:rt,extraQueryParams:v,extraTokenParams:y,request_type:ut,response_mode:a,client_secret:p._settings.client_secret,skipUserInfo:ft}),ot=et.state;return(w=w||p._stateStore).set(ot.id,ot.toStorageString()).then(function(){return et})})},n.prototype.readSigninResponseState=function(n,t){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],f;r.Log.debug("OidcClient.readSigninResponseState");var o="query"===this._settings.response_mode||!this._settings.response_mode&&u.SigninRequest.isCode(this._settings.response_type),s=o?"?":"#",i=new h.SigninResponse(n,s);return i.state?(t=t||this._stateStore,f=e?t.remove.bind(t):t.get.bind(t),f(i.state).then(function(n){if(!n)throw r.Log.error("OidcClient.readSigninResponseState: No matching state found in storage"),new Error("No matching state found in storage");return{state:a.SigninState.fromStorageString(n),response:i}})):(r.Log.error("OidcClient.readSigninResponseState: No state in response"),Promise.reject(new Error("No state in response")))},n.prototype.processSigninResponse=function(n,t){var i=this;return r.Log.debug("OidcClient.processSigninResponse"),this.readSigninResponseState(n,t,!0).then(function(n){var t=n.state,u=n.response;return r.Log.debug("OidcClient.processSigninResponse: Received state from storage; validating response"),i._validator.validateSigninResponse(t,u)})},n.prototype.createSignoutRequest=function(){var f=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.id_token_hint,o=n.data,s=n.state,t=n.post_logout_redirect_uri,i=n.extraQueryParams,h=n.request_type,u=arguments[1];return r.Log.debug("OidcClient.createSignoutRequest"),t=t||this._settings.post_logout_redirect_uri,i=i||this._settings.extraQueryParams,this._metadataService.getEndSessionEndpoint().then(function(n){if(!n)throw r.Log.error("OidcClient.createSignoutRequest: No end session endpoint url returned"),new Error("no end session endpoint");r.Log.debug("OidcClient.createSignoutRequest: Received end session endpoint",n);var a=new c.SignoutRequest({url:n,id_token_hint:e,post_logout_redirect_uri:t,data:o||s,extraQueryParams:i,request_type:h}),l=a.state;return l&&(r.Log.debug("OidcClient.createSignoutRequest: Signout request has state to persist"),(u=u||f._stateStore).set(l.id,l.toStorageString())),a})},n.prototype.readSignoutResponseState=function(n,t){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i,u,f;return(r.Log.debug("OidcClient.readSignoutResponseState"),i=new l.SignoutResponse(n),!i.state)?(r.Log.debug("OidcClient.readSignoutResponseState: No state in response"),i.error?(r.Log.warn("OidcClient.readSignoutResponseState: Response was error: ",i.error),Promise.reject(new s.ErrorResponse(i))):Promise.resolve({state:void 0,response:i})):(u=i.state,t=t||this._stateStore,f=o?t.remove.bind(t):t.get.bind(t),f(u).then(function(n){if(!n)throw r.Log.error("OidcClient.readSignoutResponseState: No matching state found in storage"),new Error("No matching state found in storage");return{state:e.State.fromStorageString(n),response:i}}))},n.prototype.processSignoutResponse=function(n,t){var i=this;return r.Log.debug("OidcClient.processSignoutResponse"),this.readSignoutResponseState(n,t,!0).then(function(n){var t=n.state,u=n.response;return t?(r.Log.debug("OidcClient.processSignoutResponse: Received state from storage; validating response"),i._validator.validateSignoutResponse(t,u)):(r.Log.debug("OidcClient.processSignoutResponse: No state from storage; skipping validating response"),u)})},n.prototype.clearStaleState=function(n){return r.Log.debug("OidcClient.clearStaleState"),n=n||this._stateStore,e.State.clearStaleState(n,this.settings.staleStateAge)},o(n,[{key:"_stateStore",get:function(){return this.settings.stateStore}},{key:"_validator",get:function(){return this.settings.validator}},{key:"_metadataService",get:function(){return this.settings.metadataService}},{key:"settings",get:function(){return this._settings}},{key:"metadataService",get:function(){return this._metadataService}}]),n}()},function(n,t,i){"use strict";function e(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}Object.defineProperty(t,"__esModule",{value:!0});t.TokenClient=void 0;var u=i(7),f=i(2),r=i(0);t.TokenClient=function(){function n(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u.JsonService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f.MetadataService;if(e(this,n),!t)throw r.Log.error("TokenClient.ctor: No settings passed"),new Error("settings");this._settings=t;this._jsonService=new i;this._metadataService=new o(this._settings)}return n.prototype.exchangeCode=function(){var u=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t,i;return(n=Object.assign({},n)).grant_type=n.grant_type||"authorization_code",n.client_id=n.client_id||this._settings.client_id,n.client_secret=n.client_secret||this._settings.client_secret,n.redirect_uri=n.redirect_uri||this._settings.redirect_uri,t=void 0,i=n._client_authentication||this._settings._client_authentication,delete n._client_authentication,n.code?n.redirect_uri?n.code_verifier?n.client_id?n.client_secret||"client_secret_basic"!=i?("client_secret_basic"==i&&(t=n.client_id+":"+n.client_secret,delete n.client_id,delete n.client_secret),this._metadataService.getTokenEndpoint(!1).then(function(i){return r.Log.debug("TokenClient.exchangeCode: Received token endpoint"),u._jsonService.postForm(i,n,t).then(function(n){return r.Log.debug("TokenClient.exchangeCode: response received"),n})})):(r.Log.error("TokenClient.exchangeCode: No client_secret passed"),Promise.reject(new Error("A client_secret is required"))):(r.Log.error("TokenClient.exchangeCode: No client_id passed"),Promise.reject(new Error("A client_id is required"))):(r.Log.error("TokenClient.exchangeCode: No code_verifier passed"),Promise.reject(new Error("A code_verifier is required"))):(r.Log.error("TokenClient.exchangeCode: No redirect_uri passed"),Promise.reject(new Error("A redirect_uri is required"))):(r.Log.error("TokenClient.exchangeCode: No code passed"),Promise.reject(new Error("A code is required")))},n.prototype.exchangeRefreshToken=function(){var u=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t,i;return(n=Object.assign({},n)).grant_type=n.grant_type||"refresh_token",n.client_id=n.client_id||this._settings.client_id,n.client_secret=n.client_secret||this._settings.client_secret,t=void 0,i=n._client_authentication||this._settings._client_authentication,delete n._client_authentication,n.refresh_token?n.client_id?("client_secret_basic"==i&&(t=n.client_id+":"+n.client_secret,delete n.client_id,delete n.client_secret),this._metadataService.getTokenEndpoint(!1).then(function(i){return r.Log.debug("TokenClient.exchangeRefreshToken: Received token endpoint"),u._jsonService.postForm(i,n,t).then(function(n){return r.Log.debug("TokenClient.exchangeRefreshToken: response received"),n})})):(r.Log.error("TokenClient.exchangeRefreshToken: No client_id passed"),Promise.reject(new Error("A client_id is required"))):(r.Log.error("TokenClient.exchangeRefreshToken: No refresh_token passed"),Promise.reject(new Error("A refresh_token is required")))},n}()},function(n,t,i){"use strict";function u(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}function f(n,t){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?n:t}Object.defineProperty(t,"__esModule",{value:!0});t.ErrorResponse=void 0;var r=i(0);t.ErrorResponse=function(n){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=e.error,s=e.error_description,h=e.error_uri,c=e.state,l=e.session_state,i;if(u(this,t),!o)throw r.Log.error("No error passed to ErrorResponse"),new Error("error");return i=f(this,n.call(this,s||o)),i.name="ErrorResponse",i.error=o,i.error_description=s,i.error_uri=h,i.state=c,i.session_state=l,i}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)}(t,n),t}(Error)},function(n,t,i){"use strict";function s(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}function h(n,t){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?n:t}Object.defineProperty(t,"__esModule",{value:!0});t.SigninState=void 0;var e=function(){function n(n,t){for(var i,r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=u.nonce,l=u.authority,a=u.client_id,v=u.redirect_uri,o=u.code_verifier,y=u.response_mode,p=u.client_secret,w=u.scope,b=u.extraTokenParams,k=u.skipUserInfo,i,c;return s(this,t),i=h(this,n.call(this,arguments[0])),(!0===e?i._nonce=r.default():e&&(i._nonce=e),!0===o?i._code_verifier=r.default()+r.default()+r.default():o&&(i._code_verifier=o),i.code_verifier)&&(c=f.JoseUtil.hashString(i.code_verifier,"SHA256"),i._code_challenge=f.JoseUtil.hexToBase64Url(c)),i._redirect_uri=v,i._authority=l,i._client_id=a,i._response_mode=y,i._client_secret=p,i._scope=w,i._extraTokenParams=b,i._skipUserInfo=k,i}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)}(t,n),t.prototype.toStorageString=function(){return u.Log.debug("SigninState.toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,nonce:this.nonce,code_verifier:this.code_verifier,redirect_uri:this.redirect_uri,authority:this.authority,client_id:this.client_id,response_mode:this.response_mode,client_secret:this.client_secret,scope:this.scope,extraTokenParams:this.extraTokenParams,skipUserInfo:this.skipUserInfo})},t.fromStorageString=function(n){return u.Log.debug("SigninState.fromStorageString"),new t(JSON.parse(n))},e(t,[{key:"nonce",get:function(){return this._nonce}},{key:"authority",get:function(){return this._authority}},{key:"client_id",get:function(){return this._client_id}},{key:"redirect_uri",get:function(){return this._redirect_uri}},{key:"code_verifier",get:function(){return this._code_verifier}},{key:"code_challenge",get:function(){return this._code_challenge}},{key:"response_mode",get:function(){return this._response_mode}},{key:"client_secret",get:function(){return this._client_secret}},{key:"scope",get:function(){return this._scope}},{key:"extraTokenParams",get:function(){return this._extraTokenParams}},{key:"skipUserInfo",get:function(){return this._skipUserInfo}}]),t}(o.State)},function(n,t){"use strict";function r(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,function(n){return(n^i.getRandomValues(new Uint8Array(1))[0]&15>>n/4).toString(16)})}function u(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,function(n){return(n^16*Math.random()>>n/4).toString(16)})}Object.defineProperty(t,"__esModule",{value:!0});t.default=function(){return("undefined"!=i&&null!==i&&void 0!==i.getRandomValues?r:u)().replace(/-/g,"")};var i="undefined"!=typeof window?window.crypto||window.msCrypto:null;n.exports=t.default},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.User=void 0;var u=function(){function n(n,t){for(var i,r=0;r0&&(i=parseInt(Date.now()/1e3),this.expires_at=i+t)}},{key:"expired",get:function(){var n=this.expires_in;if(void 0!==n)return n<=0}},{key:"scopes",get:function(){return(this.scope||"").split(" ")}}]),n}()},function(n,t,i){"use strict";function f(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}Object.defineProperty(t,"__esModule",{value:!0});t.AccessTokenEvents=void 0;var r=i(0),u=i(46);t.AccessTokenEvents=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.accessTokenExpiringNotificationTime,o=void 0===i?60:i,r=t.accessTokenExpiringTimer,s=void 0===r?new u.Timer("Access token expiring"):r,e=t.accessTokenExpiredTimer,h=void 0===e?new u.Timer("Access token expired"):e;f(this,n);this._accessTokenExpiringNotificationTime=o;this._accessTokenExpiring=s;this._accessTokenExpired=h}return n.prototype.load=function(n){var t,i,u;n.access_token&&void 0!==n.expires_in?(t=n.expires_in,(r.Log.debug("AccessTokenEvents.load: access token present, remaining duration:",t),t>0)?(i=t-this._accessTokenExpiringNotificationTime,i<=0&&(i=1),r.Log.debug("AccessTokenEvents.load: registering expiring timer in:",i),this._accessTokenExpiring.init(i)):(r.Log.debug("AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration."),this._accessTokenExpiring.cancel()),u=t+1,r.Log.debug("AccessTokenEvents.load: registering expired timer in:",u),this._accessTokenExpired.init(u)):(this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel())},n.prototype.unload=function(){r.Log.debug("AccessTokenEvents.unload: canceling existing access token timers");this._accessTokenExpiring.cancel();this._accessTokenExpired.cancel()},n.prototype.addAccessTokenExpiring=function(n){this._accessTokenExpiring.addHandler(n)},n.prototype.removeAccessTokenExpiring=function(n){this._accessTokenExpiring.removeHandler(n)},n.prototype.addAccessTokenExpired=function(n){this._accessTokenExpired.addHandler(n)},n.prototype.removeAccessTokenExpired=function(n){this._accessTokenExpired.removeHandler(n)},n}()},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.Event=void 0;var r=i(0);t.Event=function(){function n(t){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n);this._name=t;this._callbacks=[]}return n.prototype.addHandler=function(n){this._callbacks.push(n)},n.prototype.removeHandler=function(n){var t=this._callbacks.findIndex(function(t){return t===n});t>=0&&this._callbacks.splice(t,1)},n.prototype.raise=function(){var n,t;for(r.Log.debug("Event: Raising event: "+this._name),n=0;n1&&void 0!==arguments[1]?arguments[1]:f.CheckSessionIFrame,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.Global.timer;if(o(this,n),!t)throw r.Log.error("SessionMonitor.ctor: No user manager passed to SessionMonitor"),new Error("userManager");this._userManager=t;this._CheckSessionIFrameCtor=u;this._timer=s;this._userManager.events.addUserLoaded(this._start.bind(this));this._userManager.events.addUserUnloaded(this._stop.bind(this));Promise.resolve(this._userManager.getUser().then(function(n){n?i._start(n):i._settings.monitorAnonymousSession&&i._userManager.querySessionStatus().then(function(n){var t={session_state:n.session_state};n.sub&&n.sid&&(t.profile={sub:n.sub,sid:n.sid});i._start(t)}).catch(function(n){r.Log.error("SessionMonitor ctor: error from querySessionStatus:",n.message)})}).catch(function(n){r.Log.error("SessionMonitor ctor: error from getUser:",n.message)}))}return n.prototype._start=function(n){var t=this,i=n.session_state;i&&(n.profile?(this._sub=n.profile.sub,this._sid=n.profile.sid,r.Log.debug("SessionMonitor._start: session_state:",i,", sub:",this._sub)):(this._sub=void 0,this._sid=void 0,r.Log.debug("SessionMonitor._start: session_state:",i,", anonymous user")),this._checkSessionIFrame?this._checkSessionIFrame.start(i):this._metadataService.getCheckSessionIframe().then(function(n){if(n){r.Log.debug("SessionMonitor._start: Initializing check session iframe");var u=t._client_id,f=t._checkSessionInterval,e=t._stopCheckSessionOnError;t._checkSessionIFrame=new t._CheckSessionIFrameCtor(t._callback.bind(t),u,n,f,e);t._checkSessionIFrame.load().then(function(){t._checkSessionIFrame.start(i)})}else r.Log.warn("SessionMonitor._start: No check session iframe found in the metadata")}).catch(function(n){r.Log.error("SessionMonitor._start: Error from getCheckSessionIframe:",n.message)}))},n.prototype._stop=function(){var n=this,t;(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&(r.Log.debug("SessionMonitor._stop"),this._checkSessionIFrame.stop()),this._settings.monitorAnonymousSession)&&(t=this._timer.setInterval(function(){n._timer.clearInterval(t);n._userManager.querySessionStatus().then(function(t){var i={session_state:t.session_state};t.sub&&t.sid&&(i.profile={sub:t.sub,sid:t.sid});n._start(i)}).catch(function(n){r.Log.error("SessionMonitor: error from querySessionStatus:",n.message)})},1e3))},n.prototype._callback=function(){var n=this;this._userManager.querySessionStatus().then(function(t){var i=!0;t?t.sub===n._sub?(i=!1,n._checkSessionIFrame.start(t.session_state),t.sid===n._sid?r.Log.debug("SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:",t.session_state):(r.Log.debug("SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:",t.session_state),n._userManager.events._raiseUserSessionChanged())):r.Log.debug("SessionMonitor._callback: Different subject signed into OP:",t.sub):r.Log.debug("SessionMonitor._callback: Subject no longer signed into OP");i&&(n._sub?(r.Log.debug("SessionMonitor._callback: SessionMonitor._callback; raising signed out event"),n._userManager.events._raiseUserSignedOut()):(r.Log.debug("SessionMonitor._callback: SessionMonitor._callback; raising signed in event"),n._userManager.events._raiseUserSignedIn()))}).catch(function(t){n._sub&&(r.Log.debug("SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event",t.message),n._userManager.events._raiseUserSignedOut())})},u(n,[{key:"_settings",get:function(){return this._userManager.settings}},{key:"_metadataService",get:function(){return this._userManager.metadataService}},{key:"_client_id",get:function(){return this._settings.client_id}},{key:"_checkSessionInterval",get:function(){return this._settings.checkSessionInterval}},{key:"_stopCheckSessionOnError",get:function(){return this._settings.stopCheckSessionOnError}}]),n}()},function(n,t,i){"use strict";function u(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}Object.defineProperty(t,"__esModule",{value:!0});t.CheckSessionIFrame=void 0;var r=i(0);t.CheckSessionIFrame=function(){function n(t,i,r,f){var o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],e;u(this,n);this._callback=t;this._client_id=i;this._url=r;this._interval=f||2e3;this._stopOnError=o;e=r.indexOf("/",r.indexOf("//")+2);this._frame_origin=r.substr(0,e);this._frame=window.document.createElement("iframe");this._frame.style.visibility="hidden";this._frame.style.position="absolute";this._frame.style.display="none";this._frame.width=0;this._frame.height=0;this._frame.src=r}return n.prototype.load=function(){var n=this;return new Promise(function(t){n._frame.onload=function(){t()};window.document.body.appendChild(n._frame);n._boundMessageEvent=n._message.bind(n);window.addEventListener("message",n._boundMessageEvent,!1)})},n.prototype._message=function(n){n.origin===this._frame_origin&&n.source===this._frame.contentWindow&&("error"===n.data?(r.Log.error("CheckSessionIFrame: error message from check session op iframe"),this._stopOnError&&this.stop()):"changed"===n.data?(r.Log.debug("CheckSessionIFrame: changed message from check session op iframe"),this.stop(),this._callback()):r.Log.debug("CheckSessionIFrame: "+n.data+" message from check session op iframe"))},n.prototype.start=function(n){var t=this,i;this._session_state!==n&&(r.Log.debug("CheckSessionIFrame.start"),this.stop(),this._session_state=n,i=function(){t._frame.contentWindow.postMessage(t._client_id+" "+t._session_state,t._frame_origin)},i(),this._timer=window.setInterval(i,this._interval))},n.prototype.stop=function(){this._session_state=null;this._timer&&(r.Log.debug("CheckSessionIFrame.stop"),window.clearInterval(this._timer),this._timer=null)},n}()},function(n,t,i){"use strict";function s(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}var u,f;Object.defineProperty(t,"__esModule",{value:!0});t.TokenRevocationClient=void 0;var r=i(0),e=i(2),o=i(1);u="access_token";f="refresh_token";t.TokenRevocationClient=function(){function n(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.XMLHttpRequest,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.MetadataService;if(s(this,n),!t)throw r.Log.error("TokenRevocationClient.ctor: No settings provided"),new Error("No settings provided.");this._settings=t;this._XMLHttpRequestCtor=i;this._metadataService=new u(this._settings)}return n.prototype.revoke=function(n,t){var e=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"access_token";if(!n)throw r.Log.error("TokenRevocationClient.revoke: No token provided"),new Error("No token provided.");if(i!==u&&i!=f)throw r.Log.error("TokenRevocationClient.revoke: Invalid token type"),new Error("Invalid token type.");return this._metadataService.getRevocationEndpoint().then(function(u){if(u){r.Log.debug("TokenRevocationClient.revoke: Revoking "+i);var f=e._settings.client_id,o=e._settings.client_secret;return e._revoke(u,f,o,n,i)}if(t)throw r.Log.error("TokenRevocationClient.revoke: Revocation not supported"),new Error("Revocation not supported");})},n.prototype._revoke=function(n,t,i,u,f){var e=this;return new Promise(function(o,s){var h=new e._XMLHttpRequestCtor,c;h.open("POST",n);h.onload=function(){r.Log.debug("TokenRevocationClient.revoke: HTTP response received, status",h.status);200===h.status?o():s(Error(h.statusText+" ("+h.status+")"))};h.onerror=function(){r.Log.debug("TokenRevocationClient.revoke: Network Error.");s("Network Error")};c="client_id="+encodeURIComponent(t);i&&(c+="&client_secret="+encodeURIComponent(i));c+="&token_type_hint="+encodeURIComponent(f);c+="&token="+encodeURIComponent(u);h.setRequestHeader("Content-Type","application/x-www-form-urlencoded");h.send(c)})},n}()},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.CordovaPopupWindow=void 0;var u=function(){function n(n,t){for(var i,r=0;r1&&void 0!==arguments[1]?arguments[1]:o.MetadataService,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.UserInfoService,f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:c.JoseUtil,e=arguments.length>4&&void 0!==arguments[4]?arguments[4]:h.TokenClient;if(l(this,n),!t)throw r.Log.error("ResponseValidator.ctor: No settings passed to ResponseValidator"),new Error("settings");this._settings=t;this._metadataService=new i(this._settings);this._userInfoService=new u(this._settings);this._joseUtil=f;this._tokenClient=new e(this._settings)}return n.prototype.validateSigninResponse=function(n,t){var i=this;return r.Log.debug("ResponseValidator.validateSigninResponse"),this._processSigninParams(n,t).then(function(t){return r.Log.debug("ResponseValidator.validateSigninResponse: state processed"),i._validateTokens(n,t).then(function(t){return r.Log.debug("ResponseValidator.validateSigninResponse: tokens validated"),i._processClaims(n,t).then(function(n){return r.Log.debug("ResponseValidator.validateSigninResponse: claims processed"),n})})})},n.prototype.validateSignoutResponse=function(n,t){return n.id!==t.state?(r.Log.error("ResponseValidator.validateSignoutResponse: State does not match"),Promise.reject(new Error("State does not match"))):(r.Log.debug("ResponseValidator.validateSignoutResponse: state validated"),t.state=n.data,t.error?(r.Log.warn("ResponseValidator.validateSignoutResponse: Response was error",t.error),Promise.reject(new f.ErrorResponse(t))):Promise.resolve(t))},n.prototype._processSigninParams=function(n,t){if(n.id!==t.state)return r.Log.error("ResponseValidator._processSigninParams: State does not match"),Promise.reject(new Error("State does not match"));if(!n.client_id)return r.Log.error("ResponseValidator._processSigninParams: No client_id on state"),Promise.reject(new Error("No client_id on state"));if(!n.authority)return r.Log.error("ResponseValidator._processSigninParams: No authority on state"),Promise.reject(new Error("No authority on state"));if(this._settings.authority){if(this._settings.authority&&this._settings.authority!==n.authority)return r.Log.error("ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state"),Promise.reject(new Error("authority mismatch on settings vs. signin state"))}else this._settings.authority=n.authority;if(this._settings.client_id){if(this._settings.client_id&&this._settings.client_id!==n.client_id)return r.Log.error("ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state"),Promise.reject(new Error("client_id mismatch on settings vs. signin state"))}else this._settings.client_id=n.client_id;return r.Log.debug("ResponseValidator._processSigninParams: state validated"),t.state=n.data,t.error?(r.Log.warn("ResponseValidator._processSigninParams: Response was error",t.error),Promise.reject(new f.ErrorResponse(t))):n.nonce&&!t.id_token?(r.Log.error("ResponseValidator._processSigninParams: Expecting id_token in response"),Promise.reject(new Error("No id_token in response"))):!n.nonce&&t.id_token?(r.Log.error("ResponseValidator._processSigninParams: Not expecting id_token in response"),Promise.reject(new Error("Unexpected id_token in response"))):n.code_verifier&&!t.code?(r.Log.error("ResponseValidator._processSigninParams: Expecting code in response"),Promise.reject(new Error("No code in response"))):!n.code_verifier&&t.code?(r.Log.error("ResponseValidator._processSigninParams: Not expecting code in response"),Promise.reject(new Error("Unexpected code in response"))):(t.scope||(t.scope=n.scope),Promise.resolve(t))},n.prototype._processClaims=function(n,t){var i=this;if(t.isOpenIdConnect){if(r.Log.debug("ResponseValidator._processClaims: response is OIDC, processing claims"),t.profile=this._filterProtocolClaims(t.profile),!0!==n.skipUserInfo&&this._settings.loadUserInfo&&t.access_token)return r.Log.debug("ResponseValidator._processClaims: loading user info"),this._userInfoService.getClaims(t.access_token).then(function(n){return r.Log.debug("ResponseValidator._processClaims: user info claims received from user info endpoint"),n.sub!==t.profile.sub?(r.Log.error("ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token"),Promise.reject(new Error("sub from user info endpoint does not match sub in id_token"))):(t.profile=i._mergeClaims(t.profile,n),r.Log.debug("ResponseValidator._processClaims: user info claims received, updated profile:",t.profile),t)});r.Log.debug("ResponseValidator._processClaims: not loading user info")}else r.Log.debug("ResponseValidator._processClaims: response is not OIDC, not processing claims");return Promise.resolve(t)},n.prototype._mergeClaims=function(n,t){var r=Object.assign({},n),i,e,o,f;for(i in t)for(e=t[i],Array.isArray(e)||(e=[e]),o=0;o1)return r.Log.error("ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata"),Promise.reject(new Error("No kid found in id_token and more than one key found in metadata"));u=i[0]}return Promise.resolve(u)})},n.prototype._getSigningKeyForJwtWithSingleRetry=function(n){var t=this;return this._getSigningKeyForJwt(n).then(function(i){return i?Promise.resolve(i):(t._metadataService.resetSigningKeys(),t._getSigningKeyForJwt(n))})},n.prototype._validateIdToken=function(n,t){var u=this,i;return n.nonce?(i=this._joseUtil.parseJwt(t.id_token),i&&i.header&&i.payload?n.nonce!==i.payload.nonce?(r.Log.error("ResponseValidator._validateIdToken: Invalid nonce in id_token"),Promise.reject(new Error("Invalid nonce in id_token"))):this._metadataService.getIssuer().then(function(f){return r.Log.debug("ResponseValidator._validateIdToken: Received issuer"),u._getSigningKeyForJwtWithSingleRetry(i).then(function(e){if(!e)return r.Log.error("ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys"),Promise.reject(new Error("No key matching kid or alg found in signing keys"));var s=n.client_id,o=u._settings.clockSkew;return r.Log.debug("ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: ",o),u._joseUtil.validateJwt(t.id_token,e,f,s,o).then(function(){return r.Log.debug("ResponseValidator._validateIdToken: JWT validation successful"),i.payload.sub?(t.profile=i.payload,t):(r.Log.error("ResponseValidator._validateIdToken: No sub present in id_token"),Promise.reject(new Error("No sub present in id_token")))})})}):(r.Log.error("ResponseValidator._validateIdToken: Failed to parse id_token",i),Promise.reject(new Error("Failed to parse id_token")))):(r.Log.error("ResponseValidator._validateIdToken: No nonce on state"),Promise.reject(new Error("No nonce on state")))},n.prototype._filterByAlg=function(n,t){var i=null;if(t.startsWith("RS"))i="RSA";else if(t.startsWith("PS"))i="PS";else{if(!t.startsWith("ES"))return r.Log.debug("ResponseValidator._filterByAlg: alg not supported: ",t),[];i="EC"}return r.Log.debug("ResponseValidator._filterByAlg: Looking for keys that match kty: ",i),n=n.filter(function(n){return n.kty===i}),r.Log.debug("ResponseValidator._filterByAlg: Number of keys that match kty: ",i,n.length),n},n.prototype._validateAccessToken=function(n){var u,t,i,e,f,s,o;return n.profile?n.profile.at_hash?n.id_token?(u=this._joseUtil.parseJwt(n.id_token),!u||!u.header)?(r.Log.error("ResponseValidator._validateAccessToken: Failed to parse id_token",u),Promise.reject(new Error("Failed to parse id_token"))):(t=u.header.alg,!t||5!==t.length)?(r.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",t),Promise.reject(new Error("Unsupported alg: "+t))):(i=t.substr(2,3),!i)?(r.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",t,i),Promise.reject(new Error("Unsupported alg: "+t))):256!==(i=parseInt(i))&&384!==i&&512!==i?(r.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",t,i),Promise.reject(new Error("Unsupported alg: "+t))):(e="sha"+i,f=this._joseUtil.hashString(n.access_token,e),!f)?(r.Log.error("ResponseValidator._validateAccessToken: access_token hash failed:",e),Promise.reject(new Error("Failed to validate at_hash"))):(s=f.substr(0,f.length/2),o=this._joseUtil.hexToBase64Url(s),o!==n.profile.at_hash?(r.Log.error("ResponseValidator._validateAccessToken: Failed to validate at_hash",o,n.profile.at_hash),Promise.reject(new Error("Failed to validate at_hash"))):(r.Log.debug("ResponseValidator._validateAccessToken: success"),Promise.resolve(n))):(r.Log.error("ResponseValidator._validateAccessToken: No id_token"),Promise.reject(new Error("No id_token"))):(r.Log.error("ResponseValidator._validateAccessToken: No at_hash in id_token"),Promise.reject(new Error("No at_hash in id_token"))):(r.Log.error("ResponseValidator._validateAccessToken: No profile loaded from id_token"),Promise.reject(new Error("No profile loaded from id_token")))},n}()},function(n,t,i){"use strict";function o(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}Object.defineProperty(t,"__esModule",{value:!0});t.UserInfoService=void 0;var u=i(7),f=i(2),r=i(0),e=i(4);t.UserInfoService=function(){function n(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u.JsonService,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f.MetadataService,h=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.JoseUtil;if(o(this,n),!t)throw r.Log.error("UserInfoService.ctor: No settings passed"),new Error("settings");this._settings=t;this._jsonService=new i(void 0,void 0,this._getClaimsFromJwt.bind(this));this._metadataService=new s(this._settings);this._joseUtil=h}return n.prototype.getClaims=function(n){var t=this;return n?this._metadataService.getUserInfoEndpoint().then(function(i){return r.Log.debug("UserInfoService.getClaims: received userinfo url",i),t._jsonService.getJson(i,n).then(function(n){return r.Log.debug("UserInfoService.getClaims: claims received",n),n})}):(r.Log.error("UserInfoService.getClaims: No token passed"),Promise.reject(new Error("A token is required")))},n.prototype._getClaimsFromJwt=function(n){var i=this,t,f,u;try{if(t=this._joseUtil.parseJwt(n.responseText),!t||!t.header||!t.payload)return r.Log.error("UserInfoService._getClaimsFromJwt: Failed to parse JWT",t),Promise.reject(new Error("Failed to parse id_token"));f=t.header.kid;u=void 0;switch(this._settings.userInfoJwtIssuer){case"OP":u=this._metadataService.getIssuer();break;case"ANY":u=Promise.resolve(t.payload.iss);break;default:u=Promise.resolve(this._settings.userInfoJwtIssuer)}return u.then(function(u){return r.Log.debug("UserInfoService._getClaimsFromJwt: Received issuer:"+u),i._metadataService.getSigningKeys().then(function(e){var o,h,s;if(!e)return r.Log.error("UserInfoService._getClaimsFromJwt: No signing keys from metadata"),Promise.reject(new Error("No signing keys from metadata"));if(r.Log.debug("UserInfoService._getClaimsFromJwt: Received signing keys"),o=void 0,f)o=e.filter(function(n){return n.kid===f})[0];else{if((e=i._filterByAlg(e,t.header.alg)).length>1)return r.Log.error("UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata"),Promise.reject(new Error("No kid found in id_token and more than one key found in metadata"));o=e[0]}return o?(h=i._settings.client_id,s=i._settings.clockSkew,r.Log.debug("UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: ",s),i._joseUtil.validateJwt(n.responseText,o,u,h,s,void 0,!0).then(function(){return r.Log.debug("UserInfoService._getClaimsFromJwt: JWT validation successful"),t.payload})):(r.Log.error("UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys"),Promise.reject(new Error("No key matching kid or alg found in signing keys")))})})}catch(e){return r.Log.error("UserInfoService._getClaimsFromJwt: Error parsing JWT response",e.message),void reject(e)}},n.prototype._filterByAlg=function(n,t){var i=null;if(t.startsWith("RS"))i="RSA";else if(t.startsWith("PS"))i="PS";else{if(!t.startsWith("ES"))return r.Log.debug("UserInfoService._filterByAlg: alg not supported: ",t),[];i="EC"}return r.Log.debug("UserInfoService._filterByAlg: Looking for keys that match kty: ",i),n=n.filter(function(n){return n.kty===i}),r.Log.debug("UserInfoService._filterByAlg: Number of keys that match kty: ",i,n.length),n},n}()},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.AllowedSigningAlgs=t.b64tohex=t.hextob64u=t.crypto=t.X509=t.KeyUtil=t.jws=void 0;var r=i(27);t.jws=r.jws;t.KeyUtil=r.KEYUTIL;t.X509=r.X509;t.crypto=r.crypto;t.hextob64u=r.hextob64u;t.b64tohex=r.b64tohex;t.AllowedSigningAlgs=["RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512"]},function(n,t,i){"use strict";(function(n){function dt(n){for(var i,r="",t=0;t+3<=n.length;t+=3)i=parseInt(n.substring(t,t+3),16),r+=lt.charAt(i>>6)+lt.charAt(63&i);for(t+1==n.length?(i=parseInt(n.substring(t,t+1),16),r+=lt.charAt(i<<2)):t+2==n.length&&(i=parseInt(n.substring(t,t+2),16),r+=lt.charAt(i>>2)+lt.charAt((3&i)<<4));(3&r.length)>0;)r+="=";return r}function gt(n){for(var u,t,i="",r=0,f=0;f>2),u=3&t,r=1):1==r?(i+=et(u<<2|t>>4),u=15&t,r=2):2==r?(i+=et(u),i+=et(t>>2),u=3&t,r=3):(i+=et(u<<2|t>>4),i+=et(15&t),r=0));return 1==r&&(i+=et(u<<2)),i}function yr(n){for(var i=gt(n),r=[],t=0;2*t>>16)&&(n=t,i+=16),0!=(t=n>>8)&&(n=t,i+=8),0!=(t=n>>4)&&(n=t,i+=4),0!=(t=n>>2)&&(n=t,i+=2),0!=(t=n>>1)&&(n=t,i+=1),i}function at(n){this.m=n}function vt(n){this.m=n;this.mp=n.invDigit();this.mpl=32767&this.mp;this.mph=this.mp>>15;this.um=(1<>=16,t+=16),0==(255&n)&&(n>>=8,t+=8),0==(15&n)&&(n>>=4,t+=4),0==(3&n)&&(n>>=2,t+=2),0==(1&n)&&++t,t}function ff(n){for(var t=0;0!=n;)n&=n-1,++t;return t}function fi(){}function kr(n){return n}function ti(n){this.r2=o();this.q3=o();r.ONE.dlShiftTo(2*n.t,this.r2);this.mu=this.r2.divide(n);this.m=n}function nr(){this.i=0;this.j=0;this.S=[]}function tr(){!function(n){g[y++]^=255&n;g[y++]^=n>>8&255;g[y++]^=n>>16&255;g[y++]^=n>>24&255;y>=256&&(y-=256)}((new Date).getTime())}function ef(){if(null==gi){for(tr(),(gi=new nr).init(g),y=0;y>24,(16711680&r)>>16,(65280&r)>>8,255&r]))),r+=1;return u}function e(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null}function k(n,t){this.x=t;this.q=n}function s(n,t,i,u){this.curve=n;this.x=t;this.y=i;this.z=null==u?r.ONE:u;this.zinv=null}function ct(n,t,i){this.q=n;this.a=this.fromBigInteger(t);this.b=this.fromBigInteger(i);this.infinity=new s(this,null,null)}function nu(n){for(var i=[],t=0;tu.length&&(u=r[t]);return(n=n.replace(u,"::")).slice(1,-1)}function sr(n){var t="malformed hex value";if(!n.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw t;if(8!=n.length)return 32==n.length?ou(n):n;try{return parseInt(n.substr(0,2),16)+"."+parseInt(n.substr(2,2),16)+"."+parseInt(n.substr(4,2),16)+"."+parseInt(n.substr(6,2),16)}catch(n){throw t;}}function wi(n){for(var i=encodeURIComponent(n),r="",t=0;t"7"?"00"+n:n}function cu(n,t){for(var i="",u=t/4-n.length,r=0;r>24,(16711680&r)>>16,(65280&r)>>8,255&r])))),r+=1;return u}function au(n){var t,r,u;for(t in i.crypto.Util.DIGESTINFOHEAD)if(r=i.crypto.Util.DIGESTINFOHEAD[t],u=r.length,n.substring(0,u)==r)return[t,n.substring(u)];return[]}function a(n){var y,f=u,r=f.getChildIdx,e=f.getV,t=f.getTLV,o=f.getVbyList,c=f.getVbyListEx,s=f.getTLVbyList,w=f.getTLVbyListEx,h=f.getIdxbyList,b=f.getIdxbyListEx,g=f.getVidx,v=f.oidname,tt=f.hextooidstr,k=a,it=ft;try{y=i.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(n){}this.HEX2STAG={"0c":"utf8",13:"prn",16:"ia5","1a":"vis","1e":"bmp"};this.hex=null;this.version=0;this.foffset=0;this.aExtInfo=null;this.getVersion=function(){return null===this.hex||0!==this.version?this.version:"a003020102"!==s(this.hex,0,[0,0])?(this.version=1,this.foffset=-1,1):(this.version=3,3)};this.getSerialNumberHex=function(){return c(this.hex,0,[0,0],"02")};this.getSignatureAlgorithmField=function(){var n=w(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(n)};this.getAlgorithmIdentifierName=function(n){for(var t in y)if(n===y[t])return t;return v(c(n,0,[0],"06"))};this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())};this.getIssuerHex=function(){return s(this.hex,0,[0,3+this.foffset],"30")};this.getIssuerString=function(){return k.hex2dn(this.getIssuerHex())};this.getSubject=function(){return this.getX500Name(this.getSubjectHex())};this.getSubjectHex=function(){return s(this.hex,0,[0,5+this.foffset],"30")};this.getSubjectString=function(){return k.hex2dn(this.getSubjectHex())};this.getNotBefore=function(){var n=o(this.hex,0,[0,4+this.foffset,0]);return n=n.replace(/(..)/g,"%$1"),decodeURIComponent(n)};this.getNotAfter=function(){var n=o(this.hex,0,[0,4+this.foffset,1]);return n=n.replace(/(..)/g,"%$1"),decodeURIComponent(n)};this.getPublicKeyHex=function(){return f.getTLVbyList(this.hex,0,[0,6+this.foffset],"30")};this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],"30")};this.getPublicKeyContentIdx=function(){var n=this.getPublicKeyIdx();return h(this.hex,n,[1,0],"30")};this.getPublicKey=function(){return l.getKey(this.getPublicKeyHex(),null,"pkcs8pub")};this.getSignatureAlgorithmName=function(){var n=s(this.hex,0,[1],"30");return this.getAlgorithmIdentifierName(n)};this.getSignatureValueHex=function(){return o(this.hex,0,[2],"03",!0)};this.verifySignature=function(n){var r=this.getSignatureAlgorithmField(),u=this.getSignatureValueHex(),f=s(this.hex,0,[0],"30"),t=new i.crypto.Signature({alg:r});return t.init(n),t.updateHex(f),t.verify(u)};this.parseExt=function(n){var c,i,t,a,u,s,l,v;if(void 0===n){if(t=this.hex,3!==this.version)return-1;c=h(t,0,[0,7,0],"30");i=r(t,c)}else{if(t=ft(n),a=h(t,0,[0,3,0,0],"06"),"2a864886f70d01090e"!=e(t,a))return void(this.aExtInfo=[]);c=h(t,0,[0,3,0,1,0],"30");i=r(t,c);this.hex=t}for(this.aExtInfo=[],u=0;u1&&(h=t(n,f[1]),o=this.getGeneralName(h),null!=o.uri&&(u.uri=o.uri)),f.length>2&&(s=t(n,f[2]),"0101ff"==s&&(u.reqauth=!0),"010100"==s&&(u.reqauth=!1)),u};this.getX500NameRule=function(n){for(var o,f,u=null,e=[],t=0;t0&&(n.ext=this.getExtParamArray()),n.sighex=this.getSignatureValueHex(),n};this.getExtParamArray=function(n){var o,u;null==n&&-1!=b(this.hex,0,[0,"[3]"])&&(n=w(this.hex,0,[0,"[3]",0],"30"));for(var f=[],e=r(n,0),i=0;i>>2]>>>24-t%4*8&255,u[i+t>>>2]|=e<<24-(i+t)%4*8;else for(t=0;t>>2]=f[t>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8;t.length=wt.ceil(n/4)},clone:function(){var n=bt.clone.call(this);return n.words=this.words.slice(0),n},random:function(n){for(var t=[],i=0;i>>2]>>>24-t%4*8&255,i.push((r>>>4).toString(16)),i.push((15&r).toString(16));return i.join("")},parse:function(n){for(var i=n.length,r=[],t=0;t>>3]|=parseInt(n.substr(t,2),16)<<24-t%8*4;return new kt.init(r,i/2)}},bi=ci.Latin1={stringify:function(n){for(var r,u=n.words,f=n.sigBytes,i=[],t=0;t>>2]>>>24-t%4*8&255,i.push(String.fromCharCode(r));return i.join("")},parse:function(n){for(var i=n.length,r=[],t=0;t>>2]|=(255&n.charCodeAt(t))<<24-t%4*8;return new kt.init(r,i)}},ar=ci.Utf8={stringify:function(n){try{return decodeURIComponent(escape(bi.stringify(n)))}catch(n){throw new Error("Malformed UTF-8 data");}},parse:function(n){return bi.parse(unescape(encodeURIComponent(n)))}},ki=ri.BufferedBlockAlgorithm=bt.extend({reset:function(){this._data=new kt.init;this._nDataBytes=0},_append:function(n){"string"==typeof n&&(n=ar.parse(n));this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(n){var r=this._data,e=r.words,o=r.sigBytes,u=this.blockSize,f=o/(4*u),t=(f=n?wt.ceil(f):wt.max((0|f)-this._minBufferSize,0))*u,s=wt.min(4*t,o),i,h;if(t){for(i=0;i>>2]>>>24-t%4*8&255)<<16|(i[t+1>>>2]>>>24-(t+1)%4*8&255)<<8|i[t+2>>>2]>>>24-(t+2)%4*8&255,r=0;4>r&&t+.75*r>>6*(3-r)&63));if(i=f.charAt(64))for(;n.length%4;)n.push(i);return n.join("")},parse:function(n){var e=n.length,f=this._map,o,s;(r=f.charAt(64))&&-1!=(r=n.indexOf(r))&&(e=r);for(var r=[],u=0,i=0;i>>6-i%4*2,r[u>>>2]|=(o|s)<<24-u%4*8,u++);return t.create(r,u)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(n){for(var r,v,h,t,e=f,y=(i=e.lib).WordArray,o=i.Hasher,i=e.algo,c=[],l=[],a=function(n){return 4294967296*(n-(0|n))|0},s=2,u=0;64>u;){n:{for(r=s,v=n.sqrt(r),h=2;h<=v;h++)if(!(r%h)){r=!1;break n}r=!0}r&&(8>u&&(c[u]=a(n.pow(s,.5))),l[u]=a(n.pow(s,1/3)),u++);s++}t=[];i=i.SHA256=o.extend({_doReset:function(){this._hash=new y.init(c.slice(0))},_doProcessBlock:function(n,i){for(var o,s,r=this._hash.words,f=r[0],h=r[1],c=r[2],y=r[3],e=r[4],a=r[5],v=r[6],p=r[7],u=0;64>u;u++)16>u?t[u]=0|n[i+u]:(o=t[u-15],s=t[u-2],t[u]=((o<<25|o>>>7)^(o<<14|o>>>18)^o>>>3)+t[u-7]+((s<<15|s>>>17)^(s<<13|s>>>19)^s>>>10)+t[u-16]),o=p+((e<<26|e>>>6)^(e<<21|e>>>11)^(e<<7|e>>>25))+(e&a^~e&v)+l[u]+t[u],s=((f<<30|f>>>2)^(f<<19|f>>>13)^(f<<10|f>>>22))+(f&h^f&c^h&c),p=v,v=a,a=e,e=y+o|0,y=c,c=h,h=f,f=o+s|0;r[0]=r[0]+f|0;r[1]=r[1]+h|0;r[2]=r[2]+c|0;r[3]=r[3]+y|0;r[4]=r[4]+e|0;r[5]=r[5]+a|0;r[6]=r[6]+v|0;r[7]=r[7]+p|0},_doFinalize:function(){var r=this._data,t=r.words,u=8*this._nDataBytes,i=8*r.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=n.floor(u/4294967296),t[15+(i+64>>>9<<4)]=u,r.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var n=o.clone.call(this);return n._hash=this._hash.clone(),n}});e.SHA256=o._createHelper(i);e.HmacSHA256=o._createHmacHelper(i)}(Math),function(){function n(){return t.create.apply(t,arguments)}for(var u=f,e=u.lib.Hasher,t=(i=u.x64).Word,s=i.WordArray,i=u.algo,h=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],r=[],o=0;80>o;o++)r[o]=n();i=i.SHA512=e.extend({_doReset:function(){this._hash=new s.init([new t.init(1779033703,4089235720),new t.init(3144134277,2227873595),new t.init(1013904242,4271175723),new t.init(2773480762,1595750129),new t.init(1359893119,2917565137),new t.init(2600822924,725511199),new t.init(528734635,4215389547),new t.init(1541459225,327033209)])},_doProcessBlock:function(n,t){for(var y,a,i,ft=(f=this._hash.words)[0],et=f[1],ot=f[2],st=f[3],ht=f[4],ct=f[5],lt=f[6],f=f[7],ui=ft.high,at=ft.low,fi=et.high,vt=et.low,ei=ot.high,yt=ot.low,oi=st.high,pt=st.low,si=ht.high,wt=ht.low,hi=ct.high,bt=ct.low,ci=lt.high,kt=lt.low,li=f.high,dt=f.low,s=ui,e=at,g=fi,b=vt,nt=ei,k=yt,ti=oi,tt=pt,c=si,o=wt,gt=hi,it=bt,ni=ci,rt=kt,ii=li,ut=dt,l=0;80>l;l++){if(y=r[l],16>l)a=y.high=0|n[t+2*l],i=y.low=0|n[t+2*l+1];else{a=((i=(a=r[l-15]).high)>>>1|(v=a.low)<<31)^(i>>>8|v<<24)^i>>>7;var v=(v>>>1|i<<31)^(v>>>8|i<<24)^(v>>>7|i<<25),d=((i=(d=r[l-2]).high)>>>19|(u=d.low)<<13)^(i<<3|u>>>29)^i>>>6,u=(u>>>19|i<<13)^(u<<3|i>>>29)^(u>>>6|i<<26),ri=(i=r[l-7]).high,p=(w=r[l-16]).high,w=w.low;a=(a=(a=a+ri+((i=v+i.low)>>>0>>0?1:0))+d+((i+=u)>>>0>>0?1:0))+p+((i+=w)>>>0>>0?1:0);y.high=a;y.low=i}ri=c>^~c∋w=o&it^~o&rt;y=s&g^s&nt^g&nt;var vi=e&b^e&k^b&k,yi=(v=(s>>>28|e<<4)^(s<<30|e>>>2)^(s<<25|e>>>7),d=(e>>>28|s<<4)^(e<<30|s>>>2)^(e<<25|s>>>7),(u=h[l]).high),ai=u.low;p=ii+((c>>>14|o<<18)^(c>>>18|o<<14)^(c<<23|o>>>9))+((u=ut+((o>>>14|c<<18)^(o>>>18|c<<14)^(o<<23|c>>>9)))>>>0>>0?1:0);ii=ni;ut=rt;ni=gt;rt=it;gt=c;it=o;c=ti+(p=(p=(p=p+ri+((u+=w)>>>0>>0?1:0))+yi+((u+=ai)>>>0>>0?1:0))+a+((u+=i)>>>0>>0?1:0))+((o=tt+u|0)>>>0>>0?1:0)|0;ti=nt;tt=k;nt=g;k=b;g=s;b=e;s=p+(y=v+y+((i=d+vi)>>>0>>0?1:0))+((e=u+i|0)>>>0>>0?1:0)|0}at=ft.low=at+e;ft.high=ui+s+(at>>>0>>0?1:0);vt=et.low=vt+b;et.high=fi+g+(vt>>>0>>0?1:0);yt=ot.low=yt+k;ot.high=ei+nt+(yt>>>0>>0?1:0);pt=st.low=pt+tt;st.high=oi+ti+(pt>>>0>>0?1:0);wt=ht.low=wt+o;ht.high=si+c+(wt>>>0>>0?1:0);bt=ct.low=bt+it;ct.high=hi+gt+(bt>>>0>>0?1:0);kt=lt.low=kt+rt;lt.high=ci+ni+(kt>>>0>>0?1:0);dt=f.low=dt+ut;f.high=li+ii+(dt>>>0>>0?1:0)},_doFinalize:function(){var i=this._data,n=i.words,r=8*this._nDataBytes,t=8*i.sigBytes;return n[t>>>5]|=128<<24-t%32,n[30+(t+128>>>10<<5)]=Math.floor(r/4294967296),n[31+(t+128>>>10<<5)]=r,i.sigBytes=4*n.length,this._process(),this._hash.toX32()},clone:function(){var n=e.clone.call(this);return n._hash=this._hash.clone(),n},blockSize:32});u.SHA512=e._createHelper(i);u.HmacSHA512=e._createHmacHelper(i)}(),function(){var i=f,n=(t=i.x64).Word,u=t.WordArray,r=(t=i.algo).SHA512,t=t.SHA384=r.extend({_doReset:function(){this._hash=new u.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var n=r._doFinalize.call(this);return n.sigBytes-=16,n}});i.SHA384=r._createHelper(t);i.HmacSHA384=r._createHmacHelper(t)}(),lt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/","Microsoft Internet Explorer"==ii.appName?(r.prototype.am=function(n,t,i,r,u,f){for(var o=32767&t,s=t>>15;--f>=0;){var e=32767&this[n],h=this[n++]>>15,c=s*e+h*o;u=((e=o*e+((32767&c)<<15)+i[r]+(1073741823&u))>>>30)+(c>>>15)+s*h+(u>>>30);i[r++]=1073741823&e}return u},st=30):"Netscape"!=ii.appName?(r.prototype.am=function(n,t,i,r,u,f){for(;--f>=0;){var e=t*this[n++]+i[r]+u;u=Math.floor(e/67108864);i[r++]=67108863&e}return u},st=26):(r.prototype.am=function(n,t,i,r,u,f){for(var o=16383&t,s=t>>14;--f>=0;){var e=16383&this[n],h=this[n++]>>14,c=s*e+h*o;u=((e=o*e+((16383&c)<<14)+i[r]+u)>>28)+(c>>14)+s*h;i[r++]=268435455&e}return u},st=28),r.prototype.DB=st,r.prototype.DM=(1<=0?n.mod(this.m):n},at.prototype.revert=function(n){return n},at.prototype.reduce=function(n){n.divRemTo(this.m,null,n)},at.prototype.mulTo=function(n,t,i){n.multiplyTo(t,i);this.reduce(i)},at.prototype.sqrTo=function(n,t){n.squareTo(t);this.reduce(t)},vt.prototype.convert=function(n){var t=o();return n.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),n.s<0&&t.compareTo(r.ZERO)>0&&this.m.subTo(t,t),t},vt.prototype.revert=function(n){var t=o();return n.copyTo(t),this.reduce(t),t},vt.prototype.reduce=function(n){for(var t,i,r;n.t<=this.mt2;)n[n.t++]=0;for(t=0;t>15)*this.mpl&this.um)<<15)&n.DM,n[i=t+this.m.t]+=this.m.am(0,r,n,t,0,this.m.t);n[i]>=n.DV;)n[i]-=n.DV,n[++i]++;n.clamp();n.drShiftTo(this.m.t,n);n.compareTo(this.m)>=0&&n.subTo(this.m,n)},vt.prototype.mulTo=function(n,t,i){n.multiplyTo(t,i);this.reduce(i)},vt.prototype.sqrTo=function(n,t){n.squareTo(t);this.reduce(t)},r.prototype.copyTo=function(n){for(var t=this.t-1;t>=0;--t)n[t]=this[t];n.t=this.t;n.s=this.s},r.prototype.fromInt=function(n){this.t=1;this.s=n<0?-1:0;n>0?this[0]=n:n<-1?this[0]=n+this.DV:this.t=0},r.prototype.fromString=function(n,t){var u,f;if(16==t)u=4;else if(8==t)u=3;else if(256==t)u=8;else if(2==t)u=1;else if(32==t)u=5;else{if(4!=t)return void this.fromRadix(n,t);u=2}this.t=0;this.s=0;for(var e=n.length,o=!1,i=0;--e>=0;)f=8==u?255&n[e]:pr(n,e),f<0?"-"==n.charAt(e)&&(o=!0):(o=!1,0==i?this[this.t++]=f:i+u>this.DB?(this[this.t-1]|=(f&(1<>this.DB-i):this[this.t-1]|=f<=this.DB&&(i-=this.DB));8==u&&0!=(128&n[0])&&(this.s=-1,i>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==n;)--this.t},r.prototype.dlShiftTo=function(n,t){for(var i=this.t-1;i>=0;--i)t[i+n]=this[i];for(i=n-1;i>=0;--i)t[i]=0;t.t=this.t+n;t.s=this.s},r.prototype.drShiftTo=function(n,t){for(var i=n;i=0;--i)t[i+r+1]=this[i]>>e|f,f=(this[i]&o)<=0;--i)t[i]=0;t[r]=f;t.t=this.t+r+1;t.s=this.s;t.clamp()},r.prototype.rShiftTo=function(n,t){var i,r;if(t.s=this.s,i=Math.floor(n/this.DB),i>=this.t)t.t=0;else{var u=n%this.DB,f=this.DB-u,e=(1<>u,r=i+1;r>u;u>0&&(t[this.t-i-1]|=(this.s&e)<>=this.DB;if(n.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=n.s}t.s=i<0?-1:0;i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i);t.t=r;t.clamp()},r.prototype.multiplyTo=function(n,t){var u=this.abs(),f=n.abs(),i=u.t;for(t.t=i+f.t;--i>=0;)t[i]=0;for(i=0;i=0;)n[t]=0;for(t=0;t=i.DV&&(n[t+i.t]-=i.DV,n[t+i.t+1]=1);n.t>0&&(n[n.t-1]+=i.am(t,i[t],n,2*t,0,1));n.s=0;n.clamp()},r.prototype.divRemTo=function(n,t,i){var s=n.abs(),l,f,a,y;if(!(s.t<=0)){if(l=this.abs(),l.t0?(s.lShiftTo(c,u),l.lShiftTo(c,i)):(s.copyTo(u),l.copyTo(i)),f=u.t,a=u[f-1],0!=a){var w=a*(1<1?u[f-2]>>this.F2:0),k=this.FV/w,d=(1<=0&&(i[i.t++]=1,i.subTo(e,i)),r.ONE.dlShiftTo(f,e),e.subTo(u,u);u.t=0;)if(y=i[--h]==a?this.DM:Math.floor(i[h]*k+(i[h-1]+g)*d),(i[h]+=u.am(0,y,i,v,0,f))0&&i.rShiftTo(c,i);p<0&&r.ZERO.subTo(i,i)}}},r.prototype.invDigit=function(){var t,n;return this.t<1?0:(t=this[0],0==(1&t))?0:(n=3&t,(n=(n=(n=(n=n*(2-(15&t)*n)&15)*(2-(255&t)*n)&255)*(2-((65535&t)*n&65535))&65535)*(2-t*n%this.DV)%this.DV)>0?this.DV-n:-n)},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(n,t){var s;if(n>4294967295||n<1)return r.ONE;var i=o(),u=o(),f=t.convert(this),e=li(n)-1;for(f.copyTo(i);--e>=0;)(t.sqrTo(i,u),(n&1<0)?t.mulTo(u,f,i):(s=i,i=u,u=s);return t.revert(i)},r.prototype.toString=function(n){var t;if(this.s<0)return"-"+this.negate().toString(n);if(16==n)t=4;else if(8==n)t=3;else if(2==n)t=1;else if(32==n)t=5;else{if(4!=n)return this.toRadix(n);t=2}var u,o=(1<0)for(i>i)>0&&(f=!0,e=et(u));r>=0;)i>(i+=this.DB-t)):(u=this[r]>>(i-=t)&o,i<=0&&(i+=this.DB,--r)),u>0&&(f=!0),f&&(e+=et(u));return f?e:"0"},r.prototype.negate=function(){var n=o();return r.ZERO.subTo(this,n),n},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(n){var t=this.s-n.s,i;if(0!=t)return t;if(i=this.t,0!=(t=i-n.t))return this.s<0?-t:t;for(;--i>=0;)if(0!=(t=this[i]-n[i]))return t;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+li(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(n){var t=o();return this.abs().divRemTo(n,null,t),this.s<0&&t.compareTo(r.ZERO)>0&&n.subTo(t,t),t},r.prototype.modPowInt=function(n,t){var i;return i=n<256||t.isEven()?new at(t):new vt(t),this.exp(n,i)},r.ZERO=ht(0),r.ONE=ht(1),fi.prototype.convert=kr,fi.prototype.revert=kr,fi.prototype.mulTo=function(n,t,i){n.multiplyTo(t,i)},fi.prototype.sqrTo=function(n,t){n.squareTo(t)},ti.prototype.convert=function(n){if(n.s<0||n.t>2*this.m.t)return n.mod(this.m);if(n.compareTo(this.m)<0)return n;var t=o();return n.copyTo(t),this.reduce(t),t},ti.prototype.revert=function(n){return n},ti.prototype.reduce=function(n){for(n.drShiftTo(this.m.t-1,this.r2),n.t>this.m.t+1&&(n.t=this.m.t+1,n.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);n.compareTo(this.r2)<0;)n.dAddOffset(1,this.m.t+1);for(n.subTo(this.r2,n);n.compareTo(this.m)>=0;)n.subTo(this.m,n)},ti.prototype.mulTo=function(n,t,i){n.multiplyTo(t,i);this.reduce(i)},ti.prototype.sqrTo=function(n,t){n.squareTo(t);this.reduce(t)},b=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],dr=67108864/b[b.length-1],r.prototype.chunkSize=function(n){return Math.floor(Math.LN2*this.DB/Math.log(n))},r.prototype.toRadix=function(n){if(null==n&&(n=10),0==this.signum()||n<2||n>36)return"0";var e=this.chunkSize(n),u=Math.pow(n,e),f=ht(u),t=o(),i=o(),r="";for(this.divRemTo(f,t,i);t.signum()>0;)r=(u+i.intValue()).toString(n).substr(1)+r,t.divRemTo(f,t,i);return i.intValue().toString(n)+r},r.prototype.fromRadix=function(n,t){var e;this.fromInt(0);null==t&&(t=10);for(var o=this.chunkSize(t),h=Math.pow(t,o),s=!1,u=0,i=0,f=0;f=o&&(this.dMultiply(h),this.dAddOffset(i,0),u=0,i=0));u>0&&(this.dMultiply(Math.pow(t,u)),this.dAddOffset(i,0));s&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(n,t,i){if("number"==typeof t)if(n<2)this.fromInt(1);else for(this.fromNumber(n,i),this.testBit(n-1)||this.bitwiseTo(r.ONE.shiftLeft(n-1),di,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>n&&this.subTo(r.ONE.shiftLeft(n-1),this);else{var u=[],f=7&n;u.length=1+(n>>3);t.nextBytes(u);f>0?u[0]&=(1<>=this.DB;if(n.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=n.s}t.s=i<0?-1:0;i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i);t.t=r;t.clamp()},r.prototype.dMultiply=function(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()},r.prototype.dAddOffset=function(n,t){if(0!=n){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=n;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},r.prototype.multiplyLowerTo=function(n,t,i){var u,r=Math.min(this.t+n.t,t);for(i.s=0,i.t=r;r>0;)i[--r]=0;for(u=i.t-this.t;r=0;)i[r]=0;for(r=Math.max(t-this.t,0);r0)if(0==r)t=this[0]%n;else for(i=this.t-1;i>=0;--i)t=(r*t+this[i])%n;return t},r.prototype.millerRabin=function(n){var i=this.subtract(r.ONE),u=i.getLowestSetBit(),s,f,e,t,h;if(u<=0)return!1;for(s=i.shiftRight(u),(n=n+1>>1)>b.length&&(n=b.length),f=o(),e=0;e>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var i=this.t,u=[],t,n,r;if(u[0]=this.s,n=this.DB-i*this.DB%8,r=0,i-->0)for(n>n)!=(this.s&this.DM)>>n&&(u[r++]=t|this.s<=0;)n<8?(t=(this[i]&(1<>(n+=this.DB-8)):(t=this[i]>>(n-=8)&255,n<=0&&(n+=this.DB,--i)),0!=(128&t)&&(t|=-256),0==r&&(128&this.s)!=(128&t)&&++r,(r>0||t!=this.s)&&(u[r++]=t);return u},r.prototype.equals=function(n){return 0==this.compareTo(n)},r.prototype.min=function(n){return this.compareTo(n)<0?this:n},r.prototype.max=function(n){return this.compareTo(n)>0?this:n},r.prototype.and=function(n){var t=o();return this.bitwiseTo(n,rf,t),t},r.prototype.or=function(n){var t=o();return this.bitwiseTo(n,di,t),t},r.prototype.xor=function(n){var t=o();return this.bitwiseTo(n,wr,t),t},r.prototype.andNot=function(n){var t=o();return this.bitwiseTo(n,br,t),t},r.prototype.not=function(){for(var n=o(),t=0;t=this.t?0!=this.s:0!=(this[t]&1<1)for(y=o(),f.sqrTo(h[1],y);u<=p;)h[u]=o(),f.mulTo(y,h[u-2],h[u]),u+=2;var c,v,e=n.t-1,w=!0,s=o();for(i=li(n[e])-1;e>=0;){for(i>=a?c=n[e]>>i-a&p:(c=(n[e]&(1<0&&(c|=n[e-1]>>this.DB+i-a)),u=l;0==(1&c);)c>>=1,--u;if((i-=u)<0&&(i+=this.DB,--e),w)h[c].copyTo(r),w=!1;else{for(;u>1;)f.sqrTo(r,s),f.sqrTo(s,r),u-=2;u>0?f.sqrTo(r,s):(v=r,r=s,s=v);f.mulTo(s,h[c],r)}for(;e>=0&&0==(n[e]&1<=0?(u.subTo(f,u),s&&e.subTo(o,e),i.subTo(t,i)):(f.subTo(u,f),s&&o.subTo(e,o),t.subTo(i,t))}return 0!=f.compareTo(r.ONE)?r.ZERO:t.compareTo(n)>=0?t.subtract(n):t.signum()<0?(t.addTo(n,t),t.signum()<0?t.add(n):t):t},r.prototype.pow=function(n){return this.exp(n,new fi)},r.prototype.gcd=function(n){var i=this.s<0?this.negate():this.clone(),t=n.s<0?n.negate():n.clone(),f,u,r;if(i.compareTo(t)<0&&(f=i,i=t,t=f),u=i.getLowestSetBit(),r=t.getLowestSetBit(),r<0)return i;for(u0&&(i.rShiftTo(r,i),t.rShiftTo(r,t));i.signum()>0;)(u=i.getLowestSetBit())>0&&i.rShiftTo(u,i),(u=t.getLowestSetBit())>0&&t.rShiftTo(u,t),i.compareTo(t)>=0?(i.subTo(t,i),i.rShiftTo(1,i)):(t.subTo(i,t),t.rShiftTo(1,t));return r>0&&t.lShiftTo(r,t),t},r.prototype.isProbablePrime=function(n){var t,i=this.abs(),r,u;if(1==i.t&&i[0]<=b[b.length-1]){for(t=0;t>>8,g[y++]=255⁢y=0;tr()}yt.prototype.nextBytes=function(n){for(var t=0;t0&&t.length>0))throw"Invalid RSA public key";this.n=ei(n,16);this.e=parseInt(t,16)}};e.prototype.encrypt=function(n){var u=function(n,t){var i,e,u,o,f;if(t=0&&t>0;)u=n.charCodeAt(e--),u<128?i[--t]=u:u>127&&u<2048?(i[--t]=63&u|128,i[--t]=u>>6|192):(i[--t]=63&u|128,i[--t]=u>>6&63|128,i[--t]=u>>12|224);for(i[--t]=0,o=new yt,f=[];t>2;){for(f[0]=0;0==f[0];)o.nextBytes(f);i[--t]=f[0]}return i[--t]=2,i[--t]=0,new r(i)}(n,this.n.bitLength()+7>>3),i,t;return null==u?null:(i=this.doPublic(u),null==i)?null:(t=i.toString(16),0==(1&t.length)?t:"0"+t)};e.prototype.encryptOAEP=function(n,t,u){var o=function(n,t,u,f){var v=i.crypto.MessageDigest,w=i.crypto.Util,c=null,e,l,s,o,y,h,p,a;if(u||(u="sha1"),"string"==typeof u&&(c=v.getCanonicalAlgName(u),f=v.getHashLength(c),u=function(n){return nt(w.hashHex(ut(n),c))}),n.length+2*f+2>t)throw"Message too long for RSA";for(l="",e=0;e>3,t,u),e,f;return null==o?null:(e=this.doPublic(o),null==e)?null:(f=e.toString(16),0==(1&f.length)?f:"0"+f)};e.prototype.type="RSA";k.prototype.equals=function(n){return n==this||this.q.equals(n.q)&&this.x.equals(n.x)};k.prototype.toBigInteger=function(){return this.x};k.prototype.negate=function(){return new k(this.q,this.x.negate().mod(this.q))};k.prototype.add=function(n){return new k(this.q,this.x.add(n.toBigInteger()).mod(this.q))};k.prototype.subtract=function(n){return new k(this.q,this.x.subtract(n.toBigInteger()).mod(this.q))};k.prototype.multiply=function(n){return new k(this.q,this.x.multiply(n.toBigInteger()).mod(this.q))};k.prototype.square=function(){return new k(this.q,this.x.square().mod(this.q))};k.prototype.divide=function(n){return new k(this.q,this.x.multiply(n.toBigInteger().modInverse(this.q)).mod(this.q))};s.prototype.getX=function(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))};s.prototype.getY=function(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))};s.prototype.equals=function(n){return n==this||(this.isInfinity()?n.isInfinity():n.isInfinity()?this.isInfinity():!!n.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(n.z)).mod(this.curve.q).equals(r.ZERO)&&n.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(n.z)).mod(this.curve.q).equals(r.ZERO))};s.prototype.isInfinity=function(){return null==this.x&&null==this.y||this.z.equals(r.ZERO)&&!this.y.toBigInteger().equals(r.ZERO)};s.prototype.negate=function(){return new s(this.curve,this.x,this.y.negate(),this.z)};s.prototype.add=function(n){var t,i;if(this.isInfinity())return n;if(n.isInfinity())return this;if(t=n.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(n.z)).mod(this.curve.q),i=n.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(n.z)).mod(this.curve.q),r.ZERO.equals(i))return r.ZERO.equals(t)?this.twice():this.curve.getInfinity();var h=new r("3"),c=this.x.toBigInteger(),l=this.y.toBigInteger(),f=(n.x.toBigInteger(),n.y.toBigInteger(),i.square()),u=f.multiply(i),e=c.multiply(f),o=t.square().multiply(this.z),a=o.subtract(e.shiftLeft(1)).multiply(n.z).subtract(u).multiply(i).mod(this.curve.q),v=e.multiply(h).multiply(t).subtract(l.multiply(u)).subtract(o.multiply(t)).multiply(n.z).add(t.multiply(u)).mod(this.curve.q),y=u.multiply(this.z).multiply(n.z).mod(this.curve.q);return new s(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(v),y)};s.prototype.twice=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var f=new r("3"),i=this.x.toBigInteger(),e=this.y.toBigInteger(),t=e.multiply(this.z),u=t.multiply(e).mod(this.curve.q),o=this.curve.a.toBigInteger(),n=i.square().multiply(f);r.ZERO.equals(o)||(n=n.add(this.z.square().multiply(o)));var h=(n=n.mod(this.curve.q)).square().subtract(i.shiftLeft(3).multiply(u)).shiftLeft(1).multiply(t).mod(this.curve.q),c=n.multiply(f).multiply(i).subtract(u.shiftLeft(1)).shiftLeft(2).multiply(u).subtract(n.square().multiply(n)).mod(this.curve.q),l=t.square().multiply(t).shiftLeft(3).mod(this.curve.q);return new s(this.curve,this.curve.fromBigInteger(h),this.curve.fromBigInteger(c),l)};s.prototype.multiply=function(n){var f,e;if(this.isInfinity())return this;if(0==n.signum())return this.curve.getInfinity();for(var o=n,h=o.multiply(new r("3")),a=this.negate(),u=this,c=this.curve.q.subtract(n),l=c.multiply(new r("3")),i=new s(this.curve,this.x,this.y),v=i.negate(),t=h.bitLength()-2;t>0;--t)u=u.twice(),f=h.testBit(t),f!=o.testBit(t)&&(u=u.add(f?this:a));for(t=l.bitLength()-2;t>0;--t)i=i.twice(),e=l.testBit(t),e!=c.testBit(t)&&(i=i.add(e?i:v));return u};s.prototype.multiplyTwo=function(n,t,i){var u,r,f;for(u=n.bitLength()>i.bitLength()?n.bitLength()-1:i.bitLength()-1,r=this.curve.getInfinity(),f=this.add(t);u>=0;)r=r.twice(),n.testBit(u)?r=i.testBit(u)?r.add(f):r.add(this):i.testBit(u)&&(r=r.add(t)),--u;return r};ct.prototype.getQ=function(){return this.q};ct.prototype.getA=function(){return this.a};ct.prototype.getB=function(){return this.b};ct.prototype.equals=function(n){return n==this||this.q.equals(n.q)&&this.a.equals(n.a)&&this.b.equals(n.b)};ct.prototype.getInfinity=function(){return this.infinity};ct.prototype.fromBigInteger=function(n){return new k(this.q,n)};ct.prototype.decodePointHex=function(n){switch(parseInt(n.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var t=(n.length-2)/2,i=n.substr(2,t),u=n.substr(t+2,t);return new s(this,this.fromBigInteger(new r(i,16)),this.fromBigInteger(new r(u,16)));default:return null}};k.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};s.prototype.getEncoded=function(n){var i=function(n,t){var i=n.toByteArrayUnsigned();if(ti.length;)i.unshift(0);return i},u=this.getX().toBigInteger(),r=this.getY().toBigInteger(),t=i(u,32);return n?r.isEven()?t.unshift(2):t.unshift(3):(t.unshift(4),t=t.concat(i(r,32))),t};s.decodeFrom=function(n,t){var e,o;t[0];var i=t.length-1,u=t.slice(1,1+i/2),f=t.slice(1+i/2,1+i);return u.unshift(0),f.unshift(0),e=new r(u),o=new r(f),new s(n,n.fromBigInteger(e),n.fromBigInteger(o))};s.decodeFromHex=function(n,t){t.substr(0,2);var i=t.length-2,u=t.substr(2,i/2),f=t.substr(2+i/2,i/2),e=new r(u,16),o=new r(f,16);return new s(n,n.fromBigInteger(e),n.fromBigInteger(o))};s.prototype.add2D=function(n){if(this.isInfinity())return n;if(n.isInfinity())return this;if(this.x.equals(n.x))return this.y.equals(n.y)?this.twice():this.curve.getInfinity();var r=n.x.subtract(this.x),t=n.y.subtract(this.y).divide(r),i=t.square().subtract(this.x).subtract(n.x),u=t.multiply(this.x.subtract(i)).subtract(this.y);return new s(this.curve,i,u)};s.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var n=this.curve.fromBigInteger(r.valueOf(2)),u=this.curve.fromBigInteger(r.valueOf(3)),t=this.x.square().multiply(u).add(this.curve.a).divide(this.y.multiply(n)),i=t.square().subtract(this.x.multiply(n)),f=t.multiply(this.x.subtract(i)).subtract(this.y);return new s(this.curve,i,f)};s.prototype.multiply2D=function(n){var u;if(this.isInfinity())return this;if(0==n.signum())return this.curve.getInfinity();for(var f=n,e=f.multiply(new r("3")),o=this.negate(),i=this,t=e.bitLength()-2;t>0;--t)i=i.twice(),u=e.testBit(t),u!=f.testBit(t)&&(i=i.add2D(u?this:o));return i};s.prototype.isOnCurve=function(){var n=this.getX().toBigInteger(),t=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),u=this.curve.getB().toBigInteger(),i=this.curve.getQ(),f=t.multiply(t).mod(i),e=n.multiply(n).multiply(n).add(r.multiply(n)).add(u).mod(i);return f.equals(e)};s.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"};s.prototype.validate=function(){var n=this.curve.getQ(),t,i;if(this.isInfinity())throw new Error("Point is at infinity.");if(t=this.getX().toBigInteger(),i=this.getY().toBigInteger(),t.compareTo(r.ONE)<0||t.compareTo(n.subtract(r.ONE))>0)throw new Error("x coordinate out of bounds");if(i.compareTo(r.ONE)<0||i.compareTo(n.subtract(r.ONE))>0)throw new Error("y coordinate out of bounds");if(!this.isOnCurve())throw new Error("Point is not on the curve.");if(this.multiply(n).isInfinity())throw new Error("Point is not a scalar multiple of G.");return!0};fr=function(){function r(n,t,r){return t?i[t]:String.fromCharCode(parseInt(r,16))}var n=new RegExp('(?:false|true|null|[\\{\\}\\[\\]]|(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)|(?:"(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))*"))',"g"),t=new RegExp("\\\\(?:([^u])|u(.{4}))","g"),i={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},u=new String(""),f=Object.hasOwnProperty;return function(i,e){var l,s,a=i.match(n),c=a[0],v=!1,o;"{"===c?l={}:"["===c?l=[]:(l=[],v=!0);for(var h=[l],y=1-v,p=a.length;y=0;)delete r[u[h]]}return e.call(t,i,r)}({"":l},"")),l}}();void 0!==i&&i||(t.KJUR=i={});void 0!==i.asn1&&i.asn1||(i.asn1={});i.asn1.ASN1Util=new function(){this.integerToByteHex=function(n){var t=n.toString(16);return t.length%2==1&&(t="0"+t),t};this.bigIntToMinTwosComplementsHex=function(n){var t=n.toString(16),i,u,f;if("-"!=t.substr(0,1))t.length%2==1?t="0"+t:t.match(/^[0-7]/)||(t="00"+t);else{for(i=t.substr(1).length,i%2==1?i+=1:t.match(/^[0-7]/)||(i+=2),u="",f=0;f15)throw"ASN.1 length too long to represent by 8x: n = "+t.toString(16);return(128+i).toString(16)+n};this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV};this.getValueHex=function(){return this.getEncodedHex(),this.hV};this.getFreshValueHex=function(){return""};this.setByParam=function(n){this.params=n};null!=n&&null!=n.tlv&&(this.hTLV=n.tlv,this.isModified=!1)};i.asn1.DERAbstractString=function(n){i.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){return this.s};this.setString=function(n){this.hTLV=null;this.isModified=!0;this.s=n;this.hV=er(this.s).toLowerCase()};this.setStringHex=function(n){this.hTLV=null;this.isModified=!0;this.s=null;this.hV=n};this.getFreshValueHex=function(){return this.hV};void 0!==n&&("string"==typeof n?this.setString(n):void 0!==n.str?this.setString(n.str):void 0!==n.hex&&this.setStringHex(n.hex))};h.lang.extend(i.asn1.DERAbstractString,i.asn1.ASN1Object);i.asn1.DERAbstractTime=function(){i.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(n){var t=n.getTime()+6e4*n.getTimezoneOffset();return new Date(t)};this.formatDate=function(n,t,i){var u=this.zeroPadding,r=this.localDateToUTC(n),e=String(r.getFullYear()),f,o,s;return"utc"==t&&(e=e.substr(2,2)),f=e+u(String(r.getMonth()+1),2)+u(String(r.getDate()),2)+u(String(r.getHours()),2)+u(String(r.getMinutes()),2)+u(String(r.getSeconds()),2),!0===i&&(o=r.getMilliseconds(),0!=o&&(s=u(String(o),3),f=f+"."+(s=s.replace(/[0]+$/,"")))),f+"Z"};this.zeroPadding=function(n,t){return n.length>=t?n:new Array(t-n.length+1).join("0")+n};this.getString=function(){return this.s};this.setString=function(n){this.hTLV=null;this.isModified=!0;this.s=n;this.hV=ot(n)};this.setByDateValue=function(n,t,i,r,u,f){var e=new Date(Date.UTC(n,t-1,i,r,u,f,0));this.setByDate(e)};this.getFreshValueHex=function(){return this.hV}};h.lang.extend(i.asn1.DERAbstractTime,i.asn1.ASN1Object);i.asn1.DERAbstractStructured=function(n){i.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(n){this.hTLV=null;this.isModified=!0;this.asn1Array=n};this.appendASN1Object=function(n){this.hTLV=null;this.isModified=!0;this.asn1Array.push(n)};this.asn1Array=[];void 0!==n&&void 0!==n.array&&(this.asn1Array=n.array)};h.lang.extend(i.asn1.DERAbstractStructured,i.asn1.ASN1Object);i.asn1.DERBoolean=function(n){i.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";this.hTLV=0==n?"010100":"0101ff"};h.lang.extend(i.asn1.DERBoolean,i.asn1.ASN1Object);i.asn1.DERInteger=function(n){i.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(n){this.hTLV=null;this.isModified=!0;this.hV=i.asn1.ASN1Util.bigIntToMinTwosComplementsHex(n)};this.setByInteger=function(n){var t=new r(String(n),10);this.setByBigInteger(t)};this.setValueHex=function(n){this.hV=n};this.getFreshValueHex=function(){return this.hV};void 0!==n&&(void 0!==n.bigint?this.setByBigInteger(n.bigint):void 0!==n.int?this.setByInteger(n.int):"number"==typeof n?this.setByInteger(n):void 0!==n.hex&&this.setValueHex(n.hex))};h.lang.extend(i.asn1.DERInteger,i.asn1.ASN1Object);i.asn1.DERBitString=function(n){if(void 0!==n&&void 0!==n.obj){var t=i.asn1.ASN1Util.newObject(n.obj);n.hex="00"+t.getEncodedHex()}i.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(n){this.hTLV=null;this.isModified=!0;this.hV=n};this.setUnusedBitsAndHexValue=function(n,t){if(n<0||7=i)break;return h};u.getNthChildIdx=function(n,t,i){return u.getChildIdx(n,t)[i]};u.getIdxbyList=function(n,t,i,r){var f,e,o=u;return 0==i.length?void 0!==r&&n.substr(t,2)!==r?-1:t:(f=i.shift())>=(e=o.getChildIdx(n,t)).length?-1:o.getIdxbyList(n,e[f],i,r)};u.getIdxbyListEx=function(n,t,i,r){var f,s,e=u,c,o,h;if(0==i.length)return void 0!==r&&n.substr(t,2)!==r?-1:t;for(f=i.shift(),s=e.getChildIdx(n,t),c=0,o=0;o=n.length?null:e.getTLV(n,f)};u.getTLVbyListEx=function(n,t,i,r){var f=u,e=f.getIdxbyListEx(n,t,i,r);return-1==e?null:f.getTLV(n,e)};u.getVbyList=function(n,t,i,r,f){var o,e,s=u;return-1==(o=s.getIdxbyList(n,t,i,r))||o>=n.length?null:(e=s.getV(n,o),!0===f&&(e=e.substr(2)),e)};u.getVbyListEx=function(n,t,i,r,f){var o,e,s=u;return-1==(o=s.getIdxbyListEx(n,t,i,r))?null:(e=s.getV(n,o),"03"==n.substr(o,2)&&!1!==f&&(e=e.substr(2)),e)};u.getInt=function(n,t,i){var r,f;null==i&&(i=-1);try{return(r=n.substr(t,2),"02"!=r&&"03"!=r)?i:(f=u.getV(n,t),"02"==r?parseInt(f,16):function(n){var i;try{if(i=n.substr(0,2),"00"==i)return parseInt(n.substr(2),16);var r=parseInt(i,16),u=n.substr(2),t=parseInt(u,16).toString(2);return"0"==t&&(t="00000000"),t=t.slice(0,0-r),parseInt(t,2)}catch(n){return-1}}(f))}catch(n){return i}};u.getOID=function(n,t,i){null==i&&(i=null);try{return"06"!=n.substr(t,2)?i:function(n){var u,r,f;if(!su(n))return null;try{var e=[],h=n.substr(0,2),o=parseInt(h,16);e[0]=new String(Math.floor(o/40));e[1]=new String(o%40);for(var s=n.substr(2),i=[],t=0;t0&&(f=f+"."+u.join(".")),f}catch(n){return null}}(u.getV(n,t))}catch(n){return i}};u.getOIDName=function(n,t,r){var f,e;null==r&&(r=null);try{return(f=u.getOID(n,t,r),f==r)?r:(e=i.asn1.x509.OID.oid2name(f),""==e?f:e)}catch(n){return r}};u.getString=function(n,t,i){null==i&&(i=null);try{return nt(u.getV(n,t))}catch(n){return i}};u.hextooidstr=function(n){var o=function(n,t){return n.length>=t?n:new Array(t-n.length+1).join("0")+n},e=[],c=n.substr(0,2),s=parseInt(c,16),u,r,f;e[0]=new String(Math.floor(s/40));e[1]=new String(s%40);for(var h=n.substr(2),i=[],t=0;t0&&(f=f+"."+u.join(".")),f};u.dump=function(n,t,r,f){var v=u,s=v.getV,y=v.dump,g=v.getChildIdx,e=n,b,o,k,h,nt,tt,l,c,a,w;if(n instanceof i.asn1.ASN1Object&&(e=n.getEncodedHex()),b=function(n,t){return n.length<=2*t?n:n.substr(0,t)+"..(total "+n.length/2+"bytes).."+n.substr(n.length-t,t)},void 0===t&&(t={ommit_long_octet:32}),void 0===r&&(r=0),void 0===f&&(f=""),k=t.ommit_long_octet,"01"==(o=e.substr(r,2)))return"00"==(h=s(e,r))?f+"BOOLEAN FALSE\n":f+"BOOLEAN TRUE\n";if("02"==o)return f+"INTEGER "+b(h=s(e,r),k)+"\n";if("03"==o)return h=s(e,r),v.isASN1HEX(h.substr(2))?(a=f+"BITSTRING, encapsulates\n")+y(h.substr(2),t,0,f+" "):f+"BITSTRING "+b(h,k)+"\n";if("04"==o)return h=s(e,r),v.isASN1HEX(h)?(a=f+"OCTETSTRING, encapsulates\n")+y(h,t,0,f+" "):f+"OCTETSTRING "+b(h,k)+"\n";if("05"==o)return f+"NULL\n";if("06"==o){var ut=s(e,r),it=i.asn1.ASN1Util.oidHexToInt(ut),d=i.asn1.x509.OID.oid2name(it),rt=it.replace(/\./g," ");return""!=d?f+"ObjectIdentifier "+d+" ("+rt+")\n":f+"ObjectIdentifier ("+rt+")\n"}if("0a"==o)return f+"ENUMERATED "+parseInt(s(e,r))+"\n";if("0c"==o)return f+"UTF8String '"+p(s(e,r))+"'\n";if("13"==o)return f+"PrintableString '"+p(s(e,r))+"'\n";if("14"==o)return f+"TeletexString '"+p(s(e,r))+"'\n";if("16"==o)return f+"IA5String '"+p(s(e,r))+"'\n";if("17"==o)return f+"UTCTime "+p(s(e,r))+"\n";if("18"==o)return f+"GeneralizedTime "+p(s(e,r))+"\n";if("1a"==o)return f+"VisualString '"+p(s(e,r))+"'\n";if("1e"==o)return f+"BMPString '"+p(s(e,r))+"'\n";if("30"==o){if("3000"==e.substr(r,4))return f+"SEQUENCE {}\n";for(a=f+"SEQUENCE\n",nt=t,(2==(c=g(e,r)).length||3==c.length)&&"06"==e.substr(c[0],2)&&"04"==e.substr(c[c.length-1],2)&&(d=v.oidname(s(e,c[0])),tt=JSON.parse(JSON.stringify(t)),tt.x509ExtName=d,nt=tt),l=0;l31)&&128==(192&i)&&(31&i)==r}catch(n){return!1}};u.isASN1HEX=function(n){var t=u;if(n.length%2==1)return!1;var i=t.getVblen(n,0),r=n.substr(0,2),f=t.getL(n,0);return n.length-r.length-f.length==2*i};u.checkStrictDER=function(n,t,r,f,e){var o=u,s,h,l,a,v;if(void 0===r){if("string"!=typeof n)throw new Error("not hex string");if(n=n.toLowerCase(),!i.lang.String.isHex(n))throw new Error("not hex string");r=n.length;e=(f=n.length/2)<128?1:Math.ceil(f.toString(16))+1}if(o.getL(n,t).length>2*e)throw new Error("L of TLV too long: idx="+t);if(s=o.getVblen(n,t),s>f)throw new Error("value of L too long than hex: idx="+t);if(h=o.getTLV(n,t),l=h.length-2-o.getL(n,t).length,l!==2*s)throw new Error("V string length and L's value not the same:"+l+"/"+2*s);if(0===t&&n.length!=h.length)throw new Error("total length and TLV length unmatch:"+n.length+"!="+h.length);if(a=n.substr(t,2),"02"===a&&(v=o.getVidx(n,t),"00"==n.substr(v,2)&&n.charCodeAt(v+2)<56))throw new Error("not least zeros for DER INTEGER");if(32&parseInt(a,16)){for(var w=o.getVblen(n,t),y=0,p=o.getChildIdx(n,t),c=0;c=t?n:new Array(t-n.length+1).join(i)+n};void 0!==i&&i||(t.KJUR=i={});void 0!==i.crypto&&i.crypto||(i.crypto={});i.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414"};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa"};this.CRYPTOJSMESSAGEDIGESTNAME={md5:f.algo.MD5,sha1:f.algo.SHA1,sha224:f.algo.SHA224,sha256:f.algo.SHA256,sha384:f.algo.SHA384,sha512:f.algo.SHA512,ripemd160:f.algo.RIPEMD160};this.getDigestInfoHex=function(n,t){if(void 0===this.DIGESTINFOHEAD[t])throw"alg not supported in Util.DIGESTINFOHEAD: "+t;return this.DIGESTINFOHEAD[t]+n};this.getPaddedDigestInfoHex=function(n,t,i){var r=this.getDigestInfoHex(n,t),u=i/4;if(r.length+22>u)throw"key is too short for SigAlg: keylen="+i+","+t;for(var f="0001",e="00"+r,o="",h=u-f.length-e.length,s=0;s=0||r.compareTo(t.ONE)<0||r.compareTo(f)>=0)return!1;var e=r.modInverse(f),s=n.multiply(e).mod(f),h=i.multiply(e).mod(f);return o.multiply(s).add(u.multiply(h)).getX().toBigInteger().mod(f).equals(i)};this.serializeSig=function(n,t){var r=n.toByteArraySigned(),u=t.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(u.length),(i=i.concat(u)).unshift(i.length),i.unshift(48),i};this.parseSig=function(n){var i,r,u;if(48!=n[0])throw new Error("Signature not a valid DERSequence");if(2!=n[i=2])throw new Error("First element in signature must be a DERInteger");if(r=n.slice(i+2,i+2+n[i+1]),2!=n[i+=2+n[i+1]])throw new Error("Second element in signature must be a DERInteger");return u=n.slice(i+2,i+2+n[i+1]),i+=2+n[i+1],{r:t.fromByteArrayUnsigned(r),s:t.fromByteArrayUnsigned(u)}};this.parseSigCompact=function(n){var i,r;if(65!==n.length)throw"Signature has the wrong length";if(i=n[0]-27,i<0||i>7)throw"Invalid signature type";return r=this.ecparams.n,{r:t.fromByteArrayUnsigned(n.slice(1,33)).mod(r),s:t.fromByteArrayUnsigned(n.slice(33,65)).mod(r),i:i}};this.readPKCS5PrvKeyHex=function(n){if(!1===h(n))throw new Error("not ASN.1 hex string");var t,i,r;try{t=f(n,0,["[0]",0],"06");i=f(n,0,[1],"04");try{r=f(n,0,["[1]",0],"03")}catch(n){}}catch(n){throw new Error("malformed PKCS#1/5 plain ECC private key");}if(this.curveName=o(t),void 0===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName);this.setPublicKeyHex(r);this.setPrivateKeyHex(i);this.isPublic=!1};this.readPKCS8PrvKeyHex=function(n){if(!1===h(n))throw new e("not ASN.1 hex string");var t,i,r;try{f(n,0,[1,0],"06");t=f(n,0,[1,1],"06");i=f(n,0,[2,0,1],"04");try{r=f(n,0,[2,0,"[1]",0],"03")}catch(n){}}catch(n){throw new e("malformed PKCS#8 plain ECC private key");}if(this.curveName=o(t),void 0===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName);this.setPublicKeyHex(r);this.setPrivateKeyHex(i);this.isPublic=!1};this.readPKCS8PubKeyHex=function(n){if(!1===h(n))throw new e("not ASN.1 hex string");var t,i;try{f(n,0,[0,0],"06");t=f(n,0,[0,1],"06");i=f(n,0,[1],"03")}catch(n){throw new e("malformed PKCS#8 ECC public key");}if(this.curveName=o(t),null===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName);this.setPublicKeyHex(i)};this.readCertPubKeyHex=function(n){if(!1===h(n))throw new e("not ASN.1 hex string");var t,i;try{t=f(n,0,[0,5,0,1],"06");i=f(n,0,[0,5,1],"03")}catch(n){throw new e("malformed X.509 certificate ECC public key");}if(this.curveName=o(t),null===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName);this.setPublicKeyHex(i)};void 0!==n&&void 0!==n.curve&&(this.curveName=n.curve);void 0===this.curveName&&(this.curveName="secp256r1");this.setNamedCurve(this.curveName);void 0!==n&&(void 0!==n.prv&&this.setPrivateKeyHex(n.prv),void 0!==n.pub&&this.setPublicKeyHex(n.pub))};i.crypto.ECDSA.parseSigHex=function(n){var t=i.crypto.ECDSA.parseSigHexInHexRS(n);return{r:new r(t.r,16),s:new r(t.s,16)}};i.crypto.ECDSA.parseSigHexInHexRS=function(n){var i=u,o=i.getChildIdx,e=i.getV,t,r,f;if(i.checkStrictDER(n,0),"30"!=n.substr(0,2))throw new Error("signature is not a ASN.1 sequence");if(t=o(n,0),2!=t.length)throw new Error("signature shall have two elements");if(r=t[0],f=t[1],"02"!=n.substr(r,2))throw new Error("1st item not ASN.1 integer");if("02"!=n.substr(f,2))throw new Error("2nd item not ASN.1 integer");return{r:e(n,r),s:e(n,f)}};i.crypto.ECDSA.asn1SigToConcatSig=function(n){var u=i.crypto.ECDSA.parseSigHexInHexRS(n),t=u.r,r=u.s;if("00"==t.substr(0,2)&&t.length%32==2&&(t=t.substr(2)),"00"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),t.length%32==30&&(t="00"+t),r.length%32==30&&(r="00"+r),t.length%32!=0)throw"unknown ECDSA sig r length error";if(r.length%32!=0)throw"unknown ECDSA sig s length error";return t+r};i.crypto.ECDSA.concatSigToASN1Sig=function(n){if(n.length*4%128!=0)throw"unknown ECDSA concatinated r-s sig length error";var t=n.substr(0,n.length/2),r=n.substr(n.length/2);return i.crypto.ECDSA.hexRSSigToASN1Sig(t,r)};i.crypto.ECDSA.hexRSSigToASN1Sig=function(n,t){var u=new r(n,16),f=new r(t,16);return i.crypto.ECDSA.biRSSigToASN1Sig(u,f)};i.crypto.ECDSA.biRSSigToASN1Sig=function(n,t){var r=i.asn1,u=new r.DERInteger({bigint:n}),f=new r.DERInteger({bigint:t});return new r.DERSequence({array:[u,f]}).getEncodedHex()};i.crypto.ECDSA.getName=function(n){return"2b8104001f"===n?"secp192k1":"2a8648ce3d030107"===n?"secp256r1":"2b8104000a"===n?"secp256k1":"2b81040021"===n?"secp224r1":"2b81040022"===n?"secp384r1":-1!=="|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(n)?"secp256r1":-1!=="|secp256k1|".indexOf(n)?"secp256k1":-1!=="|secp224r1|NIST P-224|P-224|".indexOf(n)?"secp224r1":-1!=="|secp384r1|NIST P-384|P-384|".indexOf(n)?"secp384r1":null};void 0!==i&&i||(t.KJUR=i={});void 0!==i.crypto&&i.crypto||(i.crypto={});i.crypto.ECParameterDB=new function(){function t(n){return new r(n,16)}var n={},i={};this.getByName=function(t){var r=t;if(void 0!==i[r]&&(r=i[t]),void 0!==n[r])return n[r];throw"unregistered EC curve name: "+r;};this.regist=function(r,u,f,e,o,s,h,c,l,a,v,y){var p;n[r]={};var b=t(f),k=t(e),d=t(o),g=t(s),nt=t(h),w=new ct(b,k,d),tt=w.decodePointHex("04"+c+l);for(n[r].name=r,n[r].keylen=u,n[r].curve=w,n[r].G=tt,n[r].n=g,n[r].h=nt,n[r].oid=v,n[r].info=y,p=0;p=2*a)break;return o={},o.keyhex=s.substr(0,2*n[t].keylen),o.ivhex=s.substr(2*n[t].keylen,2*n[t].ivlen),o},a=function(t,i,r,u){var e=f.enc.Base64.parse(t),o=f.enc.Hex.stringify(e);return n[i].proc(o,r,u)};return{version:"1.0.0",parsePKCS5PEM:function(n){return c(n)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(n,t,i){return h(n,t,i)},decryptKeyB64:function(n,t,i,r){return a(n,t,i,r)},getDecryptedKeyHex:function(n,t){var i=c(n),r=(i.type,i.cipher),u=i.ivsalt,f=i.data,e=h(r,t,u).keyhex;return a(f,r,e,u)},getEncryptedPKCS5PEMFromPrvKeyHex:function(t,i,r,u,e){var o="";if(void 0!==u&&null!=u||(u="AES-256-CBC"),void 0===n[u])throw"KEYUTIL unsupported algorithm: "+u;return void 0!==e&&null!=e||(e=function(n){var t=f.lib.WordArray.random(n);return f.enc.Hex.stringify(t)}(n[u].ivlen).toUpperCase()),o="-----BEGIN "+t+" PRIVATE KEY-----\r\n",o+="Proc-Type: 4,ENCRYPTED\r\n",o+="DEK-Info: "+u+","+e+"\r\n",o+="\r\n",(o+=function(t,i,r,u){return n[i].eproc(t,r,u)}(i,u,h(u,r,e).keyhex,e).replace(/(.{64})/g,"$1\r\n"))+"\r\n-----END "+t+" PRIVATE KEY-----\r\n"},parseHexOfEncryptedPKCS8:function(n){var a=u,i=a.getChildIdx,t=a.getV,r={},h=i(n,0),f,c,e,o,s,l;if(2!=h.length)throw"malformed format: SEQUENCE(0).items != 2: "+h.length;if(r.ciphertext=t(n,h[1]),f=i(n,h[0]),2!=f.length)throw"malformed format: SEQUENCE(0.0).items != 2: "+f.length;if("2a864886f70d01050d"!=t(n,f[0]))throw"this only supports pkcs5PBES2";if(c=i(n,f[1]),2!=f.length)throw"malformed format: SEQUENCE(0.0.1).items != 2: "+c.length;if(e=i(n,c[1]),2!=e.length)throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+e.length;if("2a864886f70d0307"!=t(n,e[0]))throw"this only supports TripleDES";if(r.encryptionSchemeAlg="TripleDES",r.encryptionSchemeIV=t(n,e[1]),o=i(n,c[0]),2!=o.length)throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+o.length;if("2a864886f70d01050c"!=t(n,o[0]))throw"this only supports pkcs5PBKDF2";if(s=i(n,o[1]),s.length<2)throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+s.length;r.pbkdf2Salt=t(n,s[0]);l=t(n,s[1]);try{r.pbkdf2Iter=parseInt(l,16)}catch(n){throw"malformed format pbkdf2Iter: "+l;}return r},getPBKDF2KeyHexFromParam:function(n,t){var i=f.enc.Hex.parse(n.pbkdf2Salt),r=n.pbkdf2Iter,u=f.PBKDF2(t,i,{keySize:6,iterations:r});return f.enc.Hex.stringify(u)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(n,t){var u=ft(n,"ENCRYPTED PRIVATE KEY"),i=this.parseHexOfEncryptedPKCS8(u),e=l.getPBKDF2KeyHexFromParam(i,t),r={};r.ciphertext=f.enc.Hex.parse(i.ciphertext);var o=f.enc.Hex.parse(e),s=f.enc.Hex.parse(i.encryptionSchemeIV),h=f.TripleDES.decrypt(r,o,{iv:s});return f.enc.Hex.stringify(h)},getKeyFromEncryptedPKCS8PEM:function(n,t){var i=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(n,t);return this.getKeyFromPlainPrivatePKCS8Hex(i)},parsePlainPrivatePKCS8Hex:function(n){var f=u,e=f.getChildIdx,o=f.getV,r={algparam:null},t,i;if("30"!=n.substr(0,2))throw"malformed plain PKCS8 private key(code:001)";if(t=e(n,0),3!=t.length)throw"malformed plain PKCS8 private key(code:002)";if("30"!=n.substr(t[1],2))throw"malformed PKCS8 private key(code:003)";if(i=e(n,t[1]),2!=i.length)throw"malformed PKCS8 private key(code:004)";if("06"!=n.substr(i[0],2))throw"malformed PKCS8 private key(code:005)";if(r.algoid=o(n,i[0]),"06"==n.substr(i[1],2)&&(r.algparam=o(n,i[1])),"04"!=n.substr(t[2],2))throw"malformed PKCS8 private key(code:006)";return r.keyidx=f.getVidx(n,t[2]),r},getKeyFromPlainPrivatePKCS8PEM:function(n){var t=ft(n,"PRIVATE KEY");return this.getKeyFromPlainPrivatePKCS8Hex(t)},getKeyFromPlainPrivatePKCS8Hex:function(n){var t,r=this.parsePlainPrivatePKCS8Hex(n);if("2a864886f70d010101"==r.algoid)t=new e;else if("2a8648ce380401"==r.algoid)t=new i.crypto.DSA;else{if("2a8648ce3d0201"!=r.algoid)throw"unsupported private key algorithm";t=new i.crypto.ECDSA}return t.readPKCS8PrvKeyHex(n),t},_getKeyFromPublicPKCS8Hex:function(n){var t,r=u.getVbyList(n,0,[0,0],"06");if("2a864886f70d010101"===r)t=new e;else if("2a8648ce380401"===r)t=new i.crypto.DSA;else{if("2a8648ce3d0201"!==r)throw"unsupported PKCS#8 public key hex";t=new i.crypto.ECDSA}return t.readPKCS8PubKeyHex(n),t},parsePublicRawRSAKeyHex:function(n){var r=u,e=r.getChildIdx,f=r.getV,i={},t;if("30"!=n.substr(0,2))throw"malformed RSA key(code:001)";if(t=e(n,0),2!=t.length)throw"malformed RSA key(code:002)";if("02"!=n.substr(t[0],2))throw"malformed RSA key(code:003)";if(i.n=f(n,t[0]),"02"!=n.substr(t[1],2))throw"malformed RSA key(code:004)";return i.e=f(n,t[1]),i},parsePublicPKCS8Hex:function(n){var r=u,s=r.getChildIdx,e=r.getV,i={algparam:null},f=s(n,0),o,t;if(2!=f.length)throw"outer DERSequence shall have 2 elements: "+f.length;if(o=f[0],"30"!=n.substr(o,2))throw"malformed PKCS8 public key(code:001)";if(t=s(n,o),2!=t.length)throw"malformed PKCS8 public key(code:002)";if("06"!=n.substr(t[0],2))throw"malformed PKCS8 public key(code:003)";if(i.algoid=e(n,t[0]),"06"==n.substr(t[1],2)?i.algparam=e(n,t[1]):"30"==n.substr(t[1],2)&&(i.algparam={},i.algparam.p=r.getVbyList(n,t[1],[0],"02"),i.algparam.q=r.getVbyList(n,t[1],[1],"02"),i.algparam.g=r.getVbyList(n,t[1],[2],"02")),"03"!=n.substr(f[1],2))throw"malformed PKCS8 public key(code:004)";return i.key=e(n,f[1]).substr(2),i}}}();l.getKey=function(n,t,f){var s,wt=(tt=u).getChildIdx,h=(tt.getV,tt.getVbyList),at=i.crypto,w=at.ECDSA,b=at.DSA,p=e,rt=ft,y=l,k,g,vt,nt,d,tt,yt,it,pt,ct;if(void 0!==p&&n instanceof p||void 0!==w&&n instanceof w||void 0!==b&&n instanceof b)return n;if(void 0!==n.curve&&void 0!==n.xy&&void 0===n.d)return new w({pub:n.xy,curve:n.curve});if(void 0!==n.curve&&void 0!==n.d)return new w({prv:n.d,curve:n.curve});if(void 0===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0===n.d)return(o=new p).setPublic(n.n,n.e),o;if(void 0===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0!==n.d&&void 0!==n.p&&void 0!==n.q&&void 0!==n.dp&&void 0!==n.dq&&void 0!==n.co&&void 0===n.qi)return(o=new p).setPrivateEx(n.n,n.e,n.d,n.p,n.q,n.dp,n.dq,n.co),o;if(void 0===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0!==n.d&&void 0===n.p)return(o=new p).setPrivate(n.n,n.e,n.d),o;if(void 0!==n.p&&void 0!==n.q&&void 0!==n.g&&void 0!==n.y&&void 0===n.x)return(o=new b).setPublic(n.p,n.q,n.g,n.y),o;if(void 0!==n.p&&void 0!==n.q&&void 0!==n.g&&void 0!==n.y&&void 0!==n.x)return(o=new b).setPrivate(n.p,n.q,n.g,n.y,n.x),o;if("RSA"===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0===n.d)return(o=new p).setPublic(c(n.n),c(n.e)),o;if("RSA"===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0!==n.d&&void 0!==n.p&&void 0!==n.q&&void 0!==n.dp&&void 0!==n.dq&&void 0!==n.qi)return(o=new p).setPrivateEx(c(n.n),c(n.e),c(n.d),c(n.p),c(n.q),c(n.dp),c(n.dq),c(n.qi)),o;if("RSA"===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0!==n.d)return(o=new p).setPrivate(c(n.n),c(n.e),c(n.d)),o;if("EC"===n.kty&&void 0!==n.crv&&void 0!==n.x&&void 0!==n.y&&void 0===n.d)return k=(v=new w({curve:n.crv})).ecparams.keylen/4,g="04"+("0000000000"+c(n.x)).slice(-k)+("0000000000"+c(n.y)).slice(-k),v.setPublicKeyHex(g),v;if("EC"===n.kty&&void 0!==n.crv&&void 0!==n.x&&void 0!==n.y&&void 0!==n.d)return k=(v=new w({curve:n.crv})).ecparams.keylen/4,g="04"+("0000000000"+c(n.x)).slice(-k)+("0000000000"+c(n.y)).slice(-k),vt=("0000000000"+c(n.d)).slice(-k),v.setPublicKeyHex(g),v.setPrivateKeyHex(vt),v;if("pkcs5prv"===f){if(d=n,tt=u,9===(nt=wt(d,0)).length)(o=new p).readPKCS5PrvKeyHex(d);else if(6===nt.length)(o=new b).readPKCS5PrvKeyHex(d);else{if(!(nt.length>2&&"04"===d.substr(nt[1],2)))throw"unsupported PKCS#1/5 hexadecimal key";(o=new w).readPKCS5PrvKeyHex(d)}return o}if("pkcs8prv"===f)return y.getKeyFromPlainPrivatePKCS8Hex(n);if("pkcs8pub"===f)return y._getKeyFromPublicPKCS8Hex(n);if("x509pub"===f)return a.getPublicKeyFromCertHex(n);if(-1!=n.indexOf("-END CERTIFICATE-",0)||-1!=n.indexOf("-END X509 CERTIFICATE-",0)||-1!=n.indexOf("-END TRUSTED CERTIFICATE-",0))return a.getPublicKeyFromCertPEM(n);if(-1!=n.indexOf("-END PUBLIC KEY-"))return yt=ft(n,"PUBLIC KEY"),y._getKeyFromPublicPKCS8Hex(yt);if(-1!=n.indexOf("-END RSA PRIVATE KEY-")&&-1==n.indexOf("4,ENCRYPTED"))return it=rt(n,"RSA PRIVATE KEY"),y.getKey(it,null,"pkcs5prv");if(-1!=n.indexOf("-END DSA PRIVATE KEY-")&&-1==n.indexOf("4,ENCRYPTED")){var ut=h(s=rt(n,"DSA PRIVATE KEY"),0,[1],"02"),et=h(s,0,[2],"02"),ot=h(s,0,[3],"02"),st=h(s,0,[4],"02"),ht=h(s,0,[5],"02");return(o=new b).setPrivate(new r(ut,16),new r(et,16),new r(ot,16),new r(st,16),new r(ht,16)),o}if(-1!=n.indexOf("-END EC PRIVATE KEY-")&&-1==n.indexOf("4,ENCRYPTED"))return it=rt(n,"EC PRIVATE KEY"),y.getKey(it,null,"pkcs5prv");if(-1!=n.indexOf("-END PRIVATE KEY-"))return y.getKeyFromPlainPrivatePKCS8PEM(n);if(-1!=n.indexOf("-END RSA PRIVATE KEY-")&&-1!=n.indexOf("4,ENCRYPTED"))return pt=y.getDecryptedKeyHex(n,t),ct=new e,ct.readPKCS5PrvKeyHex(pt),ct;if(-1!=n.indexOf("-END EC PRIVATE KEY-")&&-1!=n.indexOf("4,ENCRYPTED")){var v,o=h(s=y.getDecryptedKeyHex(n,t),0,[1],"04"),lt=h(s,0,[2,0],"06"),bt=h(s,0,[3,0],"03").substr(2);if(void 0===i.crypto.OID.oidhex2name[lt])throw"undefined OID(hex) in KJUR.crypto.OID: "+lt;return(v=new w({curve:i.crypto.OID.oidhex2name[lt]})).setPublicKeyHex(bt),v.setPrivateKeyHex(o),v.isPublic=!1,v}if(-1!=n.indexOf("-END DSA PRIVATE KEY-")&&-1!=n.indexOf("4,ENCRYPTED"))return ut=h(s=y.getDecryptedKeyHex(n,t),0,[1],"02"),et=h(s,0,[2],"02"),ot=h(s,0,[3],"02"),st=h(s,0,[4],"02"),ht=h(s,0,[5],"02"),(o=new b).setPrivate(new r(ut,16),new r(et,16),new r(ot,16),new r(st,16),new r(ht,16)),o;if(-1!=n.indexOf("-END ENCRYPTED PRIVATE KEY-"))return y.getKeyFromEncryptedPKCS8PEM(n,t);throw new Error("not supported argument");};l.generateKeypair=function(n,t){var h,r,f,o,s;if("RSA"==n){h=t;(r=new e).generate(h,"10001");r.isPrivate=!0;r.isPublic=!0;var u=new e,c=r.n.toString(16),l=r.e.toString(16);return u.setPublic(c,l),u.isPrivate=!1,u.isPublic=!0,(f={}).prvKeyObj=r,f.pubKeyObj=u,f}if("EC"==n)return o=t,s=new i.crypto.ECDSA({curve:o}).generateKeyPairHex(),(r=new i.crypto.ECDSA({curve:o})).setPublicKeyHex(s.ecpubhex),r.setPrivateKeyHex(s.ecprvhex),r.isPrivate=!0,r.isPublic=!1,(u=new i.crypto.ECDSA({curve:o})).setPublicKeyHex(s.ecpubhex),u.isPrivate=!1,u.isPublic=!0,(f={}).prvKeyObj=r,f.pubKeyObj=u,f;throw"unknown algorithm: "+n;};l.getPEM=function(n,t,r,u,o,s){function k(n){return c({seq:[{int:0},{int:{bigint:n.n}},{int:n.e},{int:{bigint:n.d}},{int:{bigint:n.p}},{int:{bigint:n.q}},{int:{bigint:n.dmp1}},{int:{bigint:n.dmq1}},{int:{bigint:n.coeff}}]})}function tt(n){return c({seq:[{int:1},{octstr:{hex:n.prvKeyHex}},{tag:["a0",!0,{oid:{name:n.curveName}}]},{tag:["a1",!0,{bitstr:{hex:"00"+n.pubKeyHex}}]}]})}function it(n){return c({seq:[{int:0},{int:{bigint:n.p}},{int:{bigint:n.q}},{int:{bigint:n.g}},{int:{bigint:n.y}},{int:{bigint:n.x}}]})}var g=i,p=g.asn1,ut=p.DERObjectIdentifier,ft=p.DERInteger,c=p.ASN1Util.newObject,et=p.x509.SubjectPublicKeyInfo,nt=g.crypto,l=nt.DSA,a=nt.ECDSA,v=e,h,b,rt,y;if((void 0!==v&&n instanceof v||void 0!==l&&n instanceof l||void 0!==a&&n instanceof a)&&1==n.isPublic&&(void 0===t||"PKCS8PUB"==t))return d(h=new et(n).getEncodedHex(),"PUBLIC KEY");if("PKCS1PRV"==t&&void 0!==v&&n instanceof v&&(void 0===r||null==r)&&1==n.isPrivate)return d(h=k(n).getEncodedHex(),"RSA PRIVATE KEY");if("PKCS1PRV"==t&&void 0!==a&&n instanceof a&&(void 0===r||null==r)&&1==n.isPrivate){var ot=new ut({name:n.curveName}).getEncodedHex(),w=tt(n).getEncodedHex(),st="";return(st+=d(ot,"EC PARAMETERS"))+d(w,"EC PRIVATE KEY")}if("PKCS1PRV"==t&&void 0!==l&&n instanceof l&&(void 0===r||null==r)&&1==n.isPrivate)return d(h=it(n).getEncodedHex(),"DSA PRIVATE KEY");if("PKCS5PRV"==t&&void 0!==v&&n instanceof v&&void 0!==r&&null!=r&&1==n.isPrivate)return h=k(n).getEncodedHex(),void 0===u&&(u="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("RSA",h,r,u,s);if("PKCS5PRV"==t&&void 0!==a&&n instanceof a&&void 0!==r&&null!=r&&1==n.isPrivate)return h=tt(n).getEncodedHex(),void 0===u&&(u="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("EC",h,r,u,s);if("PKCS5PRV"==t&&void 0!==l&&n instanceof l&&void 0!==r&&null!=r&&1==n.isPrivate)return h=it(n).getEncodedHex(),void 0===u&&(u="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("DSA",h,r,u,s);if(b=function(n,t){var i=rt(n,t);return new c({seq:[{seq:[{oid:{name:"pkcs5PBES2"}},{seq:[{seq:[{oid:{name:"pkcs5PBKDF2"}},{seq:[{octstr:{hex:i.pbkdf2Salt}},{int:i.pbkdf2Iter}]}]},{seq:[{oid:{name:"des-EDE3-CBC"}},{octstr:{hex:i.encryptionSchemeIV}}]}]}]},{octstr:{hex:i.ciphertext}}]}).getEncodedHex()},rt=function(n,t){var r=f.lib.WordArray.random(8),u=f.lib.WordArray.random(8),e=f.PBKDF2(t,r,{keySize:6,iterations:100}),o=f.enc.Hex.parse(n),s=f.TripleDES.encrypt(o,e,{iv:u})+"",i={};return i.ciphertext=s,i.pbkdf2Salt=f.enc.Hex.stringify(r),i.pbkdf2Iter=100,i.encryptionSchemeAlg="DES-EDE3-CBC",i.encryptionSchemeIV=f.enc.Hex.stringify(u),i},"PKCS8PRV"==t&&null!=v&&n instanceof v&&1==n.isPrivate)return y=k(n).getEncodedHex(),h=c({seq:[{int:0},{seq:[{oid:{name:"rsaEncryption"}},{"null":!0}]},{octstr:{hex:y}}]}).getEncodedHex(),void 0===r||null==r?d(h,"PRIVATE KEY"):d(w=b(h,r),"ENCRYPTED PRIVATE KEY");if("PKCS8PRV"==t&&void 0!==a&&n instanceof a&&1==n.isPrivate)return y=new c({seq:[{int:1},{octstr:{hex:n.prvKeyHex}},{tag:["a1",!0,{bitstr:{hex:"00"+n.pubKeyHex}}]}]}).getEncodedHex(),h=c({seq:[{int:0},{seq:[{oid:{name:"ecPublicKey"}},{oid:{name:n.curveName}}]},{octstr:{hex:y}}]}).getEncodedHex(),void 0===r||null==r?d(h,"PRIVATE KEY"):d(w=b(h,r),"ENCRYPTED PRIVATE KEY");if("PKCS8PRV"==t&&void 0!==l&&n instanceof l&&1==n.isPrivate)return y=new ft({bigint:n.x}).getEncodedHex(),h=c({seq:[{int:0},{seq:[{oid:{name:"dsa"}},{seq:[{int:{bigint:n.p}},{int:{bigint:n.q}},{int:{bigint:n.g}}]}]},{octstr:{hex:y}}]}).getEncodedHex(),void 0===r||null==r?d(h,"PRIVATE KEY"):d(w=b(h,r),"ENCRYPTED PRIVATE KEY");throw new Error("unsupported object nor format");};l.getKeyFromCSRPEM=function(n){var t=ft(n,"CERTIFICATE REQUEST");return l.getKeyFromCSRHex(t)};l.getKeyFromCSRHex=function(n){var t=l.parseCSRHex(n);return l.getKey(t.p8pubkeyhex,null,"pkcs8pub")};l.parseCSRHex=function(n){var f=u,e=f.getChildIdx,s=f.getTLV,o={},t=n,i,r;if("30"!=t.substr(0,2))throw"malformed CSR(code:001)";if(i=e(t,0),i.length<1)throw"malformed CSR(code:002)";if("30"!=t.substr(i[0],2))throw"malformed CSR(code:003)";if(r=e(t,i[0]),r.length<3)throw"malformed CSR(code:004)";return o.p8pubkeyhex=s(t,r[2]),o};l.getKeyID=function(n){var t=l,r=u;"string"==typeof n&&-1!=n.indexOf("BEGIN ")&&(n=t.getKey(n));var f=ft(t.getPEM(n)),e=r.getIdxbyList(f,0,[1]),o=r.getV(f,e).substring(2);return i.crypto.Util.hashHex(o,"sha1")};l.getJWKFromKey=function(n){var t={},u,r;if(n instanceof e&&n.isPrivate)return t.kty="RSA",t.n=v(n.n.toString(16)),t.e=v(n.e.toString(16)),t.d=v(n.d.toString(16)),t.p=v(n.p.toString(16)),t.q=v(n.q.toString(16)),t.dp=v(n.dmp1.toString(16)),t.dq=v(n.dmq1.toString(16)),t.qi=v(n.coeff.toString(16)),t;if(n instanceof e&&n.isPublic)return t.kty="RSA",t.n=v(n.n.toString(16)),t.e=v(n.e.toString(16)),t;if(n instanceof i.crypto.ECDSA&&n.isPrivate){if("P-256"!==(r=n.getShortNISTPCurveName())&&"P-384"!==r)throw"unsupported curve name for JWT: "+r;return u=n.getPublicKeyXYHex(),t.kty="EC",t.crv=r,t.x=v(u.x),t.y=v(u.y),t.d=v(n.prvKeyHex),t}if(n instanceof i.crypto.ECDSA&&n.isPublic){if("P-256"!==(r=n.getShortNISTPCurveName())&&"P-384"!==r)throw"unsupported curve name for JWT: "+r;return u=n.getPublicKeyXYHex(),t.kty="EC",t.crv=r,t.x=v(u.x),t.y=v(u.y),t}throw"not supported key object";};e.getPosArrayOfChildrenFromHex=function(n){return u.getChildIdx(n,0)};e.getHexValueArrayOfChildrenFromHex=function(n){var t,i=u.getV,r=i(n,(t=e.getPosArrayOfChildrenFromHex(n))[0]),f=i(n,t[1]),o=i(n,t[2]),s=i(n,t[3]),h=i(n,t[4]),c=i(n,t[5]),l=i(n,t[6]),a=i(n,t[7]),v=i(n,t[8]);return(t=[]).push(r,f,o,s,h,c,l,a,v),t};e.prototype.readPrivateKeyFromPEMString=function(n){var i=ft(n),t=e.getHexValueArrayOfChildrenFromHex(i);this.setPrivateEx(t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])};e.prototype.readPKCS5PrvKeyHex=function(n){var t=e.getHexValueArrayOfChildrenFromHex(n);this.setPrivateEx(t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])};e.prototype.readPKCS8PrvKeyHex=function(n){var i,r,f,e,o,s,h,c,l=u,t=l.getVbyListEx;if(!1===l.isASN1HEX(n))throw new Error("not ASN.1 hex string");try{i=t(n,0,[2,0,1],"02");r=t(n,0,[2,0,2],"02");f=t(n,0,[2,0,3],"02");e=t(n,0,[2,0,4],"02");o=t(n,0,[2,0,5],"02");s=t(n,0,[2,0,6],"02");h=t(n,0,[2,0,7],"02");c=t(n,0,[2,0,8],"02")}catch(n){throw new Error("malformed PKCS#8 plain RSA private key");}this.setPrivateEx(i,r,f,e,o,s,h,c)};e.prototype.readPKCS5PubKeyHex=function(n){var i=u,r=i.getV,t,f,e;if(!1===i.isASN1HEX(n))throw new Error("keyHex is not ASN.1 hex string");if(t=i.getChildIdx(n,0),2!==t.length||"02"!==n.substr(t[0],2)||"02"!==n.substr(t[1],2))throw new Error("wrong hex for PKCS#5 public key");f=r(n,t[0]);e=r(n,t[1]);this.setPublic(f,e)};e.prototype.readPKCS8PubKeyHex=function(n){var t=u,i;if(!1===t.isASN1HEX(n))throw new Error("not ASN.1 hex string");if("06092a864886f70d010101"!==t.getTLVbyListEx(n,0,[0,0]))throw new Error("not PKCS8 RSA public key");i=t.getTLVbyListEx(n,0,[1,0]);this.readPKCS5PubKeyHex(i)};e.prototype.readCertPubKeyHex=function(n){var t,i;(t=new a).readCertHex(n);i=t.getPublicKeyHex();this.readPKCS8PubKeyHex(i)};hu=new RegExp("[^0-9a-f]","gi");e.prototype.sign=function(n,t){var r=function(n){return i.crypto.Util.hashString(n,t)}(n);return this.signWithMessageHash(r,t)};e.prototype.signWithMessageHash=function(n,t){var r=ei(i.crypto.Util.getPaddedDigestInfoHex(n,t,this.n.bitLength()),16);return cu(this.doPrivate(r).toString(16),this.n.bitLength())};e.prototype.signPSS=function(n,t,r){var u=function(n){return i.crypto.Util.hashHex(n,t)}(ut(n));return void 0===r&&(r=-1),this.signWithMessageHashPSS(u,t,r)};e.prototype.signWithMessageHashPSS=function(n,t,u){var f,v=nt(n),o=v.length,y=this.n.bitLength()-1,h=Math.ceil(y/8),p=function(n){return i.crypto.Util.hashHex(n,t)},e,c,l,w;if(-1===u||void 0===u)u=o;else if(-2===u)u=h-o-2;else if(u<-2)throw new Error("invalid salt length");if(h0&&(e=new Array(u),(new yt).nextBytes(e),e=String.fromCharCode.apply(String,e)),c=nt(p(ut("\0\0\0\0\0\0\0\0"+v+e))),l=[],f=0;f>8*h-y&255,s[0]&=~w,f=0;fthis.n.bitLength()?0:(r=au(this.doPublic(u).toString(16).replace(/^1f+00/,"")),0==r.length)?!1:(f=r[0],r[1]==function(n){return i.crypto.Util.hashString(n,f)}(n))};e.prototype.verifyWithMessageHash=function(n,t){var r,i;return t.length!=Math.ceil(this.n.bitLength()/4)?!1:(r=ei(t,16),r.bitLength()>this.n.bitLength())?0:(i=au(this.doPublic(r).toString(16).replace(/^1f+00/,"")),0!=i.length&&(i[0],i[1]==n))};e.prototype.verifyPSS=function(n,t,r,u){var f=function(n){return i.crypto.Util.hashHex(n,r)}(ut(n));return void 0===u&&(u=-1),this.verifyWithMessageHashPSS(f,t,r,u)};e.prototype.verifyWithMessageHashPSS=function(n,t,u,f){var o,k,c,a;if(t.length!=Math.ceil(this.n.bitLength()/4))return!1;var e,d=new r(t,16),v=function(n){return i.crypto.Util.hashHex(n,u)},y=nt(n),h=y.length,p=this.n.bitLength()-1,s=Math.ceil(p/8);if(-1===f||void 0===f)f=h;else if(-2===f)f=s-h-2;else if(f<-2)throw new Error("invalid salt length");if(s>8*s-p&255;if(0!=(l.charCodeAt(0)&b))throw new Error("bits beyond keysize not zero");for(k=lu(w,l.length,v),c=[],e=0;e0&&-1==(":"+r.join(":")+":").indexOf(":"+o+":"))throw"algorithm '"+o+"' not accepted in the list";if("none"!=o&&null===t)throw"key shall be specified to verify.";if("string"==typeof t&&-1!=t.indexOf("-----BEGIN ")&&(t=l.getKey(t)),!("RS"!=h&&"PS"!=h||t instanceof g))throw"key shall be a RSAKey obj for RS* and PS* algs";if("ES"==h&&!(t instanceof tt))throw"key shall be a ECDSA obj for ES* algs";if(u=null,void 0===a.jwsalg2sigalg[b.alg])throw"unsupported alg name: "+o;if("none"==(u=a.jwsalg2sigalg[o]))throw"not supported";if("Hmac"==u.substr(0,4)){if(void 0===t)throw"hexadecimal key shall be specified for HMAC";return k=new ft({alg:u,pass:t}),k.updateString(y),p==k.doFinal()}if(-1!=u.indexOf("withECDSA")){d=null;try{d=tt.concatSigToASN1Sig(p)}catch(n){return!1}return(s=new it({alg:u})).init(t),s.updateString(y),s.verify(d)}return(s=new it({alg:u})).init(t),s.updateString(y),s.verify(p)};i.jws.JWS.parse=function(n){var e,u,f,r=n.split("."),t={};if(2!=r.length&&3!=r.length)throw"malformed sJWS: wrong number of '.' splitted elements";return e=r[0],u=r[1],3==r.length&&(f=r[2]),t.headerObj=i.jws.JWS.readSafeJSONString(rt(e)),t.payloadObj=i.jws.JWS.readSafeJSONString(rt(u)),t.headerPP=JSON.stringify(t.headerObj,null," "),t.payloadPP=null==t.payloadObj?rt(u):JSON.stringify(t.payloadObj,null," "),void 0!==f&&(t.sigHex=c(f)),t};i.jws.JWS.verifyJWT=function(n,t,r){var h=i.jws,e=h.JWS,l=e.readSafeJSONString,o=e.inArray,v=e.includedArray,s=n.split("."),y=s[0],p=s[1],a=(c(s[2]),l(rt(y))),u=l(rt(p)),f;if(void 0===a.alg)return!1;if(void 0===r.alg)throw"acceptField.alg shall be specified";if(!o(a.alg,r.alg)||void 0!==u.iss&&"object"===w(r.iss)&&!o(u.iss,r.iss)||void 0!==u.sub&&"object"===w(r.sub)&&!o(u.sub,r.sub))return!1;if(void 0!==u.aud&&"object"===w(r.aud))if("string"==typeof u.aud){if(!o(u.aud,r.aud))return!1}else if("object"==w(u.aud)&&!v(u.aud,r.aud))return!1;return f=h.IntDate.getNow(),void 0!==r.verifyAt&&"number"==typeof r.verifyAt&&(f=r.verifyAt),void 0!==r.gracePeriod&&"number"==typeof r.gracePeriod||(r.gracePeriod=0),!(void 0!==u.exp&&"number"==typeof u.exp&&u.exp+r.gracePeriodt.length&&(r=t.length),i=0;i=h())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+h().toString(16)+" bytes");return 0|n}function tt(n,t){var i,u;if(r.isBuffer(n))return n.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(n)||n instanceof ArrayBuffer))return n.byteLength;if("string"!=typeof n&&(n=""+n),i=n.length,0===i)return 0;for(u=!1;;)switch(t){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":case void 0:return a(n).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return ct(n).length;default:if(u)return a(n).length;t=(""+t).toLowerCase();u=!0}}function lt(n,t,i){var r=!1;if(((void 0===t||t<0)&&(t=0),t>this.length)||((void 0===i||i>this.length)&&(i=this.length),i<=0)||(i>>>=0)<=(t>>>=0))return"";for(n||(n="utf8");;)switch(n){case"hex":return gt(this,t,i);case"utf8":case"utf-8":return ft(this,t,i);case"ascii":return kt(this,t,i);case"latin1":case"binary":return dt(this,t,i);case"base64":return bt(this,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ni(this,t,i);default:if(r)throw new TypeError("Unknown encoding: "+n);n=(n+"").toLowerCase();r=!0}}function o(n,t,i){var r=n[t];n[t]=n[i];n[i]=r}function it(n,t,i,u,f){if(0===n.length)return-1;if("string"==typeof i?(u=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),i=+i,isNaN(i)&&(i=f?0:n.length-1),i<0&&(i=n.length+i),i>=n.length){if(f)return-1;i=n.length-1}else if(i<0){if(!f)return-1;i=0}if("string"==typeof t&&(t=r.from(t,u)),r.isBuffer(t))return 0===t.length?-1:rt(n,t,i,u,f);if("number"==typeof t)return t&=255,r.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?f?Uint8Array.prototype.indexOf.call(n,t,i):Uint8Array.prototype.lastIndexOf.call(n,t,i):rt(n,[t],i,u,f);throw new TypeError("val must be string, number or Buffer");}function rt(n,t,i,r,u){function l(n,t){return 1===h?n[t]:n.readUInt16BE(t*h)}var f,h=1,c=n.length,o=t.length,e,a,s;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(n.length<2||t.length<2)return-1;h=2;c/=2;o/=2;i/=2}if(u)for(e=-1,f=i;fc&&(i=c-o),f=i;f>=0;f--){for(a=!0,s=0;sf&&(r=f):r=f,e=t.length,e%2!=0)throw new TypeError("Invalid hex string");for(r>e/2&&(r=e/2),u=0;u>8,e=u%256,i.push(e),i.push(f);return i}(t,n.length-i),n,i,r)}function bt(n,t,i){return 0===t&&i===n.length?y.fromByteArray(n):y.fromByteArray(n.slice(t,i))}function ft(n,t,i){var h,u;for(i=Math.min(n.length,i),h=[],u=t;u239?4:o>223?3:o>191?2:1;if(u+c<=i)switch(c){case 1:o<128&&(r=o);break;case 2:128==(192&(e=n[u+1]))&&(f=(31&o)<<6|63&e)>127&&(r=f);break;case 3:e=n[u+1];s=n[u+2];128==(192&e)&&128==(192&s)&&(f=(15&o)<<12|(63&e)<<6|63&s)>2047&&(f<55296||f>57343)&&(r=f);break;case 4:e=n[u+1];s=n[u+2];l=n[u+3];128==(192&e)&&128==(192&s)&&128==(192&l)&&(f=(15&o)<<18|(63&e)<<12|(63&s)<<6|63&l)>65535&&f<1114112&&(r=f)}null===r?(r=65533,c=1):r>65535&&(r-=65536,h.push(r>>>10&1023|55296),r=56320|1023&r);h.push(r);u+=c}return function(n){var r=n.length,i,t;if(r<=k)return String.fromCharCode.apply(String,n);for(i="",t=0;tf)&&(i=f),u="",r=t;ri)throw new RangeError("Trying to access beyond buffer length");}function f(n,t,i,u,f,e){if(!r.isBuffer(n))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>f||tn.length)throw new RangeError("Index out of range");}function c(n,t,i,r){t<0&&(t=65535+t+1);for(var u=0,f=Math.min(n.length-i,2);u>>8*(r?u:1-u)}function l(n,t,i,r){t<0&&(t=4294967295+t+1);for(var u=0,f=Math.min(n.length-i,4);u>>8*(r?u:3-u)&255}function et(n,t,i,r){if(i+r>n.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range");}function ot(n,t,i,r,u){return u||et(n,0,i,4),s.write(n,t,i,r,23,4),i+4}function st(n,t,i,r,u){return u||et(n,0,i,8),s.write(n,t,i,r,52,8),i+8}function ti(n){return n<16?"0"+n.toString(16):n.toString(16)}function a(n,t){var i;t=t||1/0;for(var e=n.length,u=null,r=[],f=0;f55295&&i<57344){if(!u){if(i>56319){(t-=3)>-1&&r.push(239,191,189);continue}if(f+1===e){(t-=3)>-1&&r.push(239,191,189);continue}u=i;continue}if(i<56320){(t-=3)>-1&&r.push(239,191,189);u=i;continue}i=65536+(u-55296<<10|i-56320)}else u&&(t-=3)>-1&&r.push(239,191,189);if(u=null,i<128){if((t-=1)<0)break;r.push(i)}else if(i<2048){if((t-=2)<0)break;r.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;r.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;r.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return r}function ct(n){return y.toByteArray(function(n){if((n=function(n){return n.trim?n.trim():n.replace(/^\s+|\s+$/g,"")}(n).replace(ht,"")).length<2)return"";for(;n.length%4!=0;)n+="=";return n}(n))}function v(n,t,i,r){for(var u=0;u=t.length||u>=n.length);++u)t[u+i]=n[u];return u}var y=i(30),s=i(31),d=i(32),k,ht;t.Buffer=r;t.SlowBuffer=function(n){return+n!=n&&(n=0),r.alloc(+n)};t.INSPECT_MAX_BYTES=50;r.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:function(){try{var n=new Uint8Array(1);return n.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===n.foo()&&"function"==typeof n.subarray&&0===n.subarray(1,1).byteLength}catch(n){return!1}}();t.kMaxLength=h();r.poolSize=8192;r._augment=function(n){return n.__proto__=r.prototype,n};r.from=function(n,t,i){return g(null,n,t,i)};r.TYPED_ARRAY_SUPPORT&&(r.prototype.__proto__=Uint8Array.prototype,r.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&r[Symbol.species]===r&&Object.defineProperty(r,Symbol.species,{value:null,configurable:!0}));r.alloc=function(n,t,i){return function(n,t,i,r){return nt(t),t<=0?e(n,t):void 0!==i?"string"==typeof r?e(n,t).fill(i,r):e(n,t).fill(i):e(n,t)}(null,n,t,i)};r.allocUnsafe=function(n){return p(null,n)};r.allocUnsafeSlow=function(n){return p(null,n)};r.isBuffer=function(n){return!(null==n||!n._isBuffer)};r.compare=function(n,t){if(!r.isBuffer(n)||!r.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(n===t)return 0;for(var u=n.length,f=t.length,i=0,e=Math.min(u,f);i0&&(n=this.toString("hex",0,i).match(/.{2}/g).join(" "),this.length>i&&(n+=" ... ")),""};r.prototype.compare=function(n,t,i,u,f){if(!r.isBuffer(n))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===i&&(i=n?n.length:0),void 0===u&&(u=0),void 0===f&&(f=this.length),t<0||i>n.length||u<0||f>this.length)throw new RangeError("out of range index");if(u>=f&&t>=i)return 0;if(u>=f)return-1;if(t>=i)return 1;if(this===n)return 0;for(var o=(f>>>=0)-(u>>>=0),s=(i>>>=0)-(t>>>=0),l=Math.min(o,s),h=this.slice(u,f),c=n.slice(t,i),e=0;eu)&&(i=u),n.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");for(r||(r="utf8"),f=!1;;)switch(r){case"hex":return at(this,n,t,i);case"utf8":case"utf-8":return vt(this,n,t,i);case"ascii":return ut(this,n,t,i);case"latin1":case"binary":return yt(this,n,t,i);case"base64":return pt(this,n,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wt(this,n,t,i);default:if(f)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase();f=!0}};r.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};k=4096;r.prototype.slice=function(n,t){var f,i=this.length,e,u;if((n=~~n)<0?(n+=i)<0&&(n=0):n>i&&(n=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t0&&(f*=256);)r+=this[n+--t]*f;return r};r.prototype.readUInt8=function(n,t){return t||u(n,1,this.length),this[n]};r.prototype.readUInt16LE=function(n,t){return t||u(n,2,this.length),this[n]|this[n+1]<<8};r.prototype.readUInt16BE=function(n,t){return t||u(n,2,this.length),this[n]<<8|this[n+1]};r.prototype.readUInt32LE=function(n,t){return t||u(n,4,this.length),(this[n]|this[n+1]<<8|this[n+2]<<16)+16777216*this[n+3]};r.prototype.readUInt32BE=function(n,t){return t||u(n,4,this.length),16777216*this[n]+(this[n+1]<<16|this[n+2]<<8|this[n+3])};r.prototype.readIntLE=function(n,t,i){n|=0;t|=0;i||u(n,t,this.length);for(var r=this[n],f=1,e=0;++e=(f*=128)&&(r-=Math.pow(2,8*t)),r};r.prototype.readIntBE=function(n,t,i){n|=0;t|=0;i||u(n,t,this.length);for(var f=t,e=1,r=this[n+--f];f>0&&(e*=256);)r+=this[n+--f]*e;return r>=(e*=128)&&(r-=Math.pow(2,8*t)),r};r.prototype.readInt8=function(n,t){return t||u(n,1,this.length),128&this[n]?-1*(256-this[n]):this[n]};r.prototype.readInt16LE=function(n,t){t||u(n,2,this.length);var i=this[n]|this[n+1]<<8;return 32768&i?4294901760|i:i};r.prototype.readInt16BE=function(n,t){t||u(n,2,this.length);var i=this[n+1]|this[n]<<8;return 32768&i?4294901760|i:i};r.prototype.readInt32LE=function(n,t){return t||u(n,4,this.length),this[n]|this[n+1]<<8|this[n+2]<<16|this[n+3]<<24};r.prototype.readInt32BE=function(n,t){return t||u(n,4,this.length),this[n]<<24|this[n+1]<<16|this[n+2]<<8|this[n+3]};r.prototype.readFloatLE=function(n,t){return t||u(n,4,this.length),s.read(this,n,!0,23,4)};r.prototype.readFloatBE=function(n,t){return t||u(n,4,this.length),s.read(this,n,!1,23,4)};r.prototype.readDoubleLE=function(n,t){return t||u(n,8,this.length),s.read(this,n,!0,52,8)};r.prototype.readDoubleBE=function(n,t){return t||u(n,8,this.length),s.read(this,n,!1,52,8)};r.prototype.writeUIntLE=function(n,t,i,r){n=+n;t|=0;i|=0;r||f(this,n,t,i,Math.pow(2,8*i)-1,0);var u=1,e=0;for(this[t]=255&n;++e=0&&(e*=256);)this[t+u]=n/e&255;return t+i};r.prototype.writeUInt8=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,1,255,0),r.TYPED_ARRAY_SUPPORT||(n=Math.floor(n)),this[t]=255&n,t+1};r.prototype.writeUInt16LE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[t]=255&n,this[t+1]=n>>>8):c(this,n,t,!0),t+2};r.prototype.writeUInt16BE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[t]=n>>>8,this[t+1]=255&n):c(this,n,t,!1),t+2};r.prototype.writeUInt32LE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[t+3]=n>>>24,this[t+2]=n>>>16,this[t+1]=n>>>8,this[t]=255&n):l(this,n,t,!0),t+4};r.prototype.writeUInt32BE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[t]=n>>>24,this[t+1]=n>>>16,this[t+2]=n>>>8,this[t+3]=255&n):l(this,n,t,!1),t+4};r.prototype.writeIntLE=function(n,t,i,r){var u;(n=+n,t|=0,r)||(u=Math.pow(2,8*i-1),f(this,n,t,i,u-1,-u));var e=0,s=1,o=0;for(this[t]=255&n;++e>0)-o&255;return t+i};r.prototype.writeIntBE=function(n,t,i,r){var e;(n=+n,t|=0,r)||(e=Math.pow(2,8*i-1),f(this,n,t,i,e-1,-e));var u=i-1,s=1,o=0;for(this[t+u]=255&n;--u>=0&&(s*=256);)n<0&&0===o&&0!==this[t+u+1]&&(o=1),this[t+u]=(n/s>>0)-o&255;return t+i};r.prototype.writeInt8=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,1,127,-128),r.TYPED_ARRAY_SUPPORT||(n=Math.floor(n)),n<0&&(n=255+n+1),this[t]=255&n,t+1};r.prototype.writeInt16LE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[t]=255&n,this[t+1]=n>>>8):c(this,n,t,!0),t+2};r.prototype.writeInt16BE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[t]=n>>>8,this[t+1]=255&n):c(this,n,t,!1),t+2};r.prototype.writeInt32LE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,4,2147483647,-2147483648),r.TYPED_ARRAY_SUPPORT?(this[t]=255&n,this[t+1]=n>>>8,this[t+2]=n>>>16,this[t+3]=n>>>24):l(this,n,t,!0),t+4};r.prototype.writeInt32BE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,4,2147483647,-2147483648),n<0&&(n=4294967295+n+1),r.TYPED_ARRAY_SUPPORT?(this[t]=n>>>24,this[t+1]=n>>>16,this[t+2]=n>>>8,this[t+3]=255&n):l(this,n,t,!1),t+4};r.prototype.writeFloatLE=function(n,t,i){return ot(this,n,t,!0,i)};r.prototype.writeFloatBE=function(n,t,i){return ot(this,n,t,!1,i)};r.prototype.writeDoubleLE=function(n,t,i){return st(this,n,t,!0,i)};r.prototype.writeDoubleBE=function(n,t,i){return st(this,n,t,!1,i)};r.prototype.copy=function(n,t,i,u){if((i||(i=0),u||0===u||(u=this.length),t>=n.length&&(t=n.length),t||(t=0),u>0&&u=this.length)throw new RangeError("sourceStart out of bounds");if(u<0)throw new RangeError("sourceEnd out of bounds");u>this.length&&(u=this.length);n.length-t=0;--f)n[f+t]=this[f+i];else if(e<1e3||!r.TYPED_ARRAY_SUPPORT)for(f=0;f>>=0,i=void 0===i?this.length:i>>>0,n||(n=0),"number"==typeof n)for(f=t;f0)throw new Error("Invalid string. Length must be a multiple of 4");return t=n.indexOf("="),-1===t&&(t=i),[t,t===i?0:4-t%4]}function h(n,t,i){for(var e,f,o=[],u=t;u>18&63]+r[f>>12&63]+r[f>>6&63]+r[63&f]);return o.join("")}t.byteLength=function(n){var t=e(n),r=t[0],i=t[1];return 3*(r+i)/4-i};t.toByteArray=function(n){for(var r,c=e(n),h=c[0],s=c[1],u=new o(function(n,t,i){return 3*(t+i)/4-i}(0,h,s)),f=0,l=s>0?h-4:h,t=0;t>16&255,u[f++]=r>>8&255,u[f++]=255&r;return 2===s&&(r=i[n.charCodeAt(t)]<<2|i[n.charCodeAt(t+1)]>>4,u[f++]=255&r),1===s&&(r=i[n.charCodeAt(t)]<<10|i[n.charCodeAt(t+1)]<<4|i[n.charCodeAt(t+2)]>>2,u[f++]=r>>8&255,u[f++]=255&r),u};t.fromByteArray=function(n){for(var t,i=n.length,e=i%3,f=[],o=16383,u=0,s=i-e;us?s:u+o));return 1===e?(t=n[i-1],f.push(r[t>>2]+r[t<<4&63]+"==")):2===e&&(t=(n[i-2]<<8)+n[i-1],f.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),f.join("")};for(var r=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0,s=f.length;u>1,e=-7,s=i?u-1:0,c=i?-1:1,h=n[t+s];for(s+=c,f=h&(1<<-e)-1,h>>=-e,e+=l;e>0;f=256*f+n[t+s],s+=c,e-=8);for(o=f&(1<<-e)-1,f>>=-e,e+=r;e>0;o=256*o+n[t+s],s+=c,e-=8);if(0===f)f=1-v;else{if(f===a)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,r);f-=v}return(h?-1:1)*o*Math.pow(2,f-r)};t.write=function(n,t,i,r,u,f){var e,o,s,l=8*f-u-1,a=(1<>1,y=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,c=r?0:f-1,v=r?1:-1,p=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,e=a):(e=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-e))<1&&(e--,s*=2),(t+=e+h>=1?y/s:y*Math.pow(2,1-h))*s>=2&&(e++,s/=2),e+h>=a?(o=0,e=a):e+h>=1?(o=(t*s-1)*Math.pow(2,u),e+=h):(o=t*Math.pow(2,h-1)*Math.pow(2,u),e=0));u>=8;n[i+c]=255&o,c+=v,o/=256,u-=8);for(e=e<0;n[i+c]=255&e,c+=v,e/=256,l-=8);n[i+c-v]|=128*p}},function(n){var t={}.toString;n.exports=Array.isArray||function(n){return"[object Array]"==t.call(n)}},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default=function(n){var t=n.jws,i=n.KeyUtil,u=n.X509,f=n.crypto,e=n.hextob64u,o=n.b64tohex,s=n.AllowedSigningAlgs;return function(){function n(){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n)}return n.parseJwt=function(n){r.Log.debug("JoseUtil.parseJwt");try{var i=t.JWS.parse(n);return{header:i.headerObj,payload:i.payloadObj}}catch(u){r.Log.error(u)}},n.validateJwt=function(t,f,e,s,h,c,l){r.Log.debug("JoseUtil.validateJwt");try{if("RSA"===f.kty)if(f.e&&f.n)f=i.getKey(f);else{if(!f.x5c||!f.x5c.length)return r.Log.error("JoseUtil.validateJwt: RSA key missing key material",f),Promise.reject(new Error("RSA key missing key material"));var a=o(f.x5c[0]);f=u.getPublicKeyFromCertHex(a)}else{if("EC"!==f.kty)return r.Log.error("JoseUtil.validateJwt: Unsupported key type",f&&f.kty),Promise.reject(new Error(f.kty));if(!(f.crv&&f.x&&f.y))return r.Log.error("JoseUtil.validateJwt: EC key missing key material",f),Promise.reject(new Error("EC key missing key material"));f=i.getKey(f)}return n._validateJwt(t,f,e,s,h,c,l)}catch(n){return r.Log.error(n&&n.message||n),Promise.reject("JWT validation failed")}},n.validateJwtAttributes=function(t,i,u,f,e,o){var s,h,c;if(f||(f=0),e||(e=parseInt(Date.now()/1e3)),s=n.parseJwt(t).payload,!s.iss)return r.Log.error("JoseUtil._validateJwt: issuer was not provided"),Promise.reject(new Error("issuer was not provided"));if(s.iss!==i)return r.Log.error("JoseUtil._validateJwt: Invalid issuer in token",s.iss),Promise.reject(new Error("Invalid issuer in token: "+s.iss));if(!s.aud)return r.Log.error("JoseUtil._validateJwt: aud was not provided"),Promise.reject(new Error("aud was not provided"));if(!(s.aud===u||Array.isArray(s.aud)&&s.aud.indexOf(u)>=0))return r.Log.error("JoseUtil._validateJwt: Invalid audience in token",s.aud),Promise.reject(new Error("Invalid audience in token: "+s.aud));if(s.azp&&s.azp!==u)return r.Log.error("JoseUtil._validateJwt: Invalid azp in token",s.azp),Promise.reject(new Error("Invalid azp in token: "+s.azp));if(!o){if(h=e+f,c=e-f,!s.iat)return r.Log.error("JoseUtil._validateJwt: iat was not provided"),Promise.reject(new Error("iat was not provided"));if(h1&&void 0!==arguments[1]?arguments[1]:"#",i;f(this,n);i=u.UrlUtility.parseUrlFragment(t,r);this.error=i.error;this.error_description=i.error_description;this.error_uri=i.error_uri;this.code=i.code;this.state=i.state;this.id_token=i.id_token;this.session_state=i.session_state;this.access_token=i.access_token;this.token_type=i.token_type;this.scope=i.scope;this.profile=void 0;this.expires_in=i.expires_in}return r(n,[{key:"expires_in",get:function(){if(this.expires_at){var n=parseInt(Date.now()/1e3);return this.expires_at-n}},set:function(n){var t=parseInt(n),i;"number"==typeof t&&t>0&&(i=parseInt(Date.now()/1e3),this.expires_at=i+t)}},{key:"expired",get:function(){var n=this.expires_in;if(void 0!==n)return n<=0}},{key:"scopes",get:function(){return(this.scope||"").split(" ")}},{key:"isOpenIdConnect",get:function(){return this.scopes.indexOf("openid")>=0||!!this.id_token}}]),n}()},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.SignoutRequest=void 0;var u=i(0),r=i(3),f=i(9);t.SignoutRequest=function n(t){var i=t.url,o=t.id_token_hint,s=t.post_logout_redirect_uri,h=t.data,c=t.extraQueryParams,l=t.request_type,e;if(function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n),!i)throw u.Log.error("SignoutRequest.ctor: No url passed"),new Error("url");for(e in o&&(i=r.UrlUtility.addQueryParam(i,"id_token_hint",o)),s&&(i=r.UrlUtility.addQueryParam(i,"post_logout_redirect_uri",s),h&&(this.state=new f.State({data:h,request_type:l}),i=r.UrlUtility.addQueryParam(i,"state",this.state.id))),c)i=r.UrlUtility.addQueryParam(i,e,c[e]);this.url=i}},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.SignoutResponse=void 0;var r=i(3);t.SignoutResponse=function n(t){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n);var i=r.UrlUtility.parseUrlFragment(t,"?");this.error=i.error;this.error_description=i.error_description;this.error_uri=i.error_uri;this.state=i.state}},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.InMemoryWebStorage=void 0;var u=function(){function n(n,t){for(var i,r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:c.SessionMonitor,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:a.TokenRevocationClient,b=arguments.length>4&&void 0!==arguments[4]?arguments[4]:v.TokenClient,k=arguments.length>5&&void 0!==arguments[5]?arguments[5]:y.JoseUtil,i;return p(this,t),f instanceof u.UserManagerSettings||(f=new u.UserManagerSettings(f)),i=w(this,n.call(this,f)),i._events=new s.UserManagerEvents(f),i._silentRenewService=new e(i),i.settings.automaticSilentRenew&&(r.Log.debug("UserManager.ctor: automaticSilentRenew is configured, setting up silent renew"),i.startSilentRenew()),i.settings.monitorSession&&(r.Log.debug("UserManager.ctor: monitorSession is configured, setting up session monitor"),i._sessionMonitor=new o(i)),i._tokenRevocationClient=new l(i._settings),i._tokenClient=new b(i._settings),i._joseUtil=k,i}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)}(t,n),t.prototype.getUser=function(){var n=this;return this._loadUser().then(function(t){return t?(r.Log.info("UserManager.getUser: user loaded"),n._events.load(t,!1),t):(r.Log.info("UserManager.getUser: user not found in storage"),null)})},t.prototype.removeUser=function(){var n=this;return this.storeUser(null).then(function(){r.Log.info("UserManager.removeUser: user removed from storage");n._events.unload()})},t.prototype.signinRedirect=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t;return(n=Object.assign({},n)).request_type="si:r",t={useReplaceToNavigate:n.useReplaceToNavigate},this._signinStart(n,this._redirectNavigator,t).then(function(){r.Log.info("UserManager.signinRedirect: successful")})},t.prototype.signinRedirectCallback=function(n){return this._signinEnd(n||this._redirectNavigator.url).then(function(n){return n.profile&&n.profile.sub?r.Log.info("UserManager.signinRedirectCallback: successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinRedirectCallback: no sub"),n})},t.prototype.signinPopup=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t;return(n=Object.assign({},n)).request_type="si:p",t=n.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri,t?(n.redirect_uri=t,n.display="popup",this._signin(n,this._popupNavigator,{startUrl:t,popupWindowFeatures:n.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:n.popupWindowTarget||this.settings.popupWindowTarget}).then(function(n){return n&&(n.profile&&n.profile.sub?r.Log.info("UserManager.signinPopup: signinPopup successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinPopup: no sub")),n})):(r.Log.error("UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured"),Promise.reject(new Error("No popup_redirect_uri or redirect_uri configured")))},t.prototype.signinPopupCallback=function(n){return this._signinCallback(n,this._popupNavigator).then(function(n){return n&&(n.profile&&n.profile.sub?r.Log.info("UserManager.signinPopupCallback: successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinPopupCallback: no sub")),n}).catch(function(n){r.Log.error(n.message)})},t.prototype.signinSilent=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n=Object.assign({},n),this._loadUser().then(function(i){return i&&i.refresh_token?(n.refresh_token=i.refresh_token,t._useRefreshToken(n)):(n.request_type="si:s",n.id_token_hint=n.id_token_hint||t.settings.includeIdTokenInSilentRenew&&i&&i.id_token,i&&t._settings.validateSubOnSilentRenew&&(r.Log.debug("UserManager.signinSilent, subject prior to silent renew: ",i.profile.sub),n.current_sub=i.profile.sub),t._signinSilentIframe(n))})},t.prototype._useRefreshToken=function(){var n=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(t).then(function(t){return t?t.access_token?n._loadUser().then(function(i){if(i){var u=Promise.resolve();return t.id_token&&(u=n._validateIdTokenFromTokenRefreshToken(i.profile,t.id_token)),u.then(function(){return r.Log.debug("UserManager._useRefreshToken: refresh token response success"),i.id_token=t.id_token||i.id_token,i.access_token=t.access_token,i.refresh_token=t.refresh_token||i.refresh_token,i.expires_in=t.expires_in,n.storeUser(i).then(function(){return n._events.load(i),i})})}return null}):(r.Log.error("UserManager._useRefreshToken: No access token returned from token endpoint"),Promise.reject("No access token returned from token endpoint")):(r.Log.error("UserManager._useRefreshToken: No response returned from token endpoint"),Promise.reject("No response returned from token endpoint"))})},t.prototype._validateIdTokenFromTokenRefreshToken=function(n,t){var i=this;return this._metadataService.getIssuer().then(function(u){return i.settings.getEpochTime().then(function(f){return i._joseUtil.validateJwtAttributes(t,u,i._settings.client_id,i._settings.clockSkew,f).then(function(t){return t?t.sub!==n.sub?(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub"),Promise.reject(new Error("sub in id_token does not match current sub"))):t.auth_time&&t.auth_time!==n.auth_time?(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time"),Promise.reject(new Error("auth_time in id_token does not match original auth_time"))):t.azp&&t.azp!==n.azp?(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp"),Promise.reject(new Error("azp in id_token does not match original azp"))):!t.azp&&n.azp?(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token"),Promise.reject(new Error("azp not in id_token, but present in original id_token"))):void 0:(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token"),Promise.reject(new Error("Failed to validate id_token")))})})})},t.prototype._signinSilentIframe=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=n.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return t?(n.redirect_uri=t,n.prompt=n.prompt||"none",this._signin(n,this._iframeNavigator,{startUrl:t,silentRequestTimeout:n.silentRequestTimeout||this.settings.silentRequestTimeout}).then(function(n){return n&&(n.profile&&n.profile.sub?r.Log.info("UserManager.signinSilent: successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinSilent: no sub")),n})):(r.Log.error("UserManager.signinSilent: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},t.prototype.signinSilentCallback=function(n){return this._signinCallback(n,this._iframeNavigator).then(function(n){return n&&(n.profile&&n.profile.sub?r.Log.info("UserManager.signinSilentCallback: successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinSilentCallback: no sub")),n})},t.prototype.signinCallback=function(n){var t=this;return this.readSigninResponseState(n).then(function(i){var r=i.state;return i.response,"si:r"===r.request_type?t.signinRedirectCallback(n):"si:p"===r.request_type?t.signinPopupCallback(n):"si:s"===r.request_type?t.signinSilentCallback(n):Promise.reject(new Error("invalid response_type in state"))})},t.prototype.signoutCallback=function(n,t){var i=this;return this.readSignoutResponseState(n).then(function(r){var u=r.state,f=r.response;return u?"so:r"===u.request_type?i.signoutRedirectCallback(n):"so:p"===u.request_type?i.signoutPopupCallback(n,t):Promise.reject(new Error("invalid response_type in state")):f})},t.prototype.querySessionStatus=function(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t;return(n=Object.assign({},n)).request_type="si:s",t=n.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri,t?(n.redirect_uri=t,n.prompt="none",n.response_type=n.response_type||this.settings.query_status_response_type,n.scope=n.scope||"openid",n.skipUserInfo=!0,this._signinStart(n,this._iframeNavigator,{startUrl:t,silentRequestTimeout:n.silentRequestTimeout||this.settings.silentRequestTimeout}).then(function(n){return i.processSigninResponse(n.url).then(function(n){if(r.Log.debug("UserManager.querySessionStatus: got signin response"),n.session_state&&n.profile.sub)return r.Log.info("UserManager.querySessionStatus: querySessionStatus success for sub: ",n.profile.sub),{session_state:n.session_state,sub:n.profile.sub,sid:n.profile.sid};r.Log.info("querySessionStatus successful, user not authenticated")}).catch(function(n){if(n.session_state&&i.settings.monitorAnonymousSession&&("login_required"==n.message||"consent_required"==n.message||"interaction_required"==n.message||"account_selection_required"==n.message))return r.Log.info("UserManager.querySessionStatus: querySessionStatus success for anonymous user"),{session_state:n.session_state};throw n;})})):(r.Log.error("UserManager.querySessionStatus: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},t.prototype._signin=function(n,t){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(n,t,r).then(function(t){return i._signinEnd(t.url,n)})},t.prototype._signinStart=function(n,t){var u=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.prepare(i).then(function(t){return r.Log.debug("UserManager._signinStart: got navigator window handle"),u.createSigninRequest(n).then(function(n){return r.Log.debug("UserManager._signinStart: got signin request"),i.url=n.url,i.id=n.state.id,t.navigate(i)}).catch(function(n){throw t.close&&(r.Log.debug("UserManager._signinStart: Error after preparing navigator, closing navigator window"),t.close()),n;})})},t.prototype._signinEnd=function(n){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(n).then(function(n){r.Log.debug("UserManager._signinEnd: got signin response");var u=new f.User(n);if(i.current_sub){if(i.current_sub!==u.profile.sub)return r.Log.debug("UserManager._signinEnd: current user does not match user returned from signin. sub from signin: ",u.profile.sub),Promise.reject(new Error("login_required"));r.Log.debug("UserManager._signinEnd: current user matches user returned from signin")}return t.storeUser(u).then(function(){return r.Log.debug("UserManager._signinEnd: user stored"),t._events.load(u),u})})},t.prototype._signinCallback=function(n,t){r.Log.debug("UserManager._signinCallback");var i="query"===this._settings.response_mode||!this._settings.response_mode&&l.SigninRequest.isCode(this._settings.response_type)?"?":"#";return t.callback(n,void 0,i)},t.prototype.signoutRedirect=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t,i;return(n=Object.assign({},n)).request_type="so:r",t=n.post_logout_redirect_uri||this.settings.post_logout_redirect_uri,t&&(n.post_logout_redirect_uri=t),i={useReplaceToNavigate:n.useReplaceToNavigate},this._signoutStart(n,this._redirectNavigator,i).then(function(){r.Log.info("UserManager.signoutRedirect: successful")})},t.prototype.signoutRedirectCallback=function(n){return this._signoutEnd(n||this._redirectNavigator.url).then(function(n){return r.Log.info("UserManager.signoutRedirectCallback: successful"),n})},t.prototype.signoutPopup=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t;return(n=Object.assign({},n)).request_type="so:p",t=n.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri,n.post_logout_redirect_uri=t,n.display="popup",n.post_logout_redirect_uri&&(n.state=n.state||{}),this._signout(n,this._popupNavigator,{startUrl:t,popupWindowFeatures:n.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:n.popupWindowTarget||this.settings.popupWindowTarget}).then(function(){r.Log.info("UserManager.signoutPopup: successful")})},t.prototype.signoutPopupCallback=function(n,t){return void 0===t&&"boolean"==typeof n&&(t=n,n=null),this._popupNavigator.callback(n,t,"?").then(function(){r.Log.info("UserManager.signoutPopupCallback: successful")})},t.prototype._signout=function(n,t){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(n,t,r).then(function(n){return i._signoutEnd(n.url)})},t.prototype._signoutStart=function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this,u=arguments[1],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return u.prepare(t).then(function(u){return r.Log.debug("UserManager._signoutStart: got navigator window handle"),n._loadUser().then(function(f){return r.Log.debug("UserManager._signoutStart: loaded current user from storage"),(n._settings.revokeAccessTokenOnSignout?n._revokeInternal(f):Promise.resolve()).then(function(){var e=i.id_token_hint||f&&f.id_token;return e&&(r.Log.debug("UserManager._signoutStart: Setting id_token into signout request"),i.id_token_hint=e),n.removeUser().then(function(){return r.Log.debug("UserManager._signoutStart: user removed, creating signout request"),n.createSignoutRequest(i).then(function(n){return r.Log.debug("UserManager._signoutStart: got signout request"),t.url=n.url,n.state&&(t.id=n.state.id),u.navigate(t)})})})}).catch(function(n){throw u.close&&(r.Log.debug("UserManager._signoutStart: Error after preparing navigator, closing navigator window"),u.close()),n;})})},t.prototype._signoutEnd=function(n){return this.processSignoutResponse(n).then(function(n){return r.Log.debug("UserManager._signoutEnd: got signout response"),n})},t.prototype.revokeAccessToken=function(){var n=this;return this._loadUser().then(function(t){return n._revokeInternal(t,!0).then(function(i){if(i)return r.Log.debug("UserManager.revokeAccessToken: removing token properties from user and re-storing"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,n.storeUser(t).then(function(){r.Log.debug("UserManager.revokeAccessToken: user stored");n._events.load(t)})})}).then(function(){r.Log.info("UserManager.revokeAccessToken: access token revoked successfully")})},t.prototype._revokeInternal=function(n,t){var f=this,i,u;return n?(i=n.access_token,u=n.refresh_token,this._revokeAccessTokenInternal(i,t).then(function(n){return f._revokeRefreshTokenInternal(u,t).then(function(t){return n||t||r.Log.debug("UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format"),n||t})})):Promise.resolve(!1)},t.prototype._revokeAccessTokenInternal=function(n,t){return!n||n.indexOf(".")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(n,t).then(function(){return!0})},t.prototype._revokeRefreshTokenInternal=function(n,t){return n?this._tokenRevocationClient.revoke(n,t,"refresh_token").then(function(){return!0}):Promise.resolve(!1)},t.prototype.startSilentRenew=function(){this._silentRenewService.start()},t.prototype.stopSilentRenew=function(){this._silentRenewService.stop()},t.prototype._loadUser=function(){return this._userStore.get(this._userStoreKey).then(function(n){return n?(r.Log.debug("UserManager._loadUser: user storageString loaded"),f.User.fromStorageString(n)):(r.Log.debug("UserManager._loadUser: no user storageString"),null)})},t.prototype.storeUser=function(n){if(n){r.Log.debug("UserManager.storeUser: storing user");var t=n.toStorageString();return this._userStore.set(this._userStoreKey,t)}return r.Log.debug("storeUser.storeUser: removing user"),this._userStore.remove(this._userStoreKey)},e(t,[{key:"_redirectNavigator",get:function(){return this.settings.redirectNavigator}},{key:"_popupNavigator",get:function(){return this.settings.popupNavigator}},{key:"_iframeNavigator",get:function(){return this.settings.iframeNavigator}},{key:"_userStore",get:function(){return this.settings.userStore}},{key:"events",get:function(){return this._events}},{key:"_userStoreKey",get:function(){return"user:"+this.settings.authority+":"+this.settings.client_id}}]),t}(o.OidcClient)},function(n,t,i){"use strict";function l(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}function a(n,t){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?n:t}Object.defineProperty(t,"__esModule",{value:!0});t.UserManagerSettings=void 0;var r=function(){function n(n,t){for(var i,r=0;r0&&void 0!==arguments[0]?arguments[0]:{},ft=r.popup_redirect_uri,et=r.popup_post_logout_redirect_uri,ot=r.popupWindowFeatures,st=r.popupWindowTarget,ht=r.silent_redirect_uri,ct=r.silentRequestTimeout,u=r.automaticSilentRenew,lt=void 0!==u&&u,v=r.validateSubOnSilentRenew,at=void 0!==v&&v,y=r.includeIdTokenInSilentRenew,vt=void 0===y||y,p=r.monitorSession,yt=void 0===p||p,w=r.monitorAnonymousSession,pt=void 0!==w&&w,b=r.checkSessionInterval,wt=void 0===b?2e3:b,k=r.stopCheckSessionOnError,bt=void 0===k||k,d=r.query_status_response_type,g=r.revokeAccessTokenOnSignout,kt=void 0!==g&&g,nt=r.accessTokenExpiringNotificationTime,dt=void 0===nt?60:nt,tt=r.redirectNavigator,gt=void 0===tt?new f.RedirectNavigator:tt,it=r.popupNavigator,ni=void 0===it?new e.PopupNavigator:it,rt=r.iframeNavigator,ti=void 0===rt?new o.IFrameNavigator:rt,ut=r.userStore,ii=void 0===ut?new s.WebStorageStateStore({store:h.Global.sessionStorage}):ut,i;return l(this,t),i=a(this,n.call(this,arguments[0])),i._popup_redirect_uri=ft,i._popup_post_logout_redirect_uri=et,i._popupWindowFeatures=ot,i._popupWindowTarget=st,i._silent_redirect_uri=ht,i._silentRequestTimeout=ct,i._automaticSilentRenew=lt,i._validateSubOnSilentRenew=at,i._includeIdTokenInSilentRenew=vt,i._accessTokenExpiringNotificationTime=dt,i._monitorSession=yt,i._monitorAnonymousSession=pt,i._checkSessionInterval=wt,i._stopCheckSessionOnError=bt,i._query_status_response_type=d?d:arguments[0]&&arguments[0].response_type?c.SigninRequest.isOidc(arguments[0].response_type)?"id_token":"code":"id_token",i._revokeAccessTokenOnSignout=kt,i._redirectNavigator=gt,i._popupNavigator=ni,i._iframeNavigator=ti,i._userStore=ii,i}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)}(t,n),r(t,[{key:"popup_redirect_uri",get:function(){return this._popup_redirect_uri}},{key:"popup_post_logout_redirect_uri",get:function(){return this._popup_post_logout_redirect_uri}},{key:"popupWindowFeatures",get:function(){return this._popupWindowFeatures}},{key:"popupWindowTarget",get:function(){return this._popupWindowTarget}},{key:"silent_redirect_uri",get:function(){return this._silent_redirect_uri}},{key:"silentRequestTimeout",get:function(){return this._silentRequestTimeout}},{key:"automaticSilentRenew",get:function(){return this._automaticSilentRenew}},{key:"validateSubOnSilentRenew",get:function(){return this._validateSubOnSilentRenew}},{key:"includeIdTokenInSilentRenew",get:function(){return this._includeIdTokenInSilentRenew}},{key:"accessTokenExpiringNotificationTime",get:function(){return this._accessTokenExpiringNotificationTime}},{key:"monitorSession",get:function(){return this._monitorSession}},{key:"monitorAnonymousSession",get:function(){return this._monitorAnonymousSession}},{key:"checkSessionInterval",get:function(){return this._checkSessionInterval}},{key:"stopCheckSessionOnError",get:function(){return this._stopCheckSessionOnError}},{key:"query_status_response_type",get:function(){return this._query_status_response_type}},{key:"revokeAccessTokenOnSignout",get:function(){return this._revokeAccessTokenOnSignout}},{key:"redirectNavigator",get:function(){return this._redirectNavigator}},{key:"popupNavigator",get:function(){return this._popupNavigator}},{key:"iframeNavigator",get:function(){return this._iframeNavigator}},{key:"userStore",get:function(){return this._userStore}}]),t}(u.OidcClientSettings)},function(n,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.RedirectNavigator=void 0;var r=function(){function n(n,t){for(var i,r=0;r1&&void 0!==arguments[1])||arguments[1];r.Log.debug("UserManagerEvents.load");n.prototype.load.call(this,t);i&&this._userLoaded.raise(t)},t.prototype.unload=function(){r.Log.debug("UserManagerEvents.unload");n.prototype.unload.call(this);this._userUnloaded.raise()},t.prototype.addUserLoaded=function(n){this._userLoaded.addHandler(n)},t.prototype.removeUserLoaded=function(n){this._userLoaded.removeHandler(n)},t.prototype.addUserUnloaded=function(n){this._userUnloaded.addHandler(n)},t.prototype.removeUserUnloaded=function(n){this._userUnloaded.removeHandler(n)},t.prototype.addSilentRenewError=function(n){this._silentRenewError.addHandler(n)},t.prototype.removeSilentRenewError=function(n){this._silentRenewError.removeHandler(n)},t.prototype._raiseSilentRenewError=function(n){r.Log.debug("UserManagerEvents._raiseSilentRenewError",n.message);this._silentRenewError.raise(n)},t.prototype.addUserSignedIn=function(n){this._userSignedIn.addHandler(n)},t.prototype.removeUserSignedIn=function(n){this._userSignedIn.removeHandler(n)},t.prototype._raiseUserSignedIn=function(){r.Log.debug("UserManagerEvents._raiseUserSignedIn");this._userSignedIn.raise()},t.prototype.addUserSignedOut=function(n){this._userSignedOut.addHandler(n)},t.prototype.removeUserSignedOut=function(n){this._userSignedOut.removeHandler(n)},t.prototype._raiseUserSignedOut=function(){r.Log.debug("UserManagerEvents._raiseUserSignedOut");this._userSignedOut.raise()},t.prototype.addUserSessionChanged=function(n){this._userSessionChanged.addHandler(n)},t.prototype.removeUserSessionChanged=function(n){this._userSessionChanged.removeHandler(n)},t.prototype._raiseUserSessionChanged=function(){r.Log.debug("UserManagerEvents._raiseUserSessionChanged");this._userSessionChanged.raise()},t}(f.AccessTokenEvents)},function(n,t,i){"use strict";function o(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}function s(n,t){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?n:t}Object.defineProperty(t,"__esModule",{value:!0});t.Timer=void 0;var u=function(){function n(n,t){for(var i,r=0;r1&&void 0!==arguments[1]?arguments[1]:f.Global.timer,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r;return o(this,t),r=s(this,n.call(this,i)),r._timer=u,r._nowFunc=e||function(){return Date.now()/1e3},r}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)}(t,n),t.prototype.init=function(n){var i,t;n<=0&&(n=1);n=parseInt(n);i=this.now+n;this.expiration===i&&this._timerHandle?r.Log.debug("Timer.init timer "+this._name+" skipping initialization since already initialized for expiration:",this.expiration):(this.cancel(),r.Log.debug("Timer.init timer "+this._name+" for duration:",n),this._expiration=i,t=5,n{t.kO=t.Pd=void 0;const o=i(671);var f,u;!function(n){n.Success="success";n.RequiresRedirect="requiresRedirect"}(f=t.Pd||(t.Pd={})),function(n){n.Redirect="redirect";n.Success="success";n.Failure="failure";n.OperationCompleted="operationCompleted"}(u=t.kO||(t.kO={}));class e{constructor(n){this._userManager=n}async trySilentSignIn(){return this._intialSilentSignIn||(this._intialSilentSignIn=(async()=>{try{await this._userManager.signinSilent()}catch(n){}})()),this._intialSilentSignIn}async getUser(){window.parent!==window||window.opener||window.frameElement||!this._userManager.settings.redirect_uri||location.href.startsWith(this._userManager.settings.redirect_uri)||await r.instance.trySilentSignIn();const n=await this._userManager.getUser();return n&&n.profile}async getAccessToken(n){function i(n){const t=new Date;return t.setTime(t.getTime()+1e3*n),t}const t=await this._userManager.getUser();if(function(n){return!(!n||!n.access_token||n.expired||!n.scopes)}(t)&&function(n,t){const i=new Set(t);if(n&&n.scopes)for(const t of n.scopes)if(!i.has(t))return!1;return!0}(n,t.scopes))return{status:f.Success,token:{grantedScopes:t.scopes,expires:i(t.expires_in),value:t.access_token}};try{const r=n&&n.scopes?{scope:n.scopes.join(" ")}:void 0,t=await this._userManager.signinSilent(r);return{status:f.Success,token:{grantedScopes:t.scopes,expires:i(t.expires_in),value:t.access_token}}}catch(n){return{status:f.RequiresRedirect}}}async signIn(n){try{return await this._userManager.clearStaleState(),await this._userManager.signinSilent(this.createArguments()),this.success(n)}catch(t){try{return await this._userManager.clearStaleState(),await this._userManager.signinRedirect(this.createArguments(n)),this.redirect()}catch(n){return this.error(this.getExceptionMessage(n))}}}async completeSignIn(n){const t=await this.loginRequired(n),i=await this.stateExists(n);try{const t=await this._userManager.signinCallback(n);return window.self!==window.top?this.operationCompleted():this.success(t&&t.state)}catch(n){return t||window.self!==window.top||!i?this.operationCompleted():this.error("There was an error signing in.")}}async signOut(n){try{return await this._userManager.metadataService.getEndSessionEndpoint()?(await this._userManager.signoutRedirect(this.createArguments(n)),this.redirect()):(await this._userManager.removeUser(),this.success(n))}catch(n){return this.error(this.getExceptionMessage(n))}}async completeSignOut(n){try{if(await this.stateExists(n)){const t=await this._userManager.signoutCallback(n);return this.success(t&&t.state)}return this.operationCompleted()}catch(n){return this.error(this.getExceptionMessage(n))}}getExceptionMessage(n){return function(n){return n&&n.error_description}(n)?n.error_description:function(n){return n&&n.message}(n)?n.message:n.toString()}async stateExists(n){const t=new URLSearchParams(new URL(n).search).get("state");if(t&&this._userManager.settings.stateStore)return await this._userManager.settings.stateStore.get(t)}async loginRequired(n){const t=new URLSearchParams(new URL(n).search).get("error");return!(!t||!this._userManager.settings.stateStore)&&!1}createArguments(n){return{useReplaceToNavigate:!0,data:n}}error(n){return{status:u.Failure,errorMessage:n}}success(n){return{status:u.Success,state:n}}redirect(){return{status:u.Redirect}}operationCompleted(){return{status:u.OperationCompleted}}}class r{static init(n){return r._initialized||(r._initialized=r.initializeCore(n)),r._initialized}static handleCallback(){return r.initializeCore()}static async initializeCore(n){const t=n||r.resolveCachedSettings();if(!n&&t){const n=r.createUserManagerCore(t);window.parent!==window&&!window.opener&&window.frameElement&&n.settings.redirect_uri&&location.href.startsWith(n.settings.redirect_uri)&&(r.instance=new e(n),r._initialized=(async()=>{await r.instance.completeSignIn(location.href)})())}else if(n){const t=await r.createUserManager(n);r.instance=new e(t)}}static resolveCachedSettings(){const n=window.sessionStorage.getItem(`${r._infrastructureKey}.CachedAuthSettings`);if(n)return JSON.parse(n)}static getUser(){return r.instance.getUser()}static getAccessToken(n){return r.instance.getAccessToken(n)}static signIn(n){return r.instance.signIn(n)}static async completeSignIn(n){let t=this._pendingOperations[n];return t||(t=r.instance.completeSignIn(n),await t,delete this._pendingOperations[n]),t}static signOut(n){return r.instance.signOut(n)}static async completeSignOut(n){let t=this._pendingOperations[n];return t||(t=r.instance.completeSignOut(n),await t,delete this._pendingOperations[n]),t}static async createUserManager(n){let t;if(function(n){return n.hasOwnProperty("configurationEndpoint")}(n)){const i=await fetch(n.configurationEndpoint);if(!i.ok)throw new Error(`Could not load settings from '${n.configurationEndpoint}'`);t=await i.json()}else n.scope||(n.scope=n.defaultScopes.join(" ")),null===n.response_type&&delete n.response_type,t=n;return window.sessionStorage.setItem(`${r._infrastructureKey}.CachedAuthSettings`,JSON.stringify(t)),r.createUserManagerCore(t)}static createUserManagerCore(n){const t=new o.UserManager(n);return t.events.addUserSignedOut(async()=>{t.removeUser()}),t}}r._infrastructureKey="Microsoft.AspNetCore.Components.WebAssembly.Authentication";r._pendingOperations={};r.handleCallback();window.AuthenticationService=r}},n={};!function i(r){if(n[r])return n[r].exports;var u=n[r]={exports:{}};return t[r].call(u.exports,u,u.exports,i),u.exports}(981)})(); - if (element.type === "submit") { - element.addEventListener("click", (e) => { - window.blazorise.button.click(window.blazorise.button._instances[elementId], e); - }); - } +function getFileById(n,t){var i=n._blazorFilesById[t];if(!i)throw new Error("There is no file with ID "+t+". The file list may have changed");return i}function getArrayBufferFromFileAsync(n,t){var i=getFileById(n,t);return i.readPromise||(i.readPromise=new Promise(function(n,t){var r=new FileReader;r.onload=function(){n(r.result)};r.onerror=function(n){t(n)};r.readAsArrayBuffer(i.blob)})),i.readPromise}function hasParentInTree(n,t){return n.parentElement?n.parentElement.id===t?!0:hasParentInTree(n.parentElement,t):!1}!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).Popper={})}(this,function(n){function h(n){return{width:(n=n.getBoundingClientRect()).width,height:n.height,top:n.top,right:n.right,bottom:n.bottom,left:n.left,x:n.left,y:n.top}}function t(n){return null==n?window:"[object Window]"!==n.toString()?(n=n.ownerDocument)&&n.defaultView||window:n}function d(n){return{scrollLeft:(n=t(n)).pageXOffset,scrollTop:n.pageYOffset}}function l(n){return n instanceof t(n).Element||n instanceof Element}function r(n){return n instanceof t(n).HTMLElement||n instanceof HTMLElement}function ht(n){return"undefined"!=typeof ShadowRoot&&(n instanceof t(n).ShadowRoot||n instanceof ShadowRoot)}function u(n){return n?(n.nodeName||"").toLowerCase():null}function e(n){return((l(n)?n.ownerDocument:n.document)||window.document).documentElement}function g(n){return h(e(n)).left+d(n).scrollLeft}function o(n){return t(n).getComputedStyle(n)}function nt(n){return n=o(n),/auto|scroll|overlay|hidden/.test(n.overflow+n.overflowY+n.overflowX)}function ci(n,i,f){var s;void 0===f&&(f=!1);s=e(i);n=h(n);var l=r(i),c={scrollLeft:0,scrollTop:0},o={x:0,y:0};return(l||!l&&!f)&&(("body"!==u(i)||nt(s))&&(c=i!==t(i)&&r(i)?{scrollLeft:i.scrollLeft,scrollTop:i.scrollTop}:d(i)),r(i)?((o=h(i)).x+=i.clientLeft,o.y+=i.clientTop):s&&(o.x=g(s))),{x:n.left+c.scrollLeft-o.x,y:n.top+c.scrollTop-o.y,width:n.width,height:n.height}}function tt(n){var t=h(n),i=n.offsetWidth,r=n.offsetHeight;return 1>=Math.abs(t.width-i)&&(i=t.width),1>=Math.abs(t.height-r)&&(r=t.height),{x:n.offsetLeft,y:n.offsetTop,width:i,height:r}}function p(n){return"html"===u(n)?n:n.assignedSlot||n.parentNode||(ht(n)?n.host:null)||e(n)}function ct(n){return 0<=["html","body","#document"].indexOf(u(n))?n.ownerDocument.body:r(n)&&nt(n)?n:ct(p(n))}function a(n,i){var u,r;return void 0===i&&(i=[]),r=ct(n),n=r===(null==(u=n.ownerDocument)?void 0:u.body),u=t(r),r=n?[u].concat(u.visualViewport||[],nt(r)?r:[]):r,i=i.concat(r),n?i:i.concat(a(p(r)))}function lt(n){return r(n)&&"fixed"!==o(n).position?n.offsetParent:null}function v(n){for(var f,e=t(n),i=lt(n);i&&0<=["table","td","th"].indexOf(u(i))&&"static"===o(i).position;)i=lt(i);if(i&&("html"===u(i)||"body"===u(i)&&"static"===o(i).position))return e;if(!i)n:{for(i=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),n=p(n);r(n)&&0>["html","body"].indexOf(u(n));){if(f=o(n),"none"!==f.transform||"none"!==f.perspective||"paint"===f.contain||-1!==["transform","perspective"].indexOf(f.willChange)||i&&"filter"===f.willChange||i&&f.filter&&"none"!==f.filter){i=n;break n}n=n.parentNode}i=null}return i||e}function li(n){function i(n){t.add(n.name);[].concat(n.requires||[],n.requiresIfExists||[]).forEach(function(n){t.has(n)||(n=r.get(n))&&i(n)});u.push(n)}var r=new Map,t=new Set,u=[];return n.forEach(function(n){r.set(n.name,n)}),n.forEach(function(n){t.has(n.name)||i(n)}),u}function ai(n){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0;i(n())})})),t}}function f(n){return n.split("-")[0]}function at(n,t){var i=t.getRootNode&&t.getRootNode();if(n.contains(t))return!0;if(i&&ht(i))do{if(t&&n.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function it(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}function vt(n,u){var f,c,l,s;return"viewport"===u?(u=t(n),f=e(n),u=u.visualViewport,c=f.clientWidth,f=f.clientHeight,l=0,s=0,u&&(c=u.width,f=u.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=u.offsetLeft,s=u.offsetTop)),n=it(n={width:c,height:f,x:l+g(n),y:s})):r(u)?((n=h(u)).top+=u.clientTop,n.left+=u.clientLeft,n.bottom=n.top+u.clientHeight,n.right=n.left+u.clientWidth,n.width=u.clientWidth,n.height=u.clientHeight,n.x=n.left,n.y=n.top):(s=e(n),n=e(s),c=d(s),u=null==(f=s.ownerDocument)?void 0:f.body,f=i(n.scrollWidth,n.clientWidth,u?u.scrollWidth:0,u?u.clientWidth:0),l=i(n.scrollHeight,n.clientHeight,u?u.scrollHeight:0,u?u.clientHeight:0),s=-c.scrollLeft+g(s),c=-c.scrollTop,"rtl"===o(u||n).direction&&(s+=i(n.clientWidth,u?u.clientWidth:0)-f),n=it({width:f,height:l,x:s,y:c})),n}function vi(n,t,f){return t="clippingParents"===t?function(n){var i=a(p(n)),t=0<=["absolute","fixed"].indexOf(o(n).position)&&r(n)?v(n):n;return l(t)?i.filter(function(n){return l(n)&&at(n,t)&&"body"!==u(n)}):[]}(n):[].concat(t),(f=(f=[].concat(t,[f])).reduce(function(t,r){return r=vt(n,r),t.top=i(r.top,t.top),t.right=s(r.right,t.right),t.bottom=s(r.bottom,t.bottom),t.left=i(r.left,t.left),t},vt(n,f[0]))).width=f.right-f.left,f.height=f.bottom-f.top,f.x=f.left,f.y=f.top,f}function rt(n){return 0<=["top","bottom"].indexOf(n)?"x":"y"}function yt(n){var t=n.reference,e=n.element,u=(n=n.placement)?f(n):null,i,r;n=n?n.split("-")[1]:null;i=t.x+t.width/2-e.width/2;r=t.y+t.height/2-e.height/2;switch(u){case"top":i={x:i,y:t.y-e.height};break;case"bottom":i={x:i,y:t.y+t.height};break;case"right":i={x:t.x+t.width,y:r};break;case"left":i={x:t.x-e.width,y:r};break;default:i={x:t.x,y:t.y}}if(null!=(u=u?rt(u):null))switch(r="y"===u?"height":"width",n){case"start":i[u]-=t[r]/2-e[r]/2;break;case"end":i[u]+=t[r]/2-e[r]/2}return i}function pt(n){return Object.assign({},{top:0,right:0,bottom:0,left:0},n)}function wt(n,t){return t.reduce(function(t,i){return t[i]=n,t},{})}function c(n,t){var i,f,o,a,c,v;void 0===t&&(t={});i=t;t=void 0===(t=i.placement)?n.placement:t;var r=i.boundary,s=void 0===r?"clippingParents":r,u=void 0===(r=i.rootBoundary)?"viewport":r;return r=void 0===(r=i.elementContext)?"popper":r,f=i.altBoundary,o=void 0!==f&&f,i=pt("number"!=typeof(i=void 0===(i=i.padding)?0:i)?i:wt(i,y)),a=n.elements.reference,f=n.rects.popper,s=vi(l(o=n.elements[o?"popper"===r?"reference":"popper":r])?o:o.contextElement||e(n.elements.popper),s,u),o=yt({reference:u=h(a),element:f,strategy:"absolute",placement:t}),f=it(Object.assign({},f,o)),u="popper"===r?f:u,c={top:s.top-u.top+i.top,bottom:u.bottom-s.bottom+i.bottom,left:s.left-u.left+i.left,right:u.right-s.right+i.right},(n=n.modifiersData.offset,"popper"===r&&n)&&(v=n[t],Object.keys(c).forEach(function(n){var t=0<=["right","bottom"].indexOf(n)?1:-1,i=0<=["top","bottom"].indexOf(n)?"y":"x";c[n]+=v[i]*t})),c}function bt(){for(var t=arguments.length,i=Array(t),n=0;n(tt.devicePixelRatio||1)?"translate("+n+"px, "+i+"px)":"translate3d("+n+"px, "+i+"px, 0)",s)):Object.assign({},u,((f={})[y]=r?i+"px":"",f[a]=l?n+"px":"",f.transform="",f))}function w(n){return n.replace(/left|right|bottom|top/g,function(n){return wi[n]})}function dt(n){return n.replace(/start|end/g,function(n){return bi[n]})}function gt(n,t,i){return void 0===i&&(i={x:0,y:0}),{top:n.top-t.height-i.y,right:n.right-t.width+i.x,bottom:n.bottom-t.height+i.y,left:n.left-t.width-i.x}}function ni(n){return["top","right","bottom","left"].some(function(t){return 0<=n[t]})}var y=["top","bottom","right","left"],ti=y.reduce(function(n,t){return n.concat([t+"-start",t+"-end"])},[]),ii=[].concat(y,["auto"]).reduce(function(n,t){return n.concat([t,t+"-start",t+"-end"])},[]),yi="beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite".split(" "),i=Math.max,s=Math.min,b=Math.round,ri={placement:"bottom",modifiers:[],strategy:"absolute"},k={passive:!0},ft={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(n){var r=n.state,i=n.instance,u=(n=n.options).scroll,f=void 0===u||u,e=void 0===(n=n.resize)||n,o=t(r.elements.popper),s=[].concat(r.scrollParents.reference,r.scrollParents.popper);return f&&s.forEach(function(n){n.addEventListener("scroll",i.update,k)}),e&&o.addEventListener("resize",i.update,k),function(){f&&s.forEach(function(n){n.removeEventListener("scroll",i.update,k)});e&&o.removeEventListener("resize",i.update,k)}},data:{}},et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(n){var t=n.state;t.modifiersData[n.name]=yt({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},pi={top:"auto",right:"auto",bottom:"auto",left:"auto"},ot={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(n){var t=n.state,i=n.options,r;n=void 0===(n=i.gpuAcceleration)||n;r=i.adaptive;r=void 0===r||r;i=void 0===(i=i.roundOffsets)||i;n={placement:f(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:n};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,kt(Object.assign({},n,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:i}))));null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,kt(Object.assign({},n,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:i}))));t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},st={name:"applyStyles",enabled:!0,phase:"write",fn:function(n){var t=n.state;Object.keys(t.elements).forEach(function(n){var e=t.styles[n]||{},f=t.attributes[n]||{},i=t.elements[n];r(i)&&u(i)&&(Object.assign(i.style,e),Object.keys(f).forEach(function(n){var t=f[n];!1===t?i.removeAttribute(n):i.setAttribute(n,!0===t?"":t)}))})},effect:function(n){var t=n.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(n){var f=t.elements[n],e=t.attributes[n]||{};n=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:i[n]).reduce(function(n,t){return n[t]="",n},{});r(f)&&u(f)&&(Object.assign(f.style,n),Object.keys(e).forEach(function(n){f.removeAttribute(n)}))})}},requires:["computeStyles"]},ui={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(n){var t=n.state,u=n.name,r=void 0===(n=n.options.offset)?[0,0]:n,i=(n=ii.reduce(function(n,i){var e=t.rects,o=f(i),s=0<=["left","top"].indexOf(o)?-1:1,u="function"==typeof r?r(Object.assign({},e,{placement:i})):r;return e=(e=u[0])||0,u=((u=u[1])||0)*s,o=0<=["left","right"].indexOf(o)?{x:u,y:e}:{x:e,y:u},n[i]=o,n},{}))[t.placement],e=i.x;i=i.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=e,t.modifiersData.popperOffsets.y+=i);t.modifiersData[u]=n}},wi={left:"right",right:"left",bottom:"top",top:"bottom"},bi={start:"end",end:"start"},fi={name:"flip",enabled:!0,phase:"main",fn:function(n){var i=n.state,t=n.options,u,r,l,d,a,p;if(n=n.name,!i.modifiersData[n]._skip){u=t.mainAxis;u=void 0===u||u;r=t.altAxis;r=void 0===r||r;var h=t.fallbackPlacements,nt=t.padding,tt=t.boundary,it=t.rootBoundary,ut=t.altBoundary,e=t.flipVariations,k=void 0===e||e,ft=t.allowedAutoPlacements;for(e=f(t=i.options.placement),h=h||(e!==t&&k?function(n){if("auto"===f(n))return[];var t=w(n);return[dt(n),t,dt(t)]}(t):[w(t)]),l=[t].concat(h).reduce(function(n,t){return n.concat("auto"===f(t)?function(n,t){var r;void 0===t&&(t={});var o=t.boundary,s=t.rootBoundary,h=t.padding,i=t.flipVariations,u=t.allowedAutoPlacements,l=void 0===u?ii:u,e=t.placement.split("-")[1];return 0===(i=(t=e?i?ti:ti.filter(function(n){return n.split("-")[1]===e}):y).filter(function(n){return 0<=l.indexOf(n)})).length&&(i=t),r=i.reduce(function(t,i){return t[i]=c(n,{placement:i,boundary:o,rootBoundary:s,padding:h})[f(i)],t},{}),Object.keys(r).sort(function(n,t){return r[n]-r[t]})}(i,{placement:t,boundary:tt,rootBoundary:it,padding:nt,flipVariations:k,allowedAutoPlacements:ft}):t)},[]),t=i.rects.reference,h=i.rects.popper,d=new Map,e=!0,a=l[0],p=0;ph[b]&&(o=w(o)),b=w(o),s=[],u&&s.push(0>=g[rt]),r&&s.push(0>=g[o],0>=g[b]),s.every(function(n){return n})){a=v;e=!1;break}d.set(v,s)}if(e)for(u=function(n){var t=l.find(function(t){if(t=d.get(t))return t.slice(0,n).every(function(n){return n})});if(t)return a=t,"break"},r=k?3:1;0-1}function tt(n,t){return"function"==typeof n?n.apply(void 0,t):n}function it(n,t){return 0===t?n:function(r){clearTimeout(i);i=setTimeout(function(){n(r)},t)};var i}function rt(n,t){var i=Object.assign({},n);return t.forEach(function(n){delete i[n]}),i}function e(n){return[].concat(n)}function ut(n,t){-1===n.indexOf(t)&&n.push(t)}function ft(n){return n.split("-")[0]}function o(n){return[].slice.call(n)}function f(){return document.createElement("div")}function h(n){return["Element","Fragment"].some(function(t){return y(n,t)})}function p(n){return y(n,"MouseEvent")}function et(n){return!(!n||!n._tippy||n._tippy.reference!==n)}function dt(n){return h(n)?[n]:function(n){return y(n,"NodeList")}(n)?o(n):Array.isArray(n)?n:o(document.querySelectorAll(n))}function w(n,t){n.forEach(function(n){n&&(n.style.transitionDuration=t+"ms")})}function s(n,t){n.forEach(function(n){n&&n.setAttribute("data-state",t)})}function ot(n){var i,t=e(n)[0];return(null==t||null==(i=t.ownerDocument)?void 0:i.body)?t.ownerDocument:document}function b(n,t,i){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(t){n[r](t,i)})}function gt(){r.isTouch||(r.isTouch=!0,window.performance&&document.addEventListener("mousemove",ht))}function ht(){var n=performance.now();n-st<20&&(r.isTouch=!1,document.removeEventListener("mousemove",ht));st=n}function ni(){var n=document.activeElement,t;et(n)&&(t=n._tippy,n.blur&&!t.state.isVisible&&n.blur())}function ct(n){var t=(n.plugins||[]).reduce(function(t,i){var r=i.name,u=i.defaultValue;return r&&(t[r]=void 0!==n[r]?n[r]:u),t},{});return Object.assign({},n,{},t)}function lt(n,i){var r=Object.assign({},i,{content:tt(i.content,[n])},i.ignoreAttributes?{}:function(n,i){return(i?Object.keys(ct(Object.assign({},t,{plugins:i}))):ti).reduce(function(t,i){var r=(n.getAttribute("data-tippy-"+i)||"").trim();if(!r)return t;if("content"===i)t[i]=r;else try{t[i]=JSON.parse(r)}catch(n){t[i]=r}return t},{})}(n,i.plugins));return r.aria=Object.assign({},t.aria,{},r.aria),r.aria={expanded:"auto"===r.aria.expanded?i.interactive:r.aria.expanded,content:"auto"===r.aria.content?i.interactive?null:"describedby":r.aria.content},r}function k(n,t){n.innerHTML=t}function at(n){var t=f();return!0===n?t.className="tippy-arrow":(t.className="tippy-svg-arrow",h(n)?t.appendChild(n):k(t,n)),t}function vt(n,t){h(t.content)?(k(n,""),n.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?k(n,t.content):n.textContent=t.content)}function c(n){var i=n.firstElementChild,t=o(i.children);return{box:i,content:t.find(function(n){return n.classList.contains("tippy-content")}),arrow:t.find(function(n){return n.classList.contains("tippy-arrow")||n.classList.contains("tippy-svg-arrow")}),backdrop:t.find(function(n){return n.classList.contains("tippy-backdrop")})}}function yt(n){function u(t,i){var e=c(r),u=e.box,o=e.content,f=e.arrow;i.theme?u.setAttribute("data-theme",i.theme):u.removeAttribute("data-theme");"string"==typeof i.animation?u.setAttribute("data-animation",i.animation):u.removeAttribute("data-animation");i.inertia?u.setAttribute("data-inertia",""):u.removeAttribute("data-inertia");u.style.maxWidth="number"==typeof i.maxWidth?i.maxWidth+"px":i.maxWidth;i.role?u.setAttribute("role",i.role):u.removeAttribute("role");t.content===i.content&&t.allowHTML===i.allowHTML||vt(o,n.props);i.arrow?f?t.arrow!==i.arrow&&(u.removeChild(f),u.appendChild(at(i.arrow))):u.appendChild(at(i.arrow)):f&&u.removeChild(f)}var r=f(),t=f(),i;return t.className="tippy-box",t.setAttribute("data-state","hidden"),t.setAttribute("tabindex","-1"),i=f(),i.className="tippy-content",i.setAttribute("data-state","hidden"),vt(i,n.props),r.appendChild(t),t.appendChild(i),u(n.props,n.props),{popper:r,onUpdate:u}}function ri(i,h){function gi(){var n=y.props.touch;return Array.isArray(n)?n:[n,0]}function nr(){return"hold"===gi()[0]}function g(){var n;return!!(null==(n=y.props.render)?void 0:n.$$tippy)}function rt(){return vi||i}function at(){var n=rt().parentNode;return n?ot(n):document}function vt(){return c(k)}function tr(n){return y.state.isMounted&&!y.state.isVisible||r.isTouch||wt&&"focus"===wt.type?0:v(y.props.delay,n?0:1,t.delay)}function bt(){k.style.pointerEvents=y.props.interactive&&y.state.isVisible?"":"none";k.style.zIndex=""+y.props.zIndex}function d(n,t,i){var r;(void 0===i&&(i=!0),ki.forEach(function(i){i[n]&&i[n].apply(void 0,t)}),i)&&(r=y.props)[n].apply(r,t)}function ir(){var r=y.props.aria,n,t;r.content&&(n="aria-"+r.content,t=k.id,e(y.props.triggerTarget||i).forEach(function(i){var r=i.getAttribute(n),u;y.state.isVisible?i.setAttribute(n,r?r+" "+t:t):(u=r&&r.replace(t,"").trim(),u?i.setAttribute(n,u):i.removeAttribute(n))}))}function yt(){!di&&y.props.aria.expanded&&e(y.props.triggerTarget||i).forEach(function(n){y.props.interactive?n.setAttribute("aria-expanded",y.state.isVisible&&n===rt()?"true":"false"):n.removeAttribute("aria-expanded")})}function fi(){at().removeEventListener("mousemove",nt);l=l.filter(function(n){return n!==nt})}function dt(n){if(!(r.isTouch&&(ti||"mousedown"===n.type)||y.props.interactive&&k.contains(n.target))){if(rt().contains(n.target)){if(r.isTouch)return;if(y.state.isVisible&&y.props.trigger.indexOf("click")>=0)return}else d("onClickOutside",[y,n]);!0===y.props.hideOnClick&&(y.clearDelayTimeouts(),y.hide(),ni=!0,setTimeout(function(){ni=!1}),y.state.isMounted||ei())}}function rr(){ti=!0}function ur(){ti=!1}function fr(){var n=at();n.addEventListener("mousedown",dt,!0);n.addEventListener("touchend",dt,u);n.addEventListener("touchstart",ur,u);n.addEventListener("touchmove",rr,u)}function ei(){var n=at();n.removeEventListener("mousedown",dt,!0);n.removeEventListener("touchend",dt,u);n.removeEventListener("touchstart",ur,u);n.removeEventListener("touchmove",rr,u)}function er(n,t){function r(n){n.target===i&&(b(i,"remove",r),t())}var i=vt().box;if(0===n)return t();b(i,"remove",li);b(i,"add",r);li=r}function st(n,t,r){void 0===r&&(r=!1);e(y.props.triggerTarget||i).forEach(function(i){i.addEventListener(n,t,r);ui.push({node:i,eventType:n,handler:t,options:r})})}function or(){var n;nr()&&(st("touchstart",hr,{passive:!0}),st("touchend",lr,{passive:!0}));(n=y.props.trigger,n.split(/\s+/).filter(Boolean)).forEach(function(n){if("manual"!==n)switch(st(n,hr),n){case"mouseenter":st("mouseleave",lr);break;case"focus":st(kt?"focusout":"blur",ar);break;case"focusin":st("focusout",ar)}})}function sr(){ui.forEach(function(n){var t=n.node,i=n.eventType,r=n.handler,u=n.options;t.removeEventListener(i,r,u)});ui=[]}function hr(n){var i,t=!1,r;!y.state.isEnabled||vr(n)||ni||(r="focus"===(null==(i=wt)?void 0:i.type),wt=n,vi=n.currentTarget,yt(),!y.state.isVisible&&p(n)&&l.forEach(function(t){return t(n)}),"click"===n.type&&(y.props.trigger.indexOf("mouseenter")<0||ht)&&!1!==y.props.hideOnClick&&y.state.isVisible?t=!0:wr(n),"click"===n.type&&(ht=!t),t&&!r&>(n))}function cr(n){var t=n.target,i=rt().contains(t)||k.contains(t);"mousemove"===n.type&&i||function(n,t){var i=t.clientX,r=t.clientY;return n.every(function(n){var u=n.popperRect,o=n.popperState,f=n.props.interactiveBorder,e=ft(o.placement),t=o.modifiersData.offset;if(!t)return!0;var s="bottom"===e?t.top.y:0,h="top"===e?t.bottom.y:0,c="right"===e?t.left.x:0,l="left"===e?t.right.x:0,a=u.top-r+s>f,v=r-u.bottom-h>f,y=u.left-i+c>f,p=i-u.right-l>f;return a||v||y||p})}(oi().concat(k).map(function(n){var t,i=null==(t=n._tippy.popperInstance)?void 0:t.state;return i?{popperRect:n.getBoundingClientRect(),popperState:i,props:et}:null}).filter(Boolean),n)&&(fi(),gt(n))}function lr(n){vr(n)||y.props.trigger.indexOf("click")>=0&&ht||(y.props.interactive?y.hideWithInteractivity(n):gt(n))}function ar(n){y.props.trigger.indexOf("focusin")<0&&n.target!==rt()||y.props.interactive&&n.relatedTarget&&k.contains(n.relatedTarget)||gt(n)}function vr(n){return!!r.isTouch&&nr()!==n.type.indexOf("touch")>=0}function yr(){pr();var t=y.props,u=t.popperOptions,o=t.placement,s=t.offset,f=t.getReferenceClientRect,h=t.moveTransition,e=g()?c(k).arrow:null,l=f?{getBoundingClientRect:f,contextElement:f.contextElement||rt()}:i,r=[{name:"offset",options:{offset:s}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!h}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(n){var i=n.state,t;g()&&(t=vt().box,["placement","reference-hidden","escaped"].forEach(function(n){"placement"===n?t.setAttribute("data-placement",i.placement):i.attributes.popper["data-popper-"+n]?t.setAttribute("data-"+n,""):t.removeAttribute("data-"+n)}),i.attributes.popper={})}}];g()&&e&&r.push({name:"arrow",options:{element:e,padding:3}});r.push.apply(r,(null==u?void 0:u.modifiers)||[]);y.popperInstance=n.createPopper(l,k,Object.assign({},u,{placement:o,onFirstUpdate:ai,modifiers:r}))}function pr(){y.popperInstance&&(y.popperInstance.destroy(),y.popperInstance=null)}function oi(){return o(k.querySelectorAll("[data-tippy-root]"))}function wr(n){y.clearDelayTimeouts();n&&d("onTrigger",[y,n]);fr();var t=tr(!0),i=gi(),f=i[0],u=i[1];r.isTouch&&"hold"===f&&u&&(t=u);t?si=setTimeout(function(){y.show()},t):y.show()}function gt(n){if(y.clearDelayTimeouts(),d("onUntrigger",[y,n]),y.state.isVisible){if(!(y.props.trigger.indexOf("mouseenter")>=0&&y.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(n.type)>=0&&ht)){var t=tr(!1);t?hi=setTimeout(function(){y.state.isVisible&&y.hide()},t):ci=requestAnimationFrame(function(){y.hide()})}}else ei()}var pt,si,hi,ci,wt,li,ai,vi,yi,et=lt(i,Object.assign({},t,{},ct((pt=h,Object.keys(pt).reduce(function(n,t){return void 0!==pt[t]&&(n[t]=pt[t]),n},{}))))),ht=!1,ni=!1,ti=!1,ri=!1,ui=[],nt=it(cr,et.interactiveDebounce),br=ii++,pi=(yi=et.plugins).filter(function(n,t){return yi.indexOf(n)===t}),y={id:br,reference:i,popper:f(),popperInstance:null,props:et,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:pi,clearDelayTimeouts:function(){clearTimeout(si);clearTimeout(hi);cancelAnimationFrame(ci)},setProps:function(n){if(!y.state.isDestroyed){d("onBeforeUpdate",[y,n]);sr();var r=y.props,t=lt(i,Object.assign({},y.props,{},n,{ignoreAttributes:!0}));y.props=t;or();r.interactiveDebounce!==t.interactiveDebounce&&(fi(),nt=it(cr,t.interactiveDebounce));r.triggerTarget&&!t.triggerTarget?e(r.triggerTarget).forEach(function(n){n.removeAttribute("aria-expanded")}):t.triggerTarget&&i.removeAttribute("aria-expanded");yt();bt();bi&&bi(r,t);y.popperInstance&&(yr(),oi().forEach(function(n){requestAnimationFrame(n._tippy.popperInstance.forceUpdate)}));d("onAfterUpdate",[y,n])}},setContent:function(n){y.setProps({content:n})},show:function(){var u=y.state.isVisible,f=y.state.isDestroyed,e=!y.state.isEnabled,o=r.isTouch&&!y.props.touch,n=v(y.props.duration,0,t.duration);if(!u&&!f&&!e&&!o&&!rt().hasAttribute("disabled")&&(d("onShow",[y],!1),!1!==y.props.onShow(y))){if(y.state.isVisible=!0,g()&&(k.style.visibility="visible"),bt(),fr(),y.state.isMounted||(k.style.transition="none"),g()){var i=vt(),h=i.box,c=i.content;w([h,c],0)}ai=function(){var t;if(y.state.isVisible&&!ri){if(ri=!0,k.offsetHeight,k.style.transition=y.props.moveTransition,g()&&y.props.animation){var i=vt(),r=i.box,u=i.content;w([r,u],n);s([r,u],"visible")}ir();yt();ut(a,y);null==(t=y.popperInstance)||t.forceUpdate();y.state.isMounted=!0;d("onMount",[y]);y.props.animation&&g()&&function(n,t){er(n,t)}(n,function(){y.state.isShown=!0;d("onShown",[y])})}},function(){var n,i=y.props.appendTo,r=rt();n=y.props.interactive&&i===t.appendTo||"parent"===i?r.parentNode:tt(i,[r]);n.contains(k)||n.appendChild(k);yr()}()}},hide:function(){var f=!y.state.isVisible,e=y.state.isDestroyed,o=!y.state.isEnabled,n=v(y.props.duration,1,t.duration);if(!f&&!e&&!o&&(d("onHide",[y],!1),!1!==y.props.onHide(y))){if(y.state.isVisible=!1,y.state.isShown=!1,ri=!1,ht=!1,g()&&(k.style.visibility="hidden"),fi(),ei(),bt(),g()){var i=vt(),r=i.box,u=i.content;y.props.animation&&(w([r,u],n),s([r,u],"hidden"))}ir();yt();y.props.animation?g()&&function(n,t){er(n,function(){!y.state.isVisible&&k.parentNode&&k.parentNode.contains(k)&&t()})}(n,y.unmount):y.unmount()}},hideWithInteractivity:function(n){at().addEventListener("mousemove",nt);ut(l,nt);nt(n)},enable:function(){y.state.isEnabled=!0},disable:function(){y.hide();y.state.isEnabled=!1},unmount:function(){(y.state.isVisible&&y.hide(),y.state.isMounted)&&(pr(),oi().forEach(function(n){n._tippy.unmount()}),k.parentNode&&k.parentNode.removeChild(k),a=a.filter(function(n){return n!==y}),y.state.isMounted=!1,d("onHidden",[y]))},destroy:function(){y.state.isDestroyed||(y.clearDelayTimeouts(),y.unmount(),sr(),delete i._tippy,y.state.isDestroyed=!0,d("onDestroy",[y]))}},ki,di;if(!et.render)return y;var wi=et.render(y),k=wi.popper,bi=wi.onUpdate;return k.setAttribute("data-tippy-root",""),k.id="tippy-"+y.id,y.popper=k,i._tippy=y,k._tippy=y,ki=pi.map(function(n){return n.fn(y)}),di=i.hasAttribute("aria-expanded"),or(),yt(),bt(),d("onCreate",[y]),et.showOnCreate&&wr(),k.addEventListener("mouseenter",function(){y.props.interactive&&y.state.isVisible&&y.clearDelayTimeouts()}),k.addEventListener("mouseleave",function(n){y.props.interactive&&y.props.trigger.indexOf("mouseenter")>=0&&(at().addEventListener("mousemove",nt),nt(n))}),y}function i(n,i){var f,e,r;return void 0===i&&(i={}),f=t.plugins.concat(i.plugins||[]),document.addEventListener("touchstart",gt,u),window.addEventListener("blur",ni),e=Object.assign({},i,{plugins:f}),r=dt(n).reduce(function(n,t){var i=t&&ri(t,e);return i&&n.push(i),n},[]),h(n)?r[0]:r}function pt(n){var t=n.clientX,i=n.clientY;d={clientX:t,clientY:i}}function wt(n,t){return!n||!t||n.top!==t.top||n.right!==t.right||n.bottom!==t.bottom||n.left!==t.left}var nt="undefined"!=typeof window&&"undefined"!=typeof document,bt=nt?navigator.userAgent:"",kt=/MSIE |Trident\//.test(bt),u={passive:!0,capture:!0},r={isTouch:!1},st=0,t=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),ti=Object.keys(t);yt.$$tippy=!0;var ii=1,l=[],a=[];i.defaultProps=t;i.setDefaultProps=function(n){Object.keys(n).forEach(function(i){t[i]=n[i]})};i.currentInput=r;var ui=Object.assign({},n.applyStyles,{effect:function(n){var t=n.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,i.popper);t.styles=i;t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow)}}),fi={mouseover:"mouseenter",focusin:"focus",click:"click"},ei={name:"animateFill",defaultValue:!1,fn:function(n){var r;if(!(null==(r=n.props.render)?void 0:r.$$tippy))return{};var u=c(n.popper),i=u.box,e=u.content,t=n.props.animateFill?function(){var n=f();return n.className="tippy-backdrop",s([n],"hidden"),n}():null;return{onCreate:function(){t&&(i.insertBefore(t,i.firstElementChild),i.setAttribute("data-animatefill",""),i.style.overflow="hidden",n.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(t){var n=i.style.transitionDuration,r=Number(n.replace("ms",""));e.style.transitionDelay=Math.round(r/10)+"ms";t.style.transitionDuration=n;s([t],"visible")}},onShow:function(){t&&(t.style.transitionDuration="0ms")},onHide:function(){t&&s([t],"hidden")}}}},d={clientX:0,clientY:0},g=[];var oi={name:"followCursor",defaultValue:!1,fn:function(n){function s(){return"initial"===n.props.followCursor&&n.state.isVisible}function h(){t.addEventListener("mousemove",e)}function c(){t.removeEventListener("mousemove",e)}function l(){r=!0;n.setProps({getReferenceClientRect:null});r=!1}function e(t){var o=!t.target||i.contains(t.target),r=n.props.followCursor,u=t.clientX,f=t.clientY,e=i.getBoundingClientRect(),s=u-e.left,h=f-e.top;!o&&n.props.interactive||n.setProps({getReferenceClientRect:function(){var n=i.getBoundingClientRect(),t=u,e=f;"initial"===r&&(t=n.left+s,e=n.top+h);var o="horizontal"===r?n.top:e,c="vertical"===r?n.right:t,l="horizontal"===r?n.bottom:e,a="vertical"===r?n.left:t;return{width:c-a,height:l-o,top:o,right:c,bottom:l,left:a}}})}function a(){n.props.followCursor&&(g.push({instance:n,doc:t}),function(n){n.addEventListener("mousemove",pt)}(t))}function v(){0===(g=g.filter(function(t){return t.instance!==n})).filter(function(n){return n.doc===t}).length&&function(n){n.removeEventListener("mousemove",pt)}(t)}var i=n.reference,t=ot(n.props.triggerTarget||i),r=!1,u=!1,f=!0,o=n.props;return{onCreate:a,onDestroy:v,onBeforeUpdate:function(){o=n.props},onAfterUpdate:function(t,i){var f=i.followCursor;r||void 0!==f&&o.followCursor!==f&&(v(),f?(a(),!n.state.isMounted||u||s()||h()):(c(),l()))},onMount:function(){n.props.followCursor&&!u&&(f&&(e(d),f=!1),s()||h())},onTrigger:function(n,t){p(t)&&(d={clientX:t.clientX,clientY:t.clientY});u="focus"===t.type},onHidden:function(){n.props.followCursor&&(l(),c(),f=!0)}}}},si={name:"inlinePositioning",defaultValue:!1,fn:function(n){function f(){var t;i||(t=function(n,t){var i;return{popperOptions:Object.assign({},n.popperOptions,{modifiers:[].concat(((null==(i=n.popperOptions)?void 0:i.modifiers)||[]).filter(function(n){return n.name!==t.name}),[t])})}}(n.props,e),i=!0,n.setProps(t),i=!1)}var r,u=n.reference,t=-1,i=!1,e={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(i){var f=i.state;n.props.inlinePositioning&&(r!==f.placement&&n.setProps({getReferenceClientRect:function(){return function(n){return function(n,t,i,r){if(i.length<2||null===n)return t;if(2===i.length&&r>=0&&i[0].left>i[1].right)return i[r]||t;switch(n){case"top":case"bottom":var u=i[0],f=i[i.length-1],h="top"===n,c=u.top,l=f.bottom,a=h?u.left:f.left,v=h?u.right:f.right;return{top:c,bottom:l,left:a,right:v,width:v-a,height:l-c};case"left":case"right":var e=Math.min.apply(Math,i.map(function(n){return n.left})),o=Math.max.apply(Math,i.map(function(n){return n.right})),s=i.filter(function(t){return"left"===n?t.left===e:t.right===o}),y=s[0].top,p=s[s.length-1].bottom;return{top:y,bottom:p,left:e,right:o,width:o-e,height:p-y};default:return t}}(ft(n),u.getBoundingClientRect(),o(u.getClientRects()),t)}(f.placement)}}),r=f.placement)}};return{onCreate:f,onAfterUpdate:f,onTrigger:function(i,r){if(p(r)){var u=o(n.reference.getClientRects()),f=u.find(function(n){return n.left-2<=r.clientX&&n.right+2>=r.clientX&&n.top-2<=r.clientY&&n.bottom+2>=r.clientY});t=u.indexOf(f)}},onUntrigger:function(){t=-1}}}},hi={name:"sticky",defaultValue:!1,fn:function(n){function t(t){return!0===n.props.sticky||n.props.sticky===t}function u(){var o=t("reference")?(n.popperInstance?n.popperInstance.state.elements.reference:f).getBoundingClientRect():null,s=t("popper")?e.getBoundingClientRect():null;(o&&wt(i,o)||s&&wt(r,s))&&n.popperInstance&&n.popperInstance.update();i=o;r=s;n.state.isMounted&&requestAnimationFrame(u)}var f=n.reference,e=n.popper,i=null,r=null;return{onMount:function(){n.props.sticky&&u()}}}};return nt&&function(n){var t=document.createElement("style"),i,r;t.textContent=n;t.setAttribute("data-tippy-stylesheet","");i=document.head;r=document.querySelector("head>style,head>link");r?i.insertBefore(t,r):i.appendChild(t)}('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'),i.setDefaultProps({plugins:[ei,oi,si,hi],render:yt}),i.createSingleton=function(n,t){function y(){u=o.map(function(n){return n.reference})}function c(n){o.forEach(function(t){n?t.enable():t.disable()})}function p(n){return o.map(function(t){var i=t.setProps;return t.setProps=function(r){i(r);t.reference===e&&n.setProps(r)},function(){t.setProps=i}})}function s(n,t){var r=u.indexOf(t),i;t!==e&&(e=t,i=(l||[]).concat("content").reduce(function(n,t){return n[t]=o[r].props[t],n},{}),n.setProps(Object.assign({},i,{getReferenceClientRect:"function"==typeof i.getReferenceClientRect?i.getReferenceClientRect:function(){return t.getBoundingClientRect()}})))}var a,w;void 0===t&&(t={});var e,o=n,u=[],l=t.overrides,v=[],h=!1;c(!1);y();var b={fn:function(){return{onDestroy:function(){c(!0)},onHidden:function(){e=null},onClickOutside:function(n){n.props.showOnCreate&&!h&&(h=!0,e=null)},onShow:function(n){n.props.showOnCreate&&!h&&(h=!0,s(n,u[0]))},onTrigger:function(n,t){s(n,t.currentTarget)}}}},r=i(f(),Object.assign({},rt(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:u,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(a=t.popperOptions)?void 0:a.modifiers)||[],[ui])})})),k=r.show;return r.show=function(n){if(k(),!e&&null==n)return s(r,u[0]);if(!e||null!=n){if("number"==typeof n)return u[n]&&s(r,u[n]);if(o.includes(n)){var t=n.reference;return s(r,t)}return u.includes(n)?s(r,n):void 0}},r.showNext=function(){var t=u[0],n;if(!e)return r.show(0);n=u.indexOf(e);r.show(u[n+1]||t)},r.showPrevious=function(){var n=u[u.length-1],t,i;if(!e)return r.show(n);t=u.indexOf(e);i=u[t-1]||n;r.show(i)},w=r.setProps,r.setProps=function(n){l=n.overrides||l;w(n)},r.setInstances=function(n){c(!0);v.forEach(function(n){return n()});o=n;c(!1);y();p(r);r.setProps({triggerTarget:u})},v=p(r),r},i.delegate=function(n,r){function o(n){var u,o,e;n.target&&!c&&(u=n.target.closest(y),u&&(o=u.getAttribute("data-tippy-trigger")||r.trigger||t.trigger,u._tippy||"touchstart"===n.type&&"boolean"==typeof a.touch||"touchstart"!==n.type&&o.indexOf(fi[n.type])<0||(e=i(u,a),e&&(f=f.concat(e)))))}function s(n,t,i,r){void 0===r&&(r=!1);n.addEventListener(t,i,r);h.push({node:n,eventType:t,handler:i,options:r})}var h=[],f=[],c=!1,y=r.target,l=rt(r,["target"]),p=Object.assign({},l,{trigger:"manual",touch:!1}),a=Object.assign({},l,{showOnCreate:!0}),v=i(n,p);return e(v).forEach(function(n){var t=n.destroy,i=n.enable,r=n.disable;n.destroy=function(n){void 0===n&&(n=!0);n&&f.forEach(function(n){n.destroy()});f=[];h.forEach(function(n){var t=n.node,i=n.eventType,r=n.handler,u=n.options;t.removeEventListener(i,r,u)});h=[];t()};n.enable=function(){i();f.forEach(function(n){return n.enable()});c=!1};n.disable=function(){r();f.forEach(function(n){return n.disable()});c=!0},function(n){var t=n.reference;s(t,"touchstart",o,u);s(t,"mouseover",o);s(t,"focusin",o);s(t,"click",o)}(n)}),v},i.hideAll=function(n){var i=void 0===n?{}:n,t=i.exclude,r=i.duration;a.forEach(function(n){var i=!1,u;(t&&(i=et(t)?n.reference===t:n.popper===t.popper),i)||(u=n.props.duration,n.setProps({duration:r}),n.hide(),n.state.isDestroyed||n.setProps({duration:u}))})},i.roundArrow='<\/svg>',i});!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n="undefined"!=typeof globalThis?globalThis:n||self).flatpickr=t()}(this,function(){"use strict";function nt(){for(var t,i,u=0,n=0,f=arguments.length;n=0?new Date:new Date(b.config.minDate.getTime()),i=g(b.config),t.setHours(i.hours,i.minutes,i.seconds,t.getMilliseconds()),b.selectedDates=[t],b.latestSelectedDateObj=t);void 0!==n&&"blur"!==n.type&&function(n){var r,c;n.preventDefault();var v="keydown"===n.type,l=f(n),t=l;void 0!==b.amPM&&l===b.amPM&&(b.amPM.textContent=b.l10n.amPM[o(b.amPM.textContent===b.l10n.amPM[0])]);var a=parseFloat(t.getAttribute("min")),e=parseFloat(t.getAttribute("max")),s=parseFloat(t.getAttribute("step")),h=parseInt(t.value,10),y=n.delta||(v?38===n.which?1:-1:0),i=h+s*y;void 0!==t.value&&2===t.value.length&&(r=t===b.hourElement,c=t===b.minuteElement,ie&&(i=t===b.hourElement?i-e-o(!b.amPM):a,c&&ui(void 0,1,b.hourElement)),b.amPM&&r&&(1===s?i+h===23:Math.abs(i-h)>s)&&(b.amPM.textContent=b.l10n.amPM[o(b.amPM.textContent===b.l10n.amPM[0])]),t.value=u(i))}(n);r=b._input.value;yt();ot();b._input.value!==r&&b._debouncedChange()}function yt(){var h,r,i;if(void 0!==b.hourElement&&void 0!==b.minuteElement){var f,s,n=(parseInt(b.hourElement.value.slice(-2),10)||0)%24,t=(parseInt(b.minuteElement.value,10)||0)%60,u=void 0!==b.secondElement?(parseInt(b.secondElement.value,10)||0)%60:0;void 0!==b.amPM&&(f=n,s=b.amPM.textContent,n=f%12+12*o(s===b.l10n.amPM[1]));h=void 0!==b.config.minTime||b.config.minDate&&b.minDateHasTime&&b.latestSelectedDateObj&&0===e(b.latestSelectedDateObj,b.config.minDate,!0);(void 0!==b.config.maxTime||b.config.maxDate&&b.maxDateHasTime&&b.latestSelectedDateObj&&0===e(b.latestSelectedDateObj,b.config.maxDate,!0))&&(r=void 0!==b.config.maxTime?b.config.maxTime:b.config.maxDate,(n=Math.min(n,r.getHours()))===r.getHours()&&(t=Math.min(t,r.getMinutes())),t===r.getMinutes()&&(u=Math.min(u,r.getSeconds())));h&&(i=void 0!==b.config.minTime?b.config.minTime:b.config.minDate,(n=Math.max(n,i.getHours()))===i.getHours()&&t=12)]),void 0!==b.secondElement&&(b.secondElement.value=u(i)))}function fr(n){var i=f(n),t=parseInt(i.value)+(n.delta||0);(t/1e3>1||"Enter"===n.key&&!/[^\d]/.test(t.toString()))&&dt(t)}function ut(n,t,i,r){return t instanceof Array?t.forEach(function(t){return ut(n,t,i,r)}):n instanceof Array?n.forEach(function(n){return ut(n,t,i,r)}):(n.addEventListener(t,i,r),void b._handlers.push({remove:function(){return n.removeEventListener(t,i)}}))}function ri(){et("onChange")}function wt(n,t){var i=void 0!==n?b.parseDate(n):b.latestSelectedDateObj||(b.config.minDate&&b.config.minDate>b.now?b.config.minDate:b.config.maxDate&&b.config.maxDate=0&&e(n,b.selectedDates[1])<=0}(i)&&!ai(i)&&o.classList.add("inRange"),b.weekNumbers&&1===b.config.showMonths&&"prevMonthDay"!==t&&u%7==1&&b.weekNumbers.insertAdjacentHTML("beforeend",""+b.config.getWeek(i)+"<\/span>"),et("onDayCreate",o),o}function ei(n){n.focus();"range"===b.config.mode&&hi(n)}function bt(n){for(var t,f=n>0?0:b.config.showMonths-1,e=n>0?b.config.showMonths:-1,i=f;i!=e;i+=n)for(var r=b.daysContainer.children[i],o=n>0?0:r.children.length-1,s=n>0?r.children.length:-1,u=o;u!=s;u+=n)if(t=r.children[u],-1===t.className.indexOf("hidden")&&st(t.dateObj))return t}function at(n,t){var r=gt(document.activeElement||document.body),i=void 0!==n?n:r?document.activeElement:void 0!==b.selectedDateElem&>(b.selectedDateElem)?b.selectedDateElem:void 0!==b.todayDateElem&>(b.todayDateElem)?b.todayDateElem:bt(t>0?1:-1);void 0===i?b._input.focus():r?function(n,t){for(var f,o=-1===n.className.indexOf("Month")?n.dateObj.getMonth():b.currentMonth,h=t>0?b.config.showMonths:-1,r=t>0?1:-1,u=o-b.currentMonth;u!=h;u+=r)for(var e=b.daysContainer.children[u],c=o-b.currentMonth===u?n.$i+t:t<0?e.children.length-1:0,s=e.children.length,i=c;i>=0&&i0?s:-1);i+=r)if(f=e.children[i],-1===f.className.indexOf("hidden")&&st(f.dateObj)&&Math.abs(n.$i-i)>=Math.abs(t))return ei(f);b.changeMonth(r);at(bt(r),0)}(i,t):ei(i)}function or(t,i){for(var f,s,h=(new Date(t,i,1).getDay()-b.l10n.firstDayOfWeek+7)%7,c=b.utils.getDaysInMonth((i- -11)%12,t),o=b.utils.getDaysInMonth(i,t),e=window.document.createDocumentFragment(),l=b.config.showMonths>1,a=l?"prevMonthDay hidden":"prevMonthDay",v=l?"nextMonthDay hidden":"nextMonthDay",r=c+1-h,u=0;r<=c;r++,u++)e.appendChild(fi(a,new Date(t,i-1,r),r,u));for(r=1;r<=o;r++,u++)e.appendChild(fi("",new Date(t,i,r),r,u));for(f=o+1;f<=42-h&&(1===b.config.showMonths||u%7!=0);f++,u++)e.appendChild(fi(v,new Date(t,i+1,f%o),f,u));return s=n("div","dayContainer"),s.appendChild(e),s}function kt(){var i,n,t;if(void 0!==b.daysContainer){for(a(b.daysContainer),b.weekNumbers&&a(b.weekNumbers),i=document.createDocumentFragment(),n=0;n1||"dropdown"!==b.config.monthSelectorType))for(r=function(n){return!(void 0!==b.config.minDate&&b.currentYear===b.config.minDate.getFullYear()&&nb.config.maxDate.getMonth())},b.monthsDropdownContainer.tabIndex=-1,b.monthsDropdownContainer.innerHTML="",t=0;t<12;t++)r(t)&&(i=n("option","flatpickr-monthDropdown-month"),i.value=new Date(b.currentYear,t).getMonth().toString(),i.textContent=y(t,b.config.shorthandCurrentMonth,b.l10n),i.tabIndex=-1,b.currentMonth===t&&(i.selected=!0),b.monthsDropdownContainer.appendChild(i))}function sr(){var i,e=n("div","flatpickr-month"),o=window.document.createDocumentFragment(),u,t,r;return b.config.showMonths>1||"static"===b.config.monthSelectorType?i=n("span","cur-month"):(b.monthsDropdownContainer=n("select","flatpickr-monthDropdown-months"),b.monthsDropdownContainer.setAttribute("aria-label",b.l10n.monthAriaLabel),ut(b.monthsDropdownContainer,"change",function(n){var t=f(n),i=parseInt(t.value,10);b.changeMonth(i-b.currentMonth);et("onMonthChange")}),ct(),i=b.monthsDropdownContainer),u=v("cur-year",{tabindex:"-1"}),t=u.getElementsByTagName("input")[0],t.setAttribute("aria-label",b.l10n.yearAriaLabel),b.config.minDate&&t.setAttribute("min",b.config.minDate.getFullYear().toString()),b.config.maxDate&&(t.setAttribute("max",b.config.maxDate.getFullYear().toString()),t.disabled=!!b.config.minDate&&b.config.minDate.getFullYear()===b.config.maxDate.getFullYear()),r=n("div","flatpickr-current-month"),r.appendChild(i),r.appendChild(u),o.appendChild(r),e.appendChild(o),{container:e,yearElement:t,monthElement:i}}function pi(){var t,n;for(a(b.monthNav),b.monthNav.appendChild(b.prevMonthNav),b.config.showMonths&&(b.yearElements=[],b.monthElements=[]),t=b.config.showMonths;t--;)n=sr(),b.yearElements.push(n.yearElement),b.monthElements.push(n.monthElement),b.monthNav.appendChild(n.container);b.monthNav.appendChild(b.nextMonthNav)}function wi(){var t,i;for(b.weekdayContainer?a(b.weekdayContainer):b.weekdayContainer=n("div","flatpickr-weekdays"),t=b.config.showMonths;t--;)i=n("div","flatpickr-weekdaycontainer"),b.weekdayContainer.appendChild(i);return bi(),b.weekdayContainer}function bi(){var t,n,i;if(b.weekdayContainer)for(t=b.l10n.firstDayOfWeek,n=nt(b.l10n.weekdays.shorthand),t>0&&t\n "+n.join("<\/span>")+"\n <\/span>\n "}function oi(n,t){void 0===t&&(t=!0);var i=t?n:n-b.currentMonth;i<0&&!0===b._hidePrevMonthArrow||i>0&&!0===b._hideNextMonthArrow||(b.currentMonth+=i,(b.currentMonth<0||b.currentMonth>11)&&(b.currentYear+=b.currentMonth>11?1:-1,b.currentMonth=(b.currentMonth+12)%12,et("onYearChange"),ct()),kt(),et("onMonthChange"),ti())}function lt(n){return!(!b.config.appendTo||!b.config.appendTo.contains(n))||b.calendarContainer.contains(n)}function si(n){if(b.isOpen&&!b.config.inline){var t=f(n),r=lt(t),i=t===b.input||t===b.altInput||b.element.contains(t)||n.path&&n.path.indexOf&&(~n.path.indexOf(b.input)||~n.path.indexOf(b.altInput)),u="blur"===n.type?i&&n.relatedTarget&&!lt(n.relatedTarget):!i&&!r&&!lt(n.relatedTarget),e=!b.config.ignoredFocusElements.some(function(n){return n.contains(t)});u&&e&&(void 0!==b.timeContainer&&void 0!==b.minuteElement&&void 0!==b.hourElement&&""!==b.input.value&&void 0!==b.input.value&&ht(),b.close(),b.config&&"range"===b.config.mode&&1===b.selectedDates.length&&(b.clear(!1),b.redraw()))}}function dt(n){if(!(!n||b.config.minDate&&nb.config.maxDate.getFullYear())){var t=n,i=b.currentYear!==t;b.currentYear=t||b.currentYear;b.config.maxDate&&b.currentYear===b.config.maxDate.getFullYear()?b.currentMonth=Math.min(b.config.maxDate.getMonth(),b.currentMonth):b.config.minDate&&b.currentYear===b.config.minDate.getFullYear()&&(b.currentMonth=Math.max(b.config.minDate.getMonth(),b.currentMonth));i&&(b.redraw(),et("onYearChange"),ct())}}function st(n,t){var f,i,s;if(void 0===t&&(t=!0),i=b.parseDate(n,void 0,t),b.config.minDate&&i&&e(i,b.config.minDate,void 0!==t?t:!b.minDateHasTime)<0||b.config.maxDate&&i&&e(i,b.config.maxDate,void 0!==t?t:!b.maxDateHasTime)>0)return!1;if(!b.config.enable&&0===b.config.disable.length)return!0;if(void 0===i)return!1;for(var u=!!b.config.enable,h=null!==(f=b.config.enable)&&void 0!==f?f:b.config.disable,o=0,r=void 0;o=r.from.getTime()&&i.getTime()<=r.to.getTime())return u}return!u}function gt(n){return void 0!==b.daysContainer&&-1===n.className.indexOf("hidden")&&-1===n.className.indexOf("flatpickr-disabled")&&b.daysContainer.contains(n)}function hr(n){n.target===b._input&&(b.selectedDates.length>0||b._input.value.length>0)&&(!n.relatedTarget||!lt(n.relatedTarget))&&b.setDate(b._input.value,!0,n.target===b.altInput?b.config.altFormat:b.config.dateFormat)}function cr(n){var t=f(n),i=b.config.wrap?h.contains(t):t===b._input,u=b.config.allowInput,a=b.isOpen&&(!u||!i),v=b.config.inline&&i&&!u,r,o,e,s,c,l;if(13===n.keyCode&&i){if(u)return b.setDate(b._input.value,!0,t===b.altInput?b.config.altFormat:b.config.dateFormat),t.blur();b.open()}else if(lt(t)||a||v){r=!!b.timeContainer&&b.timeContainer.contains(t);switch(n.keyCode){case 13:r?(n.preventDefault(),ht(),ci()):tr(n);break;case 27:n.preventDefault();ci();break;case 8:case 46:i&&!b.config.allowInput&&(n.preventDefault(),b.clear());break;case 37:case 39:r||i?b.hourElement&&b.hourElement.focus():(n.preventDefault(),void 0!==b.daysContainer&&(!1===u||document.activeElement&>(document.activeElement)))&&(o=39===n.keyCode?1:-1,n.ctrlKey?(n.stopPropagation(),oi(o),at(bt(1),0)):at(void 0,o));break;case 38:case 40:n.preventDefault();e=40===n.keyCode?1:-1;b.daysContainer&&void 0!==t.$i||t===b.input||t===b.altInput?n.ctrlKey?(n.stopPropagation(),dt(b.currentYear-e),at(bt(1),0)):r||at(void 0,7*e):t===b.currentYearElement?dt(b.currentYear-e):b.config.enableTime&&(!r&&b.hourElement&&b.hourElement.focus(),ht(n),b._debouncedChange());break;case 9:r?(s=[b.hourElement,b.minuteElement,b.secondElement,b.amPM].concat(b.pluginElements).filter(function(n){return n}),c=s.indexOf(t),-1!==c&&(l=s[c+(n.shiftKey?-1:1)],n.preventDefault(),(l||b._input).focus())):!b.config.noCalendar&&b.daysContainer&&b.daysContainer.contains(t)&&n.shiftKey&&(n.preventDefault(),b._input.focus())}}if(void 0!==b.amPM&&t===b.amPM)switch(n.key){case b.l10n.amPM[0].charAt(0):case b.l10n.amPM[0].charAt(0).toLowerCase():b.amPM.textContent=b.l10n.amPM[0];yt();ot();break;case b.l10n.amPM[1].charAt(0):case b.l10n.amPM[1].charAt(0).toLowerCase():b.amPM.textContent=b.l10n.amPM[1];yt();ot()}(i||lt(t))&&et("onKeyDown",n)}function hi(n){var e;if(1===b.selectedDates.length&&(!n||n.classList.contains("flatpickr-day")&&!n.classList.contains("flatpickr-disabled"))){for(var u=n?n.dateObj.getTime():b.days.firstElementChild.dateObj.getTime(),i=b.parseDate(b.selectedDates[0],void 0,!0).getTime(),h=Math.min(u,b.selectedDates[0].getTime()),c=Math.max(u,b.selectedDates[0].getTime()),o=!1,f=0,r=0,t=h;th&&tf)?f=t:t>i&&(!r||t0&&s0&&s>r;return v?(e.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(n){e.classList.remove(n)}),"continue"):o&&!v?"continue":(["startRange","inRange","endRange","notAllowed"].forEach(function(n){e.classList.remove(n)}),void(void 0!==n&&(n.classList.add(u<=b.selectedDates[0].getTime()?"startRange":"endRange"),iu&&s===i&&e.classList.add("endRange"),s>=f&&(0===r||s<=r)&&(h=i,c=u,(a=s)>Math.min(h,c)&&a0||i.getMinutes()>0||i.getSeconds()>0);b.selectedDates&&(b.selectedDates=b.selectedDates.filter(function(n){return st(n)}),b.selectedDates.length||"min"!==n||pt(i),ot());b.daysContainer&&(nr(),void 0!==i?b.currentYearElement[n]=i.getFullYear().toString():b.currentYearElement.removeAttribute(n),b.currentYearElement.disabled=!!r&&void 0!==i&&r.getFullYear()===i.getFullYear())}}function di(){return b.config.wrap?h.querySelector("[data-input]"):h}function gi(){"object"!=typeof b.config.locale&&void 0===t.l10ns[b.config.locale]&&b.config.errorHandler(new Error("flatpickr: invalid locale "+b.config.locale));b.l10n=i(i({},t.l10ns.default),"object"==typeof b.config.locale?b.config.locale:"default"!==b.config.locale?t.l10ns[b.config.locale]:void 0);k.K="("+b.l10n.amPM[0]+"|"+b.l10n.amPM[1]+"|"+b.l10n.amPM[0].toLowerCase()+"|"+b.l10n.amPM[1].toLowerCase()+")";void 0===i(i({},l),JSON.parse(JSON.stringify(h.dataset||{}))).time_24hr&&void 0===t.defaultConfig.time_24hr&&(b.config.time_24hr=b.l10n.time_24hr);b.formatDate=rt(b);b.parseDate=d({config:b.config,l10n:b.l10n})}function ni(n){var f;if("function"!=typeof b.config.position){if(void 0!==b.calendarContainer){et("onPreCalendarPosition");var l=n||b._positionElement,e=Array.prototype.reduce.call(b.calendarContainer.children,function(n,t){return n+t.offsetHeight},0),i=b.calendarContainer.offsetWidth,o=b.config.position.split(" "),a=o[0],v=o.length>1?o[1]:null,t=l.getBoundingClientRect(),w=window.innerHeight-t.bottom,s="above"===a||"below"!==a&&we,k=window.pageYOffset+t.top+(s?-e-2:l.offsetHeight+2);if(r(b.calendarContainer,"arrowTop",!s),r(b.calendarContainer,"arrowBottom",s),!b.config.inline){var u=window.pageXOffset+t.left,h=!1,c=!1;"center"===v?(u-=(i-t.width)/2,h=!0):"right"===v&&(u-=i-t.width,c=!0);r(b.calendarContainer,"arrowLeft",!h&&!c);r(b.calendarContainer,"arrowCenter",h);r(b.calendarContainer,"arrowRight",c);var y=window.document.body.offsetWidth-(window.pageXOffset+t.right),p=u+i>window.document.body.offsetWidth,d=y+i>window.document.body.offsetWidth;if(r(b.calendarContainer,"rightMost",p),!b.config.static)if(b.calendarContainer.style.top=k+"px",p)if(d){if(f=function(){for(var i,r,n=null,t=0;tb.currentMonth+b.config.showMonths-1)&&"range"!==b.config.mode;(b.selectedDateElem=r,"single"===b.config.mode)?b.selectedDates=[t]:"multiple"===b.config.mode?(u=ai(t),u?b.selectedDates.splice(parseInt(u),1):b.selectedDates.push(t)):"range"===b.config.mode&&(2===b.selectedDates.length&&b.clear(!1,!1),b.latestSelectedDateObj=t,b.selectedDates.push(t),0!==e(t,b.selectedDates[0],!0)&&b.selectedDates.sort(function(n,t){return n.getTime()-t.getTime()}));(yt(),o)&&(s=b.currentYear!==t.getFullYear(),b.currentYear=t.getFullYear(),b.currentMonth=t.getMonth(),s&&(et("onYearChange"),ct()),et("onMonthChange"));(ti(),kt(),ot(),o||"range"===b.config.mode||1!==b.config.showMonths?void 0!==b.selectedDateElem&&void 0===b.hourElement&&b.selectedDateElem&&b.selectedDateElem.focus():ei(r),void 0!==b.hourElement&&void 0!==b.hourElement&&b.hourElement.focus(),b.config.closeOnSelect)&&(h="single"===b.config.mode&&!b.config.enableTime,c="range"===b.config.mode&&2===b.selectedDates.length&&!b.config.enableTime,(h||c)&&ci());ri()}}function ir(n,t){var i=[];if(n instanceof Array)i=n.map(function(n){return b.parseDate(n,t)});else if(n instanceof Date||"number"==typeof n)i=[b.parseDate(n,t)];else if("string"==typeof n)switch(b.config.mode){case"single":case"time":i=[b.parseDate(n,t)];break;case"multiple":i=n.split(b.config.conjunction).map(function(n){return b.parseDate(n,t)});break;case"range":i=n.split(b.l10n.rangeSeparator).map(function(n){return b.parseDate(n,t)})}else b.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(n)));b.selectedDates=b.config.allowInvalidPreload?i:i.filter(function(n){return n instanceof Date&&st(n,!1)});"range"===b.config.mode&&b.selectedDates.sort(function(n,t){return n.getTime()-t.getTime()})}function rr(n){return n.slice().map(function(n){return"string"==typeof n||"number"==typeof n||n instanceof Date?b.parseDate(n,void 0,!0):n&&"object"==typeof n&&n.from&&n.to?{from:b.parseDate(n.from,void 0),to:b.parseDate(n.to,void 0)}:n}).filter(function(n){return n})}function et(n,t){var i,r;if(void 0!==b.config){if(i=b.config[n],void 0!==i&&i.length>0)for(r=0;i[r]&&r1||"static"===b.config.monthSelectorType?b.monthElements[t].textContent=y(i.getMonth(),b.config.shorthandCurrentMonth,b.l10n)+" ":b.monthsDropdownContainer.value=i.getMonth().toString();n.value=i.getFullYear().toString()}),b._hidePrevMonthArrow=void 0!==b.config.minDate&&(b.currentYear===b.config.minDate.getFullYear()?b.currentMonth<=b.config.minDate.getMonth():b.currentYearb.config.maxDate.getMonth():b.currentYear>b.config.maxDate.getFullYear()))}function ur(n){return b.selectedDates.map(function(t){return b.formatDate(t,n)}).filter(function(n,t,i){return"range"!==b.config.mode||b.config.enableTime||i.indexOf(n)===t}).join("range"!==b.config.mode?b.config.conjunction:b.l10n.rangeSeparator)}function ot(n){void 0===n&&(n=!0);void 0!==b.mobileInput&&b.mobileFormatStr&&(b.mobileInput.value=void 0!==b.latestSelectedDateObj?b.formatDate(b.latestSelectedDateObj,b.mobileFormatStr):"");b.input.value=ur(b.config.dateFormat);void 0!==b.altInput&&(b.altInput.value=ur(b.config.altFormat));!1!==n&&et("onValueUpdate")}function ar(n){var t=f(n),i=b.prevMonthNav.contains(t),r=b.nextMonthNav.contains(t);i||r?oi(i?-1:1):b.yearElements.indexOf(t)>=0?t.select():t.classList.contains("arrowUp")?b.changeYear(b.currentYear+1):t.classList.contains("arrowDown")&&b.changeYear(b.currentYear-1)}var b={config:i(i({},s),t.defaultConfig),l10n:c},vt;return b.parseDate=d({config:b.config,l10n:b.l10n}),b._handlers=[],b.pluginElements=[],b.loadedPlugins=[],b._bind=ut,b._setHoursFromDate=pt,b._positionCalendar=ni,b.changeMonth=oi,b.changeYear=dt,b.clear=function(n,t){if(void 0===n&&(n=!0),void 0===t&&(t=!0),b.input.value="",void 0!==b.altInput&&(b.altInput.value=""),void 0!==b.mobileInput&&(b.mobileInput.value=""),b.selectedDates=[],b.latestSelectedDateObj=void 0,!0===t&&(b.currentYear=b._initialDate.getFullYear(),b.currentMonth=b._initialDate.getMonth()),!0===b.config.enableTime){var i=g(b.config),r=i.hours,u=i.minutes,f=i.seconds;ii(r,u,f)}b.redraw();n&&et("onChange")},b.close=function(){b.isOpen=!1;b.isMobile||(void 0!==b.calendarContainer&&b.calendarContainer.classList.remove("open"),void 0!==b._input&&b._input.classList.remove("active"));et("onClose")},b._createElement=n,b.destroy=function(){var t,n;for(void 0!==b.config&&et("onDestroy"),t=b._handlers.length;t--;)b._handlers[t].remove();if(b._handlers=[],b.mobileInput)b.mobileInput.parentNode&&b.mobileInput.parentNode.removeChild(b.mobileInput),b.mobileInput=void 0;else if(b.calendarContainer&&b.calendarContainer.parentNode)if(b.config.static&&b.calendarContainer.parentNode){if(n=b.calendarContainer.parentNode,n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else b.calendarContainer.parentNode.removeChild(b.calendarContainer);b.altInput&&(b.input.type="text",b.altInput.parentNode&&b.altInput.parentNode.removeChild(b.altInput),delete b.altInput);b.input&&(b.input.type=b.input._type,b.input.classList.remove("flatpickr-input"),b.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(n){try{delete b[n]}catch(n){}})},b.isEnabled=st,b.jumpToDate=wt,b.open=function(n,t){var i,r;if(void 0===t&&(t=b._positionElement),!0===b.isMobile)return n&&(n.preventDefault(),i=f(n),i&&i.blur()),void 0!==b.mobileInput&&(b.mobileInput.focus(),b.mobileInput.click()),void et("onOpen");b._input.disabled||b.config.inline||(r=b.isOpen,b.isOpen=!0,r||(b.calendarContainer.classList.add("open"),b._input.classList.add("active"),et("onOpen"),ni(t)),!0===b.config.enableTime&&!0===b.config.noCalendar&&(!1!==b.config.allowInput||void 0!==n&&b.timeContainer.contains(n.relatedTarget)||setTimeout(function(){return b.hourElement.select()},50)))},b.redraw=nr,b.set=function(n,t){if(null!==n&&"object"==typeof n)for(var i in Object.assign(b.config,n),n)void 0!==vt[i]&&vt[i].forEach(function(n){return n()});else b.config[n]=t,void 0!==vt[n]?vt[n].forEach(function(n){return n()}):p.indexOf(n)>-1&&(b.config[n]=w(t));b.redraw();ot(!0)},b.setDate=function(n,t,i){if(void 0===t&&(t=!1),void 0===i&&(i=b.config.dateFormat),0!==n&&!n||n instanceof Array&&0===n.length)return b.clear(t);ir(n,i);b.latestSelectedDateObj=b.selectedDates[b.selectedDates.length-1];b.redraw();wt(void 0,t);pt();0===b.selectedDates.length&&b.clear(!1);ot(t);t&&et("onChange")},b.toggle=function(n){if(!0===b.isOpen)return b.close();b.open(n)},vt={locale:[gi,bi],showMonths:[pi,yi,wi],minDate:[wt],maxDate:[wt],clickOpens:[function(){!0===b.config.clickOpens?(ut(b._input,"focus",b.open),ut(b._input,"click",b.open)):(b._input.removeEventListener("focus",b.open),b._input.removeEventListener("click",b.open))}]},function(){b.element=b.input=h;b.isOpen=!1,function(){var e=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],n=i(i({},JSON.parse(JSON.stringify(h.dataset||{}))),l),c={},f,v,y,a,r,o,u;for(b.config.parseDate=n.parseDate,b.config.formatDate=n.formatDate,Object.defineProperty(b.config,"enable",{get:function(){return b.config._enable},set:function(n){b.config._enable=rr(n)}}),Object.defineProperty(b.config,"disable",{get:function(){return b.config._disable},set:function(n){b.config._disable=rr(n)}}),f="time"===n.mode,!n.dateFormat&&(n.enableTime||f)&&(v=t.defaultConfig.dateFormat||s.dateFormat,c.dateFormat=n.noCalendar||f?"H:i"+(n.enableSeconds?":S":""):v+" H:i"+(n.enableSeconds?":S":"")),n.altInput&&(n.enableTime||f)&&!n.altFormat&&(y=t.defaultConfig.altFormat||s.altFormat,c.altFormat=n.noCalendar||f?"h:i"+(n.enableSeconds?":S K":" K"):y+" h:i"+(n.enableSeconds?":S":"")+" K"),Object.defineProperty(b.config,"minDate",{get:function(){return b.config._minDate},set:ki("min")}),Object.defineProperty(b.config,"maxDate",{get:function(){return b.config._maxDate},set:ki("max")}),a=function(n){return function(t){b.config["min"===n?"_minTime":"_maxTime"]=b.parseDate(t,"H:i:S")}},Object.defineProperty(b.config,"minTime",{get:function(){return b.config._minTime},set:a("min")}),Object.defineProperty(b.config,"maxTime",{get:function(){return b.config._maxTime},set:a("max")}),"time"===n.mode&&(b.config.noCalendar=!0,b.config.enableTime=!0),Object.assign(b.config,c,n),r=0;r-1?b.config[u]=w(o[u]).map(vi).concat(b.config[u]):void 0===n[u]&&(b.config[u]=o[u])}n.altInputClass||(b.config.altInputClass=di().className+" "+b.config.altInputClass);et("onParseConfig")}();gi(),function(){if(b.input=di(),!b.input)return void b.config.errorHandler(new Error("Invalid input element specified"));b.input._type=b.input.type;b.input.type="text";b.input.classList.add("flatpickr-input");b._input=b.input;b.config.altInput&&(b.altInput=n(b.input.nodeName,b.config.altInputClass),b._input=b.altInput,b.altInput.placeholder=b.input.placeholder,b.altInput.disabled=b.input.disabled,b.altInput.required=b.input.required,b.altInput.tabIndex=b.input.tabIndex,b.altInput.type="text",b.input.setAttribute("type","hidden"),!b.config.static&&b.input.parentNode&&b.input.parentNode.insertBefore(b.altInput,b.input.nextSibling));b.config.allowInput||b._input.setAttribute("readonly","readonly");b._positionElement=b.config.positionElement||b._input}(),function(){b.selectedDates=[];b.now=b.parseDate(b.config.now)||new Date;var n=b.config.defaultDate||("INPUT"!==b.input.nodeName&&"TEXTAREA"!==b.input.nodeName||!b.input.placeholder||b.input.value!==b.input.placeholder?b.input.value:null);n&&ir(n,b.config.dateFormat);b._initialDate=b.selectedDates.length>0?b.selectedDates[0]:b.config.minDate&&b.config.minDate.getTime()>b.now.getTime()?b.config.minDate:b.config.maxDate&&b.config.maxDate.getTime()0&&(b.latestSelectedDateObj=b.selectedDates[0]);void 0!==b.config.minTime&&(b.config.minTime=b.parseDate(b.config.minTime,"H:i"));void 0!==b.config.maxTime&&(b.config.maxTime=b.parseDate(b.config.maxTime,"H:i"));b.minDateHasTime=!!b.config.minDate&&(b.config.minDate.getHours()>0||b.config.minDate.getMinutes()>0||b.config.minDate.getSeconds()>0);b.maxDateHasTime=!!b.config.maxDate&&(b.config.maxDate.getHours()>0||b.config.maxDate.getMinutes()>0||b.config.maxDate.getSeconds()>0)}();b.utils={getDaysInMonth:function(n,t){return void 0===n&&(n=b.currentMonth),void 0===t&&(t=b.currentYear),1===n&&(t%4==0&&t%100!=0||t%400==0)?29:b.l10n.daysInMonth[n]}};b.isMobile||function(){var i=window.document.createDocumentFragment(),s,t;if(b.calendarContainer=n("div","flatpickr-calendar"),b.calendarContainer.tabIndex=-1,!b.config.noCalendar){if(i.appendChild((b.monthNav=n("div","flatpickr-months"),b.yearElements=[],b.monthElements=[],b.prevMonthNav=n("span","flatpickr-prev-month"),b.prevMonthNav.innerHTML=b.config.prevArrow,b.nextMonthNav=n("span","flatpickr-next-month"),b.nextMonthNav.innerHTML=b.config.nextArrow,pi(),Object.defineProperty(b,"_hidePrevMonthArrow",{get:function(){return b.__hidePrevMonthArrow},set:function(n){b.__hidePrevMonthArrow!==n&&(r(b.prevMonthNav,"flatpickr-disabled",n),b.__hidePrevMonthArrow=n)}}),Object.defineProperty(b,"_hideNextMonthArrow",{get:function(){return b.__hideNextMonthArrow},set:function(n){b.__hideNextMonthArrow!==n&&(r(b.nextMonthNav,"flatpickr-disabled",n),b.__hideNextMonthArrow=n)}}),b.currentYearElement=b.yearElements[0],ti(),b.monthNav)),b.innerContainer=n("div","flatpickr-innerContainer"),b.config.weekNumbers){var f=function(){var t,i;return b.calendarContainer.classList.add("hasWeeks"),t=n("div","flatpickr-weekwrapper"),t.appendChild(n("span","flatpickr-weekday",b.l10n.weekAbbreviation)),i=n("div","flatpickr-weeks"),t.appendChild(i),{weekWrapper:t,weekNumbers:i}}(),e=f.weekWrapper,h=f.weekNumbers;b.innerContainer.appendChild(e);b.weekNumbers=h;b.weekWrapper=e}b.rContainer=n("div","flatpickr-rContainer");b.rContainer.appendChild(wi());b.daysContainer||(b.daysContainer=n("div","flatpickr-days"),b.daysContainer.tabIndex=-1);kt();b.rContainer.appendChild(b.daysContainer);b.innerContainer.appendChild(b.rContainer);i.appendChild(b.innerContainer)}b.config.enableTime&&i.appendChild(function(){var t,e,i,r,f;return b.calendarContainer.classList.add("hasTime"),b.config.noCalendar&&b.calendarContainer.classList.add("noCalendar"),t=g(b.config),b.timeContainer=n("div","flatpickr-time"),b.timeContainer.tabIndex=-1,e=n("span","flatpickr-time-separator",":"),i=v("flatpickr-hour",{"aria-label":b.l10n.hourAriaLabel}),b.hourElement=i.getElementsByTagName("input")[0],r=v("flatpickr-minute",{"aria-label":b.l10n.minuteAriaLabel}),b.minuteElement=r.getElementsByTagName("input")[0],b.hourElement.tabIndex=b.minuteElement.tabIndex=-1,b.hourElement.value=u(b.latestSelectedDateObj?b.latestSelectedDateObj.getHours():b.config.time_24hr?t.hours:function(n){switch(n%24){case 0:case 12:return 12;default:return n%12}}(t.hours)),b.minuteElement.value=u(b.latestSelectedDateObj?b.latestSelectedDateObj.getMinutes():t.minutes),b.hourElement.setAttribute("step",b.config.hourIncrement.toString()),b.minuteElement.setAttribute("step",b.config.minuteIncrement.toString()),b.hourElement.setAttribute("min",b.config.time_24hr?"0":"1"),b.hourElement.setAttribute("max",b.config.time_24hr?"23":"12"),b.hourElement.setAttribute("maxlength","2"),b.minuteElement.setAttribute("min","0"),b.minuteElement.setAttribute("max","59"),b.minuteElement.setAttribute("maxlength","2"),b.timeContainer.appendChild(i),b.timeContainer.appendChild(e),b.timeContainer.appendChild(r),b.config.time_24hr&&b.timeContainer.classList.add("time24hr"),b.config.enableSeconds&&(b.timeContainer.classList.add("hasSeconds"),f=v("flatpickr-second"),b.secondElement=f.getElementsByTagName("input")[0],b.secondElement.value=u(b.latestSelectedDateObj?b.latestSelectedDateObj.getSeconds():t.seconds),b.secondElement.setAttribute("step",b.minuteElement.getAttribute("step")),b.secondElement.setAttribute("min","0"),b.secondElement.setAttribute("max","59"),b.secondElement.setAttribute("maxlength","2"),b.timeContainer.appendChild(n("span","flatpickr-time-separator",":")),b.timeContainer.appendChild(f)),b.config.time_24hr||(b.amPM=n("span","flatpickr-am-pm",b.l10n.amPM[o((b.latestSelectedDateObj?b.hourElement.value:b.config.defaultHour)>11)]),b.amPM.title=b.l10n.toggleTitle,b.amPM.tabIndex=-1,b.timeContainer.appendChild(b.amPM)),b.timeContainer}());r(b.calendarContainer,"rangeMode","range"===b.config.mode);r(b.calendarContainer,"animate",!0===b.config.animate);r(b.calendarContainer,"multiMonth",b.config.showMonths>1);b.calendarContainer.appendChild(i);s=void 0!==b.config.appendTo&&void 0!==b.config.appendTo.nodeType;(b.config.inline||b.config.static)&&(b.calendarContainer.classList.add(b.config.inline?"inline":"static"),b.config.inline&&(!s&&b.element.parentNode?b.element.parentNode.insertBefore(b.calendarContainer,b._input.nextSibling):void 0!==b.config.appendTo&&b.config.appendTo.appendChild(b.calendarContainer)),b.config.static)&&(t=n("div","flatpickr-wrapper"),b.element.parentNode&&b.element.parentNode.insertBefore(t,b.element),t.appendChild(b.element),b.altInput&&t.appendChild(b.altInput),t.appendChild(b.calendarContainer));b.config.static||b.config.inline||(void 0!==b.config.appendTo?b.config.appendTo:window.document.body).appendChild(b.calendarContainer)}(),function(){var t,i;if(b.config.wrap&&["open","close","toggle","clear"].forEach(function(n){Array.prototype.forEach.call(b.element.querySelectorAll("[data-"+n+"]"),function(t){return ut(t,"click",b[n])})}),b.isMobile)return void function(){var t=b.config.enableTime?b.config.noCalendar?"time":"datetime-local":"date";b.mobileInput=n("input",b.input.className+" flatpickr-mobile");b.mobileInput.tabIndex=1;b.mobileInput.type=t;b.mobileInput.disabled=b.input.disabled;b.mobileInput.required=b.input.required;b.mobileInput.placeholder=b.input.placeholder;b.mobileFormatStr="datetime-local"===t?"Y-m-d\\TH:i:S":"date"===t?"Y-m-d":"H:i:S";b.selectedDates.length>0&&(b.mobileInput.defaultValue=b.mobileInput.value=b.formatDate(b.selectedDates[0],b.mobileFormatStr));b.config.minDate&&(b.mobileInput.min=b.formatDate(b.config.minDate,"Y-m-d"));b.config.maxDate&&(b.mobileInput.max=b.formatDate(b.config.maxDate,"Y-m-d"));b.input.getAttribute("step")&&(b.mobileInput.step=String(b.input.getAttribute("step")));b.input.type="hidden";void 0!==b.altInput&&(b.altInput.type="hidden");try{b.input.parentNode&&b.input.parentNode.insertBefore(b.mobileInput,b.input.nextSibling)}catch(t){}ut(b.mobileInput,"change",function(n){b.setDate(f(n).value,!1,b.mobileFormatStr);et("onChange");et("onClose")})}();t=tt(lr,50);b._debouncedChange=tt(ri,300);b.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&ut(b.daysContainer,"mouseover",function(n){"range"===b.config.mode&&hi(f(n))});ut(window.document.body,"keydown",cr);b.config.inline||b.config.static||ut(window,"resize",t);void 0!==window.ontouchstart?ut(window.document,"touchstart",si):ut(window.document,"mousedown",si);ut(window.document,"focus",si,{capture:!0});!0===b.config.clickOpens&&(ut(b._input,"focus",b.open),ut(b._input,"click",b.open));void 0!==b.daysContainer&&(ut(b.monthNav,"click",ar),ut(b.monthNav,["keyup","increment"],fr),ut(b.daysContainer,"click",tr));void 0!==b.timeContainer&&void 0!==b.minuteElement&&void 0!==b.hourElement&&(i=function(n){return f(n).select()},ut(b.timeContainer,["increment"],ht),ut(b.timeContainer,"blur",ht,{capture:!0}),ut(b.timeContainer,"click",er),ut([b.hourElement,b.minuteElement],["focus","click"],i),void 0!==b.secondElement&&ut(b.secondElement,"focus",function(){return b.secondElement&&b.secondElement.select()}),void 0!==b.amPM&&ut(b.amPM,"click",function(n){ht(n);ri()}));b.config.allowInput&&ut(b._input,"blur",hr)}();(b.selectedDates.length||b.config.noCalendar)&&(b.config.enableTime&&pt(b.config.noCalendar?b.latestSelectedDateObj:void 0),ot(!1));yi();var e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!b.isMobile&&e&&ni();et("onReady")}(),b}function h(n,t){for(var i,f=Array.prototype.slice.call(n).filter(function(n){return n instanceof HTMLElement}),r=[],u=0;u<\/g><\/svg>",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"<\/g><\/svg>",shorthandCurrentMonth:!1,showMonths:1,"static":!1,time_24hr:!1,weekNumbers:!1,wrap:!1},c={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(n){var t=n%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},u=function(n,t){return void 0===t&&(t=2),("000"+n).slice(-1*t)},o=function(n){return!0===n?1:0},w=function(n){return n instanceof Array?n:[n]},b=function(){},y=function(n,t,i){return i.months[t?"shorthand":"longhand"][n]},ut={D:b,F:function(n,t,i){n.setMonth(i.months.longhand.indexOf(t))},G:function(n,t){n.setHours(parseFloat(t))},H:function(n,t){n.setHours(parseFloat(t))},J:function(n,t){n.setDate(parseFloat(t))},K:function(n,t,i){n.setHours(n.getHours()%12+12*o(new RegExp(i.amPM[1],"i").test(t)))},M:function(n,t,i){n.setMonth(i.months.shorthand.indexOf(t))},S:function(n,t){n.setSeconds(parseFloat(t))},U:function(n,t){return new Date(1e3*parseFloat(t))},W:function(n,t,i){var u=parseInt(t),r=new Date(n.getFullYear(),0,2+7*(u-1),0,0,0,0);return r.setDate(r.getDate()-r.getDay()+i.firstDayOfWeek),r},Y:function(n,t){n.setFullYear(parseFloat(t))},Z:function(n,t){return new Date(t)},d:function(n,t){n.setDate(parseFloat(t))},h:function(n,t){n.setHours(parseFloat(t))},i:function(n,t){n.setMinutes(parseFloat(t))},j:function(n,t){n.setDate(parseFloat(t))},l:b,m:function(n,t){n.setMonth(parseFloat(t)-1)},n:function(n,t){n.setMonth(parseFloat(t)-1)},s:function(n,t){n.setSeconds(parseFloat(t))},u:function(n,t){return new Date(parseFloat(t))},w:b,y:function(n,t){n.setFullYear(2e3+parseFloat(t))}},k={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},l={Z:function(n){return n.toISOString()},D:function(n,t,i){return t.weekdays.shorthand[l.w(n,t,i)]},F:function(n,t,i){return y(l.n(n,t,i)-1,!1,t)},G:function(n,t,i){return u(l.h(n,t,i))},H:function(n){return u(n.getHours())},J:function(n,t){return void 0!==t.ordinal?n.getDate()+t.ordinal(n.getDate()):n.getDate()},K:function(n,t){return t.amPM[o(n.getHours()>11)]},M:function(n,t){return y(n.getMonth(),!0,t)},S:function(n){return u(n.getSeconds())},U:function(n){return n.getTime()/1e3},W:function(n,t,i){return i.getWeek(n)},Y:function(n){return u(n.getFullYear(),4)},d:function(n){return u(n.getDate())},h:function(n){return n.getHours()%12?n.getHours()%12:12},i:function(n){return u(n.getMinutes())},j:function(n){return n.getDate()},l:function(n,t){return t.weekdays.longhand[n.getDay()]},m:function(n){return u(n.getMonth()+1)},n:function(n){return n.getMonth()+1},s:function(n){return n.getSeconds()},u:function(n){return n.getTime()},w:function(n){return n.getDay()},y:function(n){return String(n.getFullYear()).substring(2)}},rt=function(n){var i=n.config,t=void 0===i?s:i,r=n.l10n,f=void 0===r?c:r,u=n.isMobile,e=void 0!==u&&u;return function(n,i,r){var u=r||f;return void 0===t.formatDate||e?i.split("").map(function(i,r,f){return l[i]&&"\\"!==f[r-1]?l[i](n,u,t):"\\"!==i?i:""}).join(""):t.formatDate(n,i,u)}},d=function(n){var i=n.config,t=void 0===i?s:i,r=n.l10n,u=void 0===r?c:r;return function(n,i,r,f){var e,y,p,o,c,v;if(0===n||n){if(y=f||u,p=n,n instanceof Date)e=new Date(n.getTime());else if("string"!=typeof n&&void 0!==n.toFixed)e=new Date(n);else if("string"==typeof n)if(o=i||(t||s).dateFormat,c=String(n).trim(),"today"===c)e=new Date,r=!0;else if(/Z$/.test(c)||/GMT$/.test(c))e=new Date(n);else if(t&&t.parseDate)e=t.parseDate(n,o);else{e=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var w=void 0,b=[],l=0,g=0,a="";ln.config.maxDate&&(t=n.config.maxDate),n.currentYear=t.getFullYear());n.currentYearElement.value=String(n.currentYear);n.rContainer&&n.rContainer.querySelectorAll(".flatpickr-monthSelect-month").forEach(function(t){t.dateObj.setFullYear(n.currentYear);n.config.minDate&&t.dateObjn.config.maxDate?t.classList.add("disabled"):t.classList.remove("disabled")});r()}function o(t){t.preventDefault();t.stopPropagation();var i=function(n){try{return"function"==typeof n.composedPath?n.composedPath()[0]:n.target}catch(t){return n.target}}(t);i instanceof Element&&!i.classList.contains("disabled")&&(s(i.dateObj),n.close())}function s(t){var i=new Date(t);i.setFullYear(n.currentYear);n.setDate(i,!0);r()}var i,f;return n.config.dateFormat=u.dateFormat,n.config.altFormat=u.altFormat,i={monthsContainer:null},f={37:-1,39:1,40:3,38:-3},{onParseConfig:function(){n.config.mode="single";n.config.enableTime=!1},onValueUpdate:r,onKeyDown:function(t,r,u,e){var c=void 0!==f[e.keyCode],l,o,h;(c||13===e.keyCode)&&n.rContainer&&i.monthsContainer&&(l=n.rContainer.querySelector(".flatpickr-monthSelect-month.selected"),o=Array.prototype.indexOf.call(i.monthsContainer.children,document.activeElement),-1===o&&(h=l||i.monthsContainer.firstElementChild,h.focus(),o=h.$i),c?i.monthsContainer.children[(12+o+f[e.keyCode])%12].focus():13===e.keyCode&&i.monthsContainer.contains(document.activeElement)&&s(document.activeElement.dateObj))},onReady:[function(){n.currentMonth=0},function(){var t,i;if(n.rContainer&&n.daysContainer&&n.weekdayContainer)for(n.rContainer.removeChild(n.daysContainer),n.rContainer.removeChild(n.weekdayContainer),t=0;tn.config.maxDate)&&r.classList.add("disabled");n.rContainer.appendChild(i.monthsContainer)}},r,function(){n.loadedPlugins.push("monthSelect")}],onDestroy:function(){if(null!==i.monthsContainer)for(var t=i.monthsContainer.querySelectorAll(".flatpickr-monthSelect-month"),n=0;nn?n:document.getElementById(t)},addClass:(n,t)=>{n.classList.add(t)},removeClass:(n,t)=>{n.classList.contains(t)&&n.classList.remove(t)},toggleClass:(n,t)=>{n&&(n.classList.contains(t)?n.classList.remove(t):n.classList.add(t))},addClassToBody:n=>{blazorise.addClass(document.body,n)},removeClassFromBody:n=>{blazorise.removeClass(document.body,n)},parentHasClass:(n,t)=>n&&n.parentElement?n.parentElement.classList.contains(t):!1,setProperty:(n,t,i)=>{n&&t&&(n[t]=i)},getElementInfo:(n,t)=>{if(n||(n=document.getElementById(t)),n){const t=n.getBoundingClientRect();return{boundingClientRect:{x:t.x,y:t.y,top:t.top,bottom:t.bottom,left:t.left,right:t.right,width:t.width,height:t.height},offsetTop:n.offsetTop,offsetLeft:n.offsetLeft,offsetWidth:n.offsetWidth,offsetHeight:n.offsetHeight,scrollTop:n.scrollTop,scrollLeft:n.scrollLeft,scrollWidth:n.scrollWidth,scrollHeight:n.scrollHeight,clientTop:n.clientTop,clientLeft:n.clientLeft,clientWidth:n.clientWidth,clientHeight:n.clientHeight}}return{}},setTextValue(n,t){n.value=t},hasSelectionCapabilities:n=>{const t=n&&n.nodeName&&n.nodeName.toLowerCase();return t&&(t==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||t==="textarea"||n.contentEditable==="true")},setCaret:(n,t)=>{window.blazorise.hasSelectionCapabilities(n)&&window.requestAnimationFrame(()=>{n.selectionStart=t,n.selectionEnd=t})},getCaret:n=>window.blazorise.hasSelectionCapabilities(n)?n.selectionStart:-1,getSelectedOptions:n=>{var i,r,t;const u=document.getElementById(n),f=u.options.length;for(i=[],t=0;t{const i=document.getElementById(n);if(i&&i.options){const n=i.options.length;for(var r=0;rt!==null&&t.toString()===n.value)?!0:!1}}},closableComponents:[],addClosableComponent:(n,t)=>{window.blazorise.closableComponents.push({elementId:n,dotnetAdapter:t})},findClosableComponent:n=>{for(index=0;index{for(index=0;index{for(index=0;index{n&&window.blazorise.isClosableComponent(n.id)!==!0&&window.blazorise.addClosableComponent(n.id,t)},unregisterClosableComponent:n=>{if(n){const t=window.blazorise.findClosableComponentIndex(n.id);t!==-1&&window.blazorise.closableComponents.splice(t,1)}},tryClose:(n,t,i,r)=>{let u=new Promise(u=>{n.dotnetAdapter.invokeMethodAsync("SafeToClose",t,i?"escape":"leave",r).then(t=>u({elementId:n.elementId,dotnetAdapter:n.dotnetAdapter,status:t===!0?"ok":"cancelled"})).catch(()=>u({elementId:n.elementId,status:"error"}))});u&&u.then(n=>{n.status==="ok"&&n.dotnetAdapter.invokeMethodAsync("Close",i?"escape":"leave").catch(()=>window.blazorise.unregisterClosableComponent(n.elementId))})},focus:(n,t,i)=>{n=window.blazorise.utils.getRequiredElement(n,t),n&&n.focus({preventScroll:!i})},tooltip:{_instances:[],initialize:(n,t,i)=>{const r={theme:"blazorise",content:i.text,placement:i.placement,maxWidth:i.multiline?"15rem":null,duration:i.fade?[i.fadeDuration,i.fadeDuration]:[0,0],arrow:i.showArrow,allowHTML:!0,trigger:i.trigger},u=i.alwaysActive?{showOnCreate:!0,hideOnClick:!1,trigger:"manual"}:{},f=tippy(n,{...r,...u});window.blazorise.tooltip._instances[t]=f},destroy:(n,t)=>{var i=window.blazorise.tooltip._instances||{};const r=i[t];r&&(r.hide(),delete i[t])},updateContent:(n,t,i)=>{const r=window.blazorise.tooltip._instances[t];r&&r.setContent(i)}},textEdit:{_instances:[],initialize:(n,t,i,r)=>{var u=window.blazorise.textEdit._instances=window.blazorise.textEdit._instances||{};u[t]=i==="numeric"?new window.blazorise.NumericMaskValidator(n,t):i==="datetime"?new window.blazorise.DateTimeMaskValidator(n,t):i==="regex"?new window.blazorise.RegExMaskValidator(n,t,r):new window.blazorise.NoValidator;n.addEventListener("keypress",n=>{window.blazorise.textEdit.keyPress(u[t],n)});n.addEventListener("paste",n=>{window.blazorise.textEdit.paste(u[t],n)})},destroy:(n,t)=>{var i=window.blazorise.textEdit._instances||{};delete i[t]},keyPress:(n,t)=>{var i=String.fromCharCode(t.which);return n.isValid(i)||t.preventDefault()},paste:(n,t)=>n.isValid(t.clipboardData.getData("text/plain"))||t.preventDefault()},numericEdit:{_instances:[],initialize:(n,t,i,r)=>{const u=new window.blazorise.NumericMaskValidator(n,t,i,r);window.blazorise.numericEdit._instances[i]=u;t.addEventListener("keypress",n=>{window.blazorise.numericEdit.keyPress(window.blazorise.numericEdit._instances[i],n)});t.addEventListener("paste",n=>{window.blazorise.numericEdit.paste(window.blazorise.numericEdit._instances[i],n)});u.decimals&&u.decimals!==2&&u.truncate()},update:(n,t,i)=>{const r=window.blazorise.numericEdit._instances[t];r&&r.update(i)},destroy:(n,t)=>{var i=window.blazorise.numericEdit._instances||{};delete i[t]},keyPress:(n,t)=>{var i=String.fromCharCode(t.which);return t.which===13||n.isValid(i)||t.preventDefault()},paste:(n,t)=>n.isValid(t.clipboardData.getData("text/plain"))||t.preventDefault()},datePicker:{_pickers:[],initialize:(n,t,i)=>{function r(n){n.forEach(n=>{if(n.attributeName==="class"){const t=window.blazorise.datePicker._pickers[n.target.id];if(t&&t.altInput){const n=[...t.altInput.classList].filter(n=>!["input","active"].includes(n)),i=[...t.input.classList].filter(n=>!["flatpickr-input"].includes(n));n.forEach(n=>{t.altInput.classList.remove(n)});i.forEach(n=>{t.altInput.classList.add(n)})}}})}const u=new MutationObserver(r);u.observe(document.getElementById(t),{attributes:!0});const f={enableTime:i.inputMode===1,dateFormat:i.inputMode===1?"Y-m-d H:i":"Y-m-d",allowInput:!0,altInput:!0,altFormat:i.displayFormat?i.displayFormat:i.inputMode===1?"Y-m-d H:i":"Y-m-d",defaultValue:i.default,minDate:i.min,maxDate:i.max,locale:{firstDayOfWeek:i.firstDayOfWeek},time_24hr:i.timeAs24hr?i.timeAs24hr:!1},e=i.inputMode===2?{plugins:[new monthSelectPlugin({shorthand:!1,dateFormat:"Y-m-d",altFormat:"M Y"})]}:{},o=flatpickr(n,{...f,...e});window.blazorise.datePicker._pickers[t]=o},destroy:(n,t)=>{const i=window.blazorise.datePicker._pickers||{};delete i[t]},updateValue:(n,t,i)=>{const r=window.blazorise.datePicker._pickers[t];r&&r.setDate(i)},updateOptions:(n,t,i)=>{const r=window.blazorise.datePicker._pickers[t];r&&(i.firstDayOfWeek.changed&&r.set("firstDayOfWeek",i.firstDayOfWeek.value),i.displayFormat.changed&&r.set("altFormat",i.displayFormat.value),i.timeAs24hr.changed&&r.set("time_24hr",i.timeAs24hr.value),i.min.changed&&r.set("minDate",i.min.value),i.max.changed&&r.set("maxDate",i.max.value))},open:(n,t)=>{const i=window.blazorise.datePicker._pickers[t];i&&i.open()},close:(n,t)=>{const i=window.blazorise.datePicker._pickers[t];i&&i.close()},toggle:(n,t)=>{const i=window.blazorise.datePicker._pickers[t];i&&i.toggle()}},timePicker:{_pickers:[],initialize:(n,t,i)=>{function r(n){n.forEach(n=>{if(n.attributeName==="class"){const t=window.blazorise.timePicker._pickers[n.target.id];if(t&&t.altInput){const n=[...t.altInput.classList].filter(n=>!["input","active"].includes(n)),i=[...t.input.classList].filter(n=>!["flatpickr-input"].includes(n));n.forEach(n=>{t.altInput.classList.remove(n)});i.forEach(n=>{t.altInput.classList.add(n)})}}})}const u=new MutationObserver(r);u.observe(document.getElementById(t),{attributes:!0});const f=flatpickr(n,{enableTime:!0,noCalendar:!0,dateFormat:"H:i",allowInput:!0,altInput:!0,altFormat:i.displayFormat?i.displayFormat:"H:i",defaultValue:i.default,minTime:i.min,maxTime:i.max,time_24hr:i.timeAs24hr?i.timeAs24hr:!1});window.blazorise.timePicker._pickers[t]=f},destroy:(n,t)=>{const i=window.blazorise.timePicker._pickers||{};delete i[t]},updateValue:(n,t,i)=>{const r=window.blazorise.timePicker._pickers[t];r&&r.setDate(i)},updateOptions:(n,t,i)=>{const r=window.blazorise.timePicker._pickers[t];r&&(i.displayFormat.changed&&r.set("altFormat",i.displayFormat.value),i.timeAs24hr.changed&&r.set("time_24hr",i.timeAs24hr.value),i.min.changed&&r.set("minTime",i.min.value),i.max.changed&&r.set("maxTime",i.max.value))},open:(n,t)=>{const i=window.blazorise.timePicker._pickers[t];i&&i.open()},close:(n,t)=>{const i=window.blazorise.timePicker._pickers[t];i&&i.close()},toggle:(n,t)=>{const i=window.blazorise.timePicker._pickers[t];i&&i.toggle()}},NoValidator:function(){this.isValid=function(){return!0}},NumericMaskValidator:function(n,t,i,r){this.dotnetAdapter=n;this.elementId=i;this.element=t;this.decimals=r.decimals===null||r.decimals===undefined?2:r.decimals;this.separator=r.separator||".";this.step=r.step||1;this.min=r.min;this.max=r.max;this.regex=function(){var n="\\"+this.separator,t=this.decimals,i="{0,"+t+"}";return t?new RegExp("^(-)?(((\\d+("+n+"\\d"+i+")?)|("+n+"\\d"+i+")))?$"):/^(-)?(\d*)$/};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return(t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t))?(t||"").replace(this.separator,"."):!1};this.update=function(n){n.decimals&&n.decimals.changed&&(this.decimals=n.decimals.value,this.truncate())};this.truncate=function(){let i=(this.element.value||"").replace(this.separator,"."),n=Number(i);n=Math.trunc(n*Math.pow(10,this.decimals))/Math.pow(10,this.decimals);let t=n.toString().replace(".",this.separator);this.element.value=t;this.dotnetAdapter.invokeMethodAsync("SetValue",t)}},DateTimeMaskValidator:function(n,t){this.elementId=t;this.element=n;this.regex=function(){return/^\d{0,4}$|^\d{4}-0?$|^\d{4}-(?:0?[1-9]|1[012])(?:-(?:0?[1-9]?|[12]\d|3[01])?)?$/};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t)}},RegExMaskValidator:function(n,t,i){this.elementId=t;this.element=n;this.editMask=i;this.regex=function(){return new RegExp(this.editMask)};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t)}},button:{_instances:[],initialize:(n,t,i)=>{window.blazorise.button._instances[t]=new window.blazorise.ButtonInfo(n,t,i),n.type==="submit"&&n.addEventListener("click",n=>{window.blazorise.button.click(window.blazorise.button._instances[t],n)})},destroy:n=>{var t=window.blazorise.button._instances||{};delete t[n]},click:(n,t)=>{if(n.preventDefaultOnSubmit)return t.preventDefault()}},ButtonInfo:function(n,t,i){this.elementId=t;this.element=n;this.preventDefaultOnSubmit=i},link:{scrollIntoView:n=>{var t=document.getElementById(n);t&&(t.scrollIntoView(),window.location.hash=n)}},fileEdit:{_instances:[],initialize:(n,t,i)=>{var r=0;window.blazorise.fileEdit._instances[i]=new window.blazorise.FileEditInfo(n,t,i);t.addEventListener("change",function(){t._blazorFilesById={};var i=Array.prototype.map.call(t.files,function(n){var i={id:++r,lastModified:new Date(n.lastModified).toISOString(),name:n.name,size:n.size,type:n.type};return t._blazorFilesById[i.id]=i,Object.defineProperty(i,"blob",{value:n}),i});n.invokeMethodAsync("NotifyChange",i).then(null,function(n){throw new Error(n);})})},destroy:(n,t)=>{var i=window.blazorise.fileEdit._instances||{};delete i[t]},reset:(n,t)=>{if(n){n.value="";var i=window.blazorise.fileEdit._instances[t];i&&i.adapter.invokeMethodAsync("NotifyChange",[]).then(null,function(n){throw new Error(n);})}},readFileData:function(n,t,i,r){var u=getArrayBufferFromFileAsync(n,t);return u.then(function(n){var t=new Uint8Array(n,i,r);return uint8ToBase64(t)})},ensureArrayBufferReadyForSharedMemoryInterop:function(n,t){return getArrayBufferFromFileAsync(n,t).then(function(i){getFileById(n,t).arrayBuffer=i})},readFileDataSharedMemory:function(n){var u=Blazor.platform.readStringField(n,0),f=document.querySelector("[_bl_"+u+"]"),e=Blazor.platform.readInt32Field(n,4),t=Blazor.platform.readUint64Field(n,8),o=Blazor.platform.readInt32Field(n,16),s=Blazor.platform.readInt32Field(n,20),h=Blazor.platform.readInt32Field(n,24),i=getFileById(f,e).arrayBuffer,r=Math.min(h,i.byteLength-t),c=new Uint8Array(i,t,r),l=Blazor.platform.toUint8Array(o);return l.set(c,s),r},open:(n,t)=>{!n&&t&&(n=document.getElementById(t)),n&&n.click()}},FileEditInfo:function(n,t,i){this.adapter=n;this.element=t;this.elementId=i},breakpoint:{getBreakpoint:function(){return window.getComputedStyle(document.body,":before").content.replace(/\"/g,"")},breakpointComponents:[],lastBreakpoint:null,addBreakpointComponent:(n,t)=>{window.blazorise.breakpoint.breakpointComponents.push({elementId:n,dotnetAdapter:t})},findBreakpointComponentIndex:n=>{for(index=0;index{for(index=0;index{window.blazorise.breakpoint.isBreakpointComponent(n)!==!0&&window.blazorise.breakpoint.addBreakpointComponent(n,t)},unregisterBreakpointComponent:n=>{const t=window.blazorise.breakpoint.findBreakpointComponentIndex(n);t!==-1&&window.blazorise.breakpoint.breakpointComponents.splice(t,1)},onBreakpoint:(n,t)=>{n.invokeMethodAsync("OnBreakpoint",t)}},table:{initializeTableFixedHeader:function(n){function i(n){const t=n.querySelectorAll("thead tr");if(t!==null&&t.length>1){let n=0;for(let i=0;it.style.top=`${n}px`);n+=r[0].offsetHeight}}}let t=null;this.resizeThottler=function(){t||(t=setTimeout(function(){t=null;i(n)}.bind(this),66))};i(n);window.addEventListener("resize",this.resizeThottler,!1)},destroyTableFixedHeader:function(n){typeof this.resizeThottler=="function"&&window.removeEventListener("resize",this.resizeThottler);const t=n.querySelectorAll("thead tr");if(t!==null&&t.length>1)for(let n=0;nn.style.top=`${0}px`)}},fixedHeaderScrollTableToPixels:function(n,t,i){n!==null&&n.parentElement!==null&&(n.parentElement.scrollTop=i)},fixedHeaderScrollTableToRow:function(n,t,i){if(n!==null){let t=n.querySelectorAll("tr"),r=t.length;r>0&&i>=0&&i th")),u!==null){const t=function(){let t=0;if(n!==null){const i=n.querySelectorAll("tr");i.forEach(n=>{let i=n.querySelector("th:first-child,td:first-child");i!==null&&(t+=i.offsetHeight)})}return t},o=()=>i===e?n!==null?n.querySelector("tr:first-child > th:first-child").offsetHeight:0:t();let s=o();const h=function(i){if(i.querySelector(`.${r}`)===null){const u=document.createElement("div");u.classList.add(r);u.style.height=`${s}px`;u.addEventListener("click",function(n){n.preventDefault();n.stopPropagation()});let e,h;i.addEventListener("click",function(n){let t=e!==null&&h!==null;if(t){let i=new Date,r=i-e,u=r>100,f=i-h,o=f<100;t&&u&&o&&(n.preventDefault(),n.stopPropagation());e=null;h=null}});i.appendChild(u);let c=0,l=0;const y=function(n){e=new Date;c=n.clientX;const t=window.getComputedStyle(i);l=parseInt(t.width,10);document.addEventListener("pointermove",a);document.addEventListener("pointerup",v);u.classList.add(f)},a=function(n){const r=n.clientX-c;u.style.height=`${t()}px`;i.style.width=`${l+r}px`},v=function(){h=new Date;u.classList.remove(f);n.querySelectorAll(`.${r}`).forEach(n=>n.style.height=`${o()}px`);document.removeEventListener("pointermove",a);document.removeEventListener("pointerup",v)};u.addEventListener("pointerdown",y)}};[].forEach.call(u,function(n){h(n)})}},destroyResizable:function(n){n!==null&&n.querySelectorAll(".b-table-resizer").forEach(n=>n.remove())}}};document.addEventListener("mousedown",function(n){window.blazorise.lastClickedDocumentElement=n.target});document.addEventListener("mouseup",function(n){if(n.button===0&&n.target===window.blazorise.lastClickedDocumentElement&&window.blazorise.closableComponents&&window.blazorise.closableComponents.length>0){const t=window.blazorise.closableComponents[window.blazorise.closableComponents.length-1];t&&window.blazorise.tryClose(t,n.target.id,!1,hasParentInTree(n.target,t.elementId))}});document.addEventListener("keyup",function(n){if(n.keyCode===27&&window.blazorise.closableComponents&&window.blazorise.closableComponents.length>0){const n=window.blazorise.closableComponents[window.blazorise.closableComponents.length-1];n&&window.blazorise.tryClose(n,n.elementId,!0,!1)}});window.addEventListener("resize",function(){if(window.blazorise.breakpoint.breakpointComponents&&window.blazorise.breakpoint.breakpointComponents.length>0){var n=window.blazorise.breakpoint.getBreakpoint();if(window.blazorise.breakpoint.lastBreakpoint!==n)for(window.blazorise.breakpoint.lastBreakpoint=n,index=0;index>18&63]+n[t>>12&63]+n[t>>6&63]+n[t&63]}function f(n,t,i){for(var f,e=[],r=t;rh?h:u+s));return o===1?(i=t[r-1],e.push(n[i>>2]+n[i<<4&63]+"==")):o===2&&(i=(t[r-2]<<8)+t[r-1],e.push(n[i>>10]+n[i>>4&63]+n[i<<2&63]+"=")),e.join("")}}(); - return true; - }, - destroy: (elementId) => { - var instances = window.blazorise.button._instances || {}; - delete instances[elementId]; - return true; - }, - click: (buttonInfo, e) => { - if (buttonInfo.preventDefaultOnSubmit) { - return e.preventDefault(); - } - } - }, - ButtonInfo: function (element, elementId, preventDefaultOnSubmit) { - this.elementId = elementId; - this.element = element; - this.preventDefaultOnSubmit = preventDefaultOnSubmit; - }, - link: { - scrollIntoView: (elementId) => { - var element = document.getElementById(elementId); +function mutateDOMChange(n){el=document.getElementById(n);ev=document.createEvent("Event");ev.initEvent("change",!0,!1);el.dispatchEvent(ev)}window.blazoriseBootstrap||(window.blazoriseBootstrap={});window.blazoriseBootstrap={tooltip:{initialize:n=>(n.querySelector(".custom-control-input,.btn")&&n.classList.add("b-tooltip-inline"),!0)},modal:{open:(n,t)=>{var i=Number(document.body.getAttribute("data-modals")||"0");return i===0&&window.blazorise.addClassToBody("modal-open"),i+=1,document.body.setAttribute("data-modals",i.toString()),t&&(n.querySelector(".modal-body").scrollTop=0),!0},close:()=>{var n=Number(document.body.getAttribute("data-modals")||"0");return n-=1,n<0&&(n=0),n===0&&window.blazorise.removeClassFromBody("modal-open"),document.body.setAttribute("data-modals",n.toString()),!0}}}; - if (element) { - element.scrollIntoView(); - window.location.hash = elementId; - } - - return true; - } - }, - fileEdit: { - initialize: (adapter, element, elementId) => { - var nextFileId = 0; - - element.addEventListener('change', function handleInputFileChange(event) { - // Reduce to purely serializable data, plus build an index by ID - element._blazorFilesById = {}; - var fileList = Array.prototype.map.call(element.files, function (file) { - var result = { - id: ++nextFileId, - lastModified: new Date(file.lastModified).toISOString(), - name: file.name, - size: file.size, - type: file.type - }; - element._blazorFilesById[result.id] = result; - - // Attach the blob data itself as a non-enumerable property so it doesn't appear in the JSON - Object.defineProperty(result, 'blob', { value: file }); - - return result; - }); - - adapter.invokeMethodAsync('NotifyChange', fileList).then(null, function (err) { - throw new Error(err); - }); - }); - - return true; - }, - destroy: (element, elementId) => { - // TODO: - return true; - }, - - reset: (element, elementId) => { - if (element) { - element.value = ''; - } - - return true; - }, - - readFileData: function readFileData(element, fileEntryId, position, length) { - var readPromise = getArrayBufferFromFileAsync(element, fileEntryId); - - return readPromise.then(function (arrayBuffer) { - var uint8Array = new Uint8Array(arrayBuffer, position, length); - var base64 = uint8ToBase64(uint8Array); - return base64; - }); - }, - - ensureArrayBufferReadyForSharedMemoryInterop: function ensureArrayBufferReadyForSharedMemoryInterop(elem, fileId) { - return getArrayBufferFromFileAsync(elem, fileId).then(function (arrayBuffer) { - getFileById(elem, fileId).arrayBuffer = arrayBuffer; - }); - }, - - readFileDataSharedMemory: function readFileDataSharedMemory(readRequest) { - // This uses various unsupported internal APIs. Beware that if you also use them, - // your code could become broken by any update. - var inputFileElementReferenceId = Blazor.platform.readStringField(readRequest, 0); - var inputFileElement = document.querySelector('[_bl_' + inputFileElementReferenceId + ']'); - var fileId = Blazor.platform.readInt32Field(readRequest, 4); - var sourceOffset = Blazor.platform.readUint64Field(readRequest, 8); - var destination = Blazor.platform.readInt32Field(readRequest, 16); - var destinationOffset = Blazor.platform.readInt32Field(readRequest, 20); - var maxBytes = Blazor.platform.readInt32Field(readRequest, 24); - - var sourceArrayBuffer = getFileById(inputFileElement, fileId).arrayBuffer; - var bytesToRead = Math.min(maxBytes, sourceArrayBuffer.byteLength - sourceOffset); - var sourceUint8Array = new Uint8Array(sourceArrayBuffer, sourceOffset, bytesToRead); - - var destinationUint8Array = Blazor.platform.toUint8Array(destination); - destinationUint8Array.set(sourceUint8Array, destinationOffset); - - return bytesToRead; - }, - open: (element, elementId) => { - if (!element && elementId) { - element = document.getElementById(elementId); - } - - if (element) { - element.click(); - } - } - }, - - breakpoint: { - // Get the current breakpoint - getBreakpoint: function () { - return window.getComputedStyle(document.body, ':before').content.replace(/\"/g, ''); - }, - - // holds the list of components that are triggers to breakpoint - breakpointComponents: [], - - lastBreakpoint: null, - - addBreakpointComponent: (elementId, dotnetAdapter) => { - window.blazorise.breakpoint.breakpointComponents.push({ elementId: elementId, dotnetAdapter: dotnetAdapter }); - }, - - findBreakpointComponentIndex: (elementId) => { - for (index = 0; index < window.blazorise.breakpoint.breakpointComponents.length; ++index) { - if (window.blazorise.breakpoint.breakpointComponents[index].elementId === elementId) - return index; - } - return -1; - }, - - isBreakpointComponent: (elementId) => { - for (index = 0; index < window.blazorise.breakpoint.breakpointComponents.length; ++index) { - if (window.blazorise.breakpoint.breakpointComponents[index].elementId === elementId) - return true; - } - return false; - }, - - registerBreakpointComponent: (elementId, dotnetAdapter) => { - if (window.blazorise.breakpoint.isBreakpointComponent(elementId) !== true) { - window.blazorise.breakpoint.addBreakpointComponent(elementId, dotnetAdapter); - } - }, - - unregisterBreakpointComponent: (elementId) => { - const index = window.blazorise.breakpoint.findBreakpointComponentIndex(elementId); - if (index !== -1) { - window.blazorise.breakpoint.breakpointComponents.splice(index, 1); - } - }, - - onBreakpoint: (dotnetAdapter, currentBreakpoint) => { - dotnetAdapter.invokeMethodAsync('OnBreakpoint', currentBreakpoint); - } - } -}; - -document.addEventListener('click', function handler(evt) { - if (window.blazorise.closableComponents && window.blazorise.closableComponents.length > 0) { - const lastClosable = window.blazorise.closableComponents[window.blazorise.closableComponents.length - 1]; - - if (lastClosable) { - window.blazorise.tryClose(lastClosable, evt.target.id, false, hasParentInTree(evt.target, lastClosable.elementId)); - } - } -}); - -document.addEventListener('keyup', function handler(evt) { - if (evt.keyCode === 27 && window.blazorise.closableComponents && window.blazorise.closableComponents.length > 0) { - const lastClosable = window.blazorise.closableComponents[window.blazorise.closableComponents.length - 1]; - - if (lastClosable) { - window.blazorise.tryClose(lastClosable, lastClosable.elementId, true, false); - } - } -}); - -// Recalculate breakpoint on resize -window.addEventListener('resize', function () { - if (window.blazorise.breakpoint.breakpointComponents && window.blazorise.breakpoint.breakpointComponents.length > 0) { - var currentBreakpoint = window.blazorise.breakpoint.getBreakpoint(); - - if (window.blazorise.breakpoint.lastBreakpoint !== currentBreakpoint) { - window.blazorise.breakpoint.lastBreakpoint = currentBreakpoint; - - for (index = 0; index < window.blazorise.breakpoint.breakpointComponents.length; ++index) { - window.blazorise.breakpoint.onBreakpoint(window.blazorise.breakpoint.breakpointComponents[index].dotnetAdapter, currentBreakpoint); - } - } - } -}); - -// Set initial breakpoint -window.blazorise.breakpoint.lastBreakpoint = window.blazorise.breakpoint.getBreakpoint(); - -function showPopper(element, tooltip, arrow, placement) { - var thePopper = new Popper(element, tooltip, - { - placement, - modifiers: { - offset: { - offset: 0 - }, - flip: { - behavior: "flip" - }, - arrow: { - element: arrow, - enabled: true - }, - preventOverflow: { - boundary: "scrollParent" - } - - } - } - ); - return thePopper; -} - -function getFileById(elem, fileId) { - var file = elem._blazorFilesById[fileId]; - if (!file) { - throw new Error('There is no file with ID ' + fileId + '. The file list may have changed'); - } - - return file; -} - -function getArrayBufferFromFileAsync(elem, fileId) { - var file = getFileById(elem, fileId); - - // On the first read, convert the FileReader into a Promise - if (!file.readPromise) { - file.readPromise = new Promise(function (resolve, reject) { - var reader = new FileReader(); - reader.onload = function () { resolve(reader.result); }; - reader.onerror = function (err) { reject(err); }; - reader.readAsArrayBuffer(file.blob); - }); - } - - return file.readPromise; -} - -function hasParentInTree(element, parentElementId) { - if (!element.parentElement) return false; - if (element.parentElement.id === parentElementId) return true; - return hasParentInTree(element.parentElement, parentElementId); -} - -var uint8ToBase64 = (function () { - // Code from https://github.com/beatgammit/base64-js/ - // License: MIT - var lookup = []; - - var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - } - - function tripletToBase64(num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F]; - } - - function encodeChunk(uint8, start, end) { - var tmp; - var output = []; - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF); - output.push(tripletToBase64(tmp)); - } - return output.join(''); - } - - return function fromByteArray(uint8) { - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk( - uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) - )); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1]; - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ); - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1]; - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ); - } - - return parts.join(''); - }; -})(); - -function mutateDOMChange(n){el=document.getElementById(n);ev=document.createEvent("Event");ev.initEvent("change",!0,!1);el.dispatchEvent(ev)}window.blazoriseBootstrap||(window.blazoriseBootstrap={});window.blazoriseBootstrap={tooltip:{initialize:n=>(n.querySelector(".custom-control-input,.btn")&&n.classList.add("b-tooltip-inline"),!0)},modal:{open:(n,t,i)=>(window.blazorise.addClassToBody("modal-open"),i&&(n.querySelector(".modal-body").scrollTop=0),!0),close:()=>(window.blazorise.removeClassFromBody("modal-open"),!0)}}; - -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(1);var i,o;!function(e){e.Success="success",e.RequiresRedirect="requiresRedirect"}(i=t.AccessTokenResultStatus||(t.AccessTokenResultStatus={})),function(e){e.Redirect="redirect",e.Success="success",e.Failure="failure",e.OperationCompleted="operationCompleted"}(o=t.AuthenticationResultStatus||(t.AuthenticationResultStatus={}));class s{constructor(e){this._userManager=e}async trySilentSignIn(){return this._intialSilentSignIn||(this._intialSilentSignIn=(async()=>{try{await this._userManager.signinSilent()}catch(e){}})()),this._intialSilentSignIn}async getUser(){window.parent!==window||window.opener||window.frameElement||!this._userManager.settings.redirect_uri||location.href.startsWith(this._userManager.settings.redirect_uri)||await a.instance.trySilentSignIn();const e=await this._userManager.getUser();return e&&e.profile}async getAccessToken(e){const t=await this._userManager.getUser();if(function(e){return!(!e||!e.access_token||e.expired||!e.scopes)}(t)&&function(e,t){const r=new Set(t);if(e&&e.scopes)for(const t of e.scopes)if(!r.has(t))return!1;return!0}(e,t.scopes))return{status:i.Success,token:{grantedScopes:t.scopes,expires:r(t.expires_in),value:t.access_token}};try{const t=e&&e.scopes?{scope:e.scopes.join(" ")}:void 0,n=await this._userManager.signinSilent(t);return{status:i.Success,token:{grantedScopes:n.scopes,expires:r(n.expires_in),value:n.access_token}}}catch(e){return{status:i.RequiresRedirect}}function r(e){const t=new Date;return t.setTime(t.getTime()+1e3*e),t}}async signIn(e){try{return await this._userManager.clearStaleState(),await this._userManager.signinSilent(this.createArguments()),this.success(e)}catch(t){try{return await this._userManager.clearStaleState(),await this._userManager.signinRedirect(this.createArguments(e)),this.redirect()}catch(e){return this.error(this.getExceptionMessage(e))}}}async completeSignIn(e){const t=await this.loginRequired(e),r=await this.stateExists(e);try{const t=await this._userManager.signinCallback(e);return window.self!==window.top?this.operationCompleted():this.success(t&&t.state)}catch(e){return t||window.self!==window.top||!r?this.operationCompleted():this.error("There was an error signing in.")}}async signOut(e){try{return await this._userManager.metadataService.getEndSessionEndpoint()?(await this._userManager.signoutRedirect(this.createArguments(e)),this.redirect()):(await this._userManager.removeUser(),this.success(e))}catch(e){return this.error(this.getExceptionMessage(e))}}async completeSignOut(e){try{if(await this.stateExists(e)){const t=await this._userManager.signoutCallback(e);return this.success(t&&t.state)}return this.operationCompleted()}catch(e){return this.error(this.getExceptionMessage(e))}}getExceptionMessage(e){return function(e){return e&&e.error_description}(e)?e.error_description:function(e){return e&&e.message}(e)?e.message:e.toString()}async stateExists(e){const t=new URLSearchParams(new URL(e).search).get("state");return t&&this._userManager.settings.stateStore?await this._userManager.settings.stateStore.get(t):void 0}async loginRequired(e){const t=new URLSearchParams(new URL(e).search).get("error");if(t&&this._userManager.settings.stateStore){return"login_required"===await this._userManager.settings.stateStore.get(t)}return!1}createArguments(e){return{useReplaceToNavigate:!0,data:e}}error(e){return{status:o.Failure,errorMessage:e}}success(e){return{status:o.Success,state:e}}redirect(){return{status:o.Redirect}}operationCompleted(){return{status:o.OperationCompleted}}}class a{static init(e){return a._initialized||(a._initialized=a.initializeCore(e)),a._initialized}static handleCallback(){return a.initializeCore()}static async initializeCore(e){const t=e||a.resolveCachedSettings();if(!e&&t){const e=a.createUserManagerCore(t);window.parent!==window&&!window.opener&&window.frameElement&&e.settings.redirect_uri&&location.href.startsWith(e.settings.redirect_uri)&&(a.instance=new s(e),a._initialized=(async()=>{await a.instance.completeSignIn(location.href)})())}else if(e){const t=await a.createUserManager(e);a.instance=new s(t)}}static resolveCachedSettings(){const e=window.sessionStorage.getItem(`${a._infrastructureKey}.CachedAuthSettings`);return e?JSON.parse(e):void 0}static getUser(){return a.instance.getUser()}static getAccessToken(e){return a.instance.getAccessToken(e)}static signIn(e){return a.instance.signIn(e)}static async completeSignIn(e){let t=this._pendingOperations[e];return t||(t=a.instance.completeSignIn(e),await t,delete this._pendingOperations[e]),t}static signOut(e){return a.instance.signOut(e)}static async completeSignOut(e){let t=this._pendingOperations[e];return t||(t=a.instance.completeSignOut(e),await t,delete this._pendingOperations[e]),t}static async createUserManager(e){let t;if(function(e){return e.hasOwnProperty("configurationEndpoint")}(e)){const r=await fetch(e.configurationEndpoint);if(!r.ok)throw new Error(`Could not load settings from '${e.configurationEndpoint}'`);t=await r.json()}else e.scope||(e.scope=e.defaultScopes.join(" ")),null===e.response_type&&delete e.response_type,t=e;return window.sessionStorage.setItem(`${a._infrastructureKey}.CachedAuthSettings`,JSON.stringify(t)),a.createUserManagerCore(t)}static createUserManagerCore(e){const t=new n.UserManager(e);return t.events.addUserSignedOut(async()=>{t.removeUser()}),t}}t.AuthenticationService=a,a._infrastructureKey="Microsoft.AspNetCore.Components.WebAssembly.Authentication",a._pendingOperations={},a.handleCallback(),window.AuthenticationService=a},function(e,t,r){var n;n=function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=22)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r=4){for(var e=arguments.length,t=Array(e),r=0;r=3){for(var e=arguments.length,t=Array(e),r=0;r=2){for(var e=arguments.length,t=Array(e),r=0;r=1){for(var e=arguments.length,t=Array(e),r=0;r1&&void 0!==arguments[1]?arguments[1]:o.JsonService;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t)throw i.Log.error("MetadataService: No settings passed to MetadataService"),new Error("settings");this._settings=t,this._jsonService=new r(["application/jwk-set+json"])}return e.prototype.getMetadata=function(){var e=this;return this._settings.metadata?(i.Log.debug("MetadataService.getMetadata: Returning metadata from settings"),Promise.resolve(this._settings.metadata)):this.metadataUrl?(i.Log.debug("MetadataService.getMetadata: getting metadata from",this.metadataUrl),this._jsonService.getJson(this.metadataUrl).then((function(t){return i.Log.debug("MetadataService.getMetadata: json received"),e._settings.metadata=t,t}))):(i.Log.error("MetadataService.getMetadata: No authority or metadataUrl configured on settings"),Promise.reject(new Error("No authority or metadataUrl configured on settings")))},e.prototype.getIssuer=function(){return this._getMetadataProperty("issuer")},e.prototype.getAuthorizationEndpoint=function(){return this._getMetadataProperty("authorization_endpoint")},e.prototype.getUserInfoEndpoint=function(){return this._getMetadataProperty("userinfo_endpoint")},e.prototype.getTokenEndpoint=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._getMetadataProperty("token_endpoint",e)},e.prototype.getCheckSessionIframe=function(){return this._getMetadataProperty("check_session_iframe",!0)},e.prototype.getEndSessionEndpoint=function(){return this._getMetadataProperty("end_session_endpoint",!0)},e.prototype.getRevocationEndpoint=function(){return this._getMetadataProperty("revocation_endpoint",!0)},e.prototype.getKeysEndpoint=function(){return this._getMetadataProperty("jwks_uri",!0)},e.prototype._getMetadataProperty=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i.Log.debug("MetadataService.getMetadataProperty for: "+e),this.getMetadata().then((function(r){if(i.Log.debug("MetadataService.getMetadataProperty: metadata recieved"),void 0===r[e]){if(!0===t)return void i.Log.warn("MetadataService.getMetadataProperty: Metadata does not contain optional property "+e);throw i.Log.error("MetadataService.getMetadataProperty: Metadata does not contain property "+e),new Error("Metadata does not contain property "+e)}return r[e]}))},e.prototype.getSigningKeys=function(){var e=this;return this._settings.signingKeys?(i.Log.debug("MetadataService.getSigningKeys: Returning signingKeys from settings"),Promise.resolve(this._settings.signingKeys)):this._getMetadataProperty("jwks_uri").then((function(t){return i.Log.debug("MetadataService.getSigningKeys: jwks_uri received",t),e._jsonService.getJson(t).then((function(t){if(i.Log.debug("MetadataService.getSigningKeys: key set received",t),!t.keys)throw i.Log.error("MetadataService.getSigningKeys: Missing keys on keyset"),new Error("Missing keys on keyset");return e._settings.signingKeys=t.keys,e._settings.signingKeys}))}))},n(e,[{key:"metadataUrl",get:function(){return this._metadataUrl||(this._settings.metadataUrl?this._metadataUrl=this._settings.metadataUrl:(this._metadataUrl=this._settings.authority,this._metadataUrl&&this._metadataUrl.indexOf(".well-known/openid-configuration")<0&&("/"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+="/"),this._metadataUrl+=".well-known/openid-configuration"))),this._metadataUrl}}]),e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UrlUtility=void 0;var n=r(0),i=r(1);t.UrlUtility=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.addQueryParam=function(e,t,r){return e.indexOf("?")<0&&(e+="?"),"?"!==e[e.length-1]&&(e+="&"),e+=encodeURIComponent(t),(e+="=")+encodeURIComponent(r)},e.parseUrlFragment=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.Global;"string"!=typeof e&&(e=r.location.href);var o=e.lastIndexOf(t);o>=0&&(e=e.substr(o+1)),"?"===t&&(o=e.indexOf("#"))>=0&&(e=e.substr(0,o));for(var s,a={},u=/([^&=]+)=([^&]*)/g,c=0;s=u.exec(e);)if(a[decodeURIComponent(s[1])]=decodeURIComponent(s[2]),c++>50)return n.Log.error("UrlUtility.parseUrlFragment: response exceeded expected number of parameters",e),{error:"Response exceeded expected number of parameters"};for(var h in a)return a;return{}},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JoseUtil=void 0;var n=r(25),i=function(e){return e&&e.__esModule?e:{default:e}}(r(32));t.JoseUtil=(0,i.default)({jws:n.jws,KeyUtil:n.KeyUtil,X509:n.X509,crypto:n.crypto,hextob64u:n.hextob64u,b64tohex:n.b64tohex,AllowedSigningAlgs:n.AllowedSigningAlgs})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OidcClientSettings=void 0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=t.authority,i=t.metadataUrl,o=t.metadata,l=t.signingKeys,f=t.client_id,g=t.client_secret,d=t.response_type,p=void 0===d?c:d,v=t.scope,y=void 0===v?h:v,m=t.redirect_uri,_=t.post_logout_redirect_uri,S=t.prompt,w=t.display,F=t.max_age,b=t.ui_locales,E=t.acr_values,x=t.resource,k=t.response_mode,A=t.filterProtocolClaims,P=void 0===A||A,C=t.loadUserInfo,T=void 0===C||C,R=t.staleStateAge,I=void 0===R?900:R,D=t.clockSkew,U=void 0===D?300:D,L=t.userInfoJwtIssuer,N=void 0===L?"OP":L,O=t.stateStore,B=void 0===O?new s.WebStorageStateStore:O,M=t.ResponseValidatorCtor,j=void 0===M?a.ResponseValidator:M,H=t.MetadataServiceCtor,K=void 0===H?u.MetadataService:H,V=t.extraQueryParams,q=void 0===V?{}:V,J=t.extraTokenParams,W=void 0===J?{}:J;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._authority=r,this._metadataUrl=i,this._metadata=o,this._signingKeys=l,this._client_id=f,this._client_secret=g,this._response_type=p,this._scope=y,this._redirect_uri=m,this._post_logout_redirect_uri=_,this._prompt=S,this._display=w,this._max_age=F,this._ui_locales=b,this._acr_values=E,this._resource=x,this._response_mode=k,this._filterProtocolClaims=!!P,this._loadUserInfo=!!T,this._staleStateAge=I,this._clockSkew=U,this._userInfoJwtIssuer=N,this._stateStore=B,this._validator=new j(this),this._metadataService=new K(this),this._extraQueryParams="object"===(void 0===q?"undefined":n(q))?q:{},this._extraTokenParams="object"===(void 0===W?"undefined":n(W))?W:{}}return i(e,[{key:"client_id",get:function(){return this._client_id},set:function(e){if(this._client_id)throw o.Log.error("OidcClientSettings.set_client_id: client_id has already been assigned."),new Error("client_id has already been assigned.");this._client_id=e}},{key:"client_secret",get:function(){return this._client_secret}},{key:"response_type",get:function(){return this._response_type}},{key:"scope",get:function(){return this._scope}},{key:"redirect_uri",get:function(){return this._redirect_uri}},{key:"post_logout_redirect_uri",get:function(){return this._post_logout_redirect_uri}},{key:"prompt",get:function(){return this._prompt}},{key:"display",get:function(){return this._display}},{key:"max_age",get:function(){return this._max_age}},{key:"ui_locales",get:function(){return this._ui_locales}},{key:"acr_values",get:function(){return this._acr_values}},{key:"resource",get:function(){return this._resource}},{key:"response_mode",get:function(){return this._response_mode}},{key:"authority",get:function(){return this._authority},set:function(e){if(this._authority)throw o.Log.error("OidcClientSettings.set_authority: authority has already been assigned."),new Error("authority has already been assigned.");this._authority=e}},{key:"metadataUrl",get:function(){return this._metadataUrl||(this._metadataUrl=this.authority,this._metadataUrl&&this._metadataUrl.indexOf(".well-known/openid-configuration")<0&&("/"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+="/"),this._metadataUrl+=".well-known/openid-configuration")),this._metadataUrl}},{key:"metadata",get:function(){return this._metadata},set:function(e){this._metadata=e}},{key:"signingKeys",get:function(){return this._signingKeys},set:function(e){this._signingKeys=e}},{key:"filterProtocolClaims",get:function(){return this._filterProtocolClaims}},{key:"loadUserInfo",get:function(){return this._loadUserInfo}},{key:"staleStateAge",get:function(){return this._staleStateAge}},{key:"clockSkew",get:function(){return this._clockSkew}},{key:"userInfoJwtIssuer",get:function(){return this._userInfoJwtIssuer}},{key:"stateStore",get:function(){return this._stateStore}},{key:"validator",get:function(){return this._validator}},{key:"metadataService",get:function(){return this._metadataService}},{key:"extraQueryParams",get:function(){return this._extraQueryParams},set:function(e){"object"===(void 0===e?"undefined":n(e))?this._extraQueryParams=e:this._extraQueryParams={}}},{key:"extraTokenParams",get:function(){return this._extraTokenParams},set:function(e){"object"===(void 0===e?"undefined":n(e))?this._extraTokenParams=e:this._extraTokenParams={}}}]),e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebStorageStateStore=void 0;var n=r(0),i=r(1);t.WebStorageStateStore=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.prefix,n=void 0===r?"oidc.":r,o=t.store,s=void 0===o?i.Global.localStorage:o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._store=s,this._prefix=n}return e.prototype.set=function(e,t){return n.Log.debug("WebStorageStateStore.set",e),e=this._prefix+e,this._store.setItem(e,t),Promise.resolve()},e.prototype.get=function(e){n.Log.debug("WebStorageStateStore.get",e),e=this._prefix+e;var t=this._store.getItem(e);return Promise.resolve(t)},e.prototype.remove=function(e){n.Log.debug("WebStorageStateStore.remove",e),e=this._prefix+e;var t=this._store.getItem(e);return this._store.removeItem(e),Promise.resolve(t)},e.prototype.getAllKeys=function(){n.Log.debug("WebStorageStateStore.getAllKeys");for(var e=[],t=0;t0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.Global.XMLHttpRequest,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t&&Array.isArray(t)?this._contentTypes=t.slice():this._contentTypes=[],this._contentTypes.push("application/json"),n&&this._contentTypes.push("application/jwt"),this._XMLHttpRequest=r,this._jwtHandler=n}return e.prototype.getJson=function(e,t){var r=this;if(!e)throw n.Log.error("JsonService.getJson: No url passed"),new Error("url");return n.Log.debug("JsonService.getJson, url: ",e),new Promise((function(i,o){var s=new r._XMLHttpRequest;s.open("GET",e);var a=r._contentTypes,u=r._jwtHandler;s.onload=function(){if(n.Log.debug("JsonService.getJson: HTTP response received, status",s.status),200===s.status){var t=s.getResponseHeader("Content-Type");if(t){var r=a.find((function(e){if(t.startsWith(e))return!0}));if("application/jwt"==r)return void u(s).then(i,o);if(r)try{return void i(JSON.parse(s.responseText))}catch(e){return n.Log.error("JsonService.getJson: Error parsing JSON response",e.message),void o(e)}}o(Error("Invalid response Content-Type: "+t+", from URL: "+e))}else o(Error(s.statusText+" ("+s.status+")"))},s.onerror=function(){n.Log.error("JsonService.getJson: network error"),o(Error("Network Error"))},t&&(n.Log.debug("JsonService.getJson: token passed, setting Authorization header"),s.setRequestHeader("Authorization","Bearer "+t)),s.send()}))},e.prototype.postForm=function(e,t){var r=this;if(!e)throw n.Log.error("JsonService.postForm: No url passed"),new Error("url");return n.Log.debug("JsonService.postForm, url: ",e),new Promise((function(i,o){var s=new r._XMLHttpRequest;s.open("POST",e);var a=r._contentTypes;s.onload=function(){if(n.Log.debug("JsonService.postForm: HTTP response received, status",s.status),200!==s.status){if(400===s.status&&(r=s.getResponseHeader("Content-Type"))&&a.find((function(e){if(r.startsWith(e))return!0})))try{var t=JSON.parse(s.responseText);if(t&&t.error)return n.Log.error("JsonService.postForm: Error from server: ",t.error),void o(new Error(t.error))}catch(e){return n.Log.error("JsonService.postForm: Error parsing JSON response",e.message),void o(e)}o(Error(s.statusText+" ("+s.status+")"))}else{var r;if((r=s.getResponseHeader("Content-Type"))&&a.find((function(e){if(r.startsWith(e))return!0})))try{return void i(JSON.parse(s.responseText))}catch(e){return n.Log.error("JsonService.postForm: Error parsing JSON response",e.message),void o(e)}o(Error("Invalid response Content-Type: "+r+", from URL: "+e))}},s.onerror=function(){n.Log.error("JsonService.postForm: network error"),o(Error("Network Error"))};var u="";for(var c in t){var h=t[c];h&&(u.length>0&&(u+="&"),u+=encodeURIComponent(c),u+="=",u+=encodeURIComponent(h))}s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(u)}))},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.State=void 0;var n=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=t.id,n=t.data,i=t.created,s=t.request_type;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._id=r||(0,o.default)(),this._data=n,this._created="number"==typeof i&&i>0?i:parseInt(Date.now()/1e3),this._request_type=s}return e.prototype.toStorageString=function(){return i.Log.debug("State.toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})},e.fromStorageString=function(t){return i.Log.debug("State.fromStorageString"),new e(JSON.parse(t))},e.clearStaleState=function(t,r){var n=Date.now()/1e3-r;return t.getAllKeys().then((function(r){i.Log.debug("State.clearStaleState: got keys",r);for(var o=[],s=function(s){var a=r[s];u=t.get(a).then((function(r){var o=!1;if(r)try{var s=e.fromStorageString(r);i.Log.debug("State.clearStaleState: got item from key: ",a,s.created),s.created<=n&&(o=!0)}catch(e){i.Log.error("State.clearStaleState: Error parsing state for key",a,e.message),o=!0}else i.Log.debug("State.clearStaleState: no item in storage for key: ",a),o=!0;if(o)return i.Log.debug("State.clearStaleState: removed item for key: ",a),t.remove(a)})),o.push(u)},a=0;a0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t instanceof o.OidcClientSettings?this._settings=t:this._settings=new o.OidcClientSettings(t)}return e.prototype.createSigninRequest=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.response_type,n=t.scope,o=t.redirect_uri,s=t.data,u=t.state,c=t.prompt,h=t.display,l=t.max_age,f=t.ui_locales,g=t.id_token_hint,d=t.login_hint,p=t.acr_values,v=t.resource,y=t.request,m=t.request_uri,_=t.response_mode,S=t.extraQueryParams,w=t.extraTokenParams,F=t.request_type,b=t.skipUserInfo,E=arguments[1];i.Log.debug("OidcClient.createSigninRequest");var x=this._settings.client_id;r=r||this._settings.response_type,n=n||this._settings.scope,o=o||this._settings.redirect_uri,c=c||this._settings.prompt,h=h||this._settings.display,l=l||this._settings.max_age,f=f||this._settings.ui_locales,p=p||this._settings.acr_values,v=v||this._settings.resource,_=_||this._settings.response_mode,S=S||this._settings.extraQueryParams,w=w||this._settings.extraTokenParams;var k=this._settings.authority;return a.SigninRequest.isCode(r)&&"code"!==r?Promise.reject(new Error("OpenID Connect hybrid flow is not supported")):this._metadataService.getAuthorizationEndpoint().then((function(t){i.Log.debug("OidcClient.createSigninRequest: Received authorization endpoint",t);var A=new a.SigninRequest({url:t,client_id:x,redirect_uri:o,response_type:r,scope:n,data:s||u,authority:k,prompt:c,display:h,max_age:l,ui_locales:f,id_token_hint:g,login_hint:d,acr_values:p,resource:v,request:y,request_uri:m,extraQueryParams:S,extraTokenParams:w,request_type:F,response_mode:_,client_secret:e._settings.client_secret,skipUserInfo:b}),P=A.state;return(E=E||e._stateStore).set(P.id,P.toStorageString()).then((function(){return A}))}))},e.prototype.readSigninResponseState=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug("OidcClient.readSigninResponseState");var n="query"===this._settings.response_mode||!this._settings.response_mode&&a.SigninRequest.isCode(this._settings.response_type)?"?":"#",o=new u.SigninResponse(e,n);return o.state?(t=t||this._stateStore,(r?t.remove.bind(t):t.get.bind(t))(o.state).then((function(e){if(!e)throw i.Log.error("OidcClient.readSigninResponseState: No matching state found in storage"),new Error("No matching state found in storage");return{state:l.SigninState.fromStorageString(e),response:o}}))):(i.Log.error("OidcClient.readSigninResponseState: No state in response"),Promise.reject(new Error("No state in response")))},e.prototype.processSigninResponse=function(e,t){var r=this;return i.Log.debug("OidcClient.processSigninResponse"),this.readSigninResponseState(e,t,!0).then((function(e){var t=e.state,n=e.response;return i.Log.debug("OidcClient.processSigninResponse: Received state from storage; validating response"),r._validator.validateSigninResponse(t,n)}))},e.prototype.createSignoutRequest=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.id_token_hint,n=t.data,o=t.state,s=t.post_logout_redirect_uri,a=t.extraQueryParams,u=t.request_type,h=arguments[1];return i.Log.debug("OidcClient.createSignoutRequest"),s=s||this._settings.post_logout_redirect_uri,a=a||this._settings.extraQueryParams,this._metadataService.getEndSessionEndpoint().then((function(t){if(!t)throw i.Log.error("OidcClient.createSignoutRequest: No end session endpoint url returned"),new Error("no end session endpoint");i.Log.debug("OidcClient.createSignoutRequest: Received end session endpoint",t);var l=new c.SignoutRequest({url:t,id_token_hint:r,post_logout_redirect_uri:s,data:n||o,extraQueryParams:a,request_type:u}),f=l.state;return f&&(i.Log.debug("OidcClient.createSignoutRequest: Signout request has state to persist"),(h=h||e._stateStore).set(f.id,f.toStorageString())),l}))},e.prototype.readSignoutResponseState=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug("OidcClient.readSignoutResponseState");var n=new h.SignoutResponse(e);if(!n.state)return i.Log.debug("OidcClient.readSignoutResponseState: No state in response"),n.error?(i.Log.warn("OidcClient.readSignoutResponseState: Response was error: ",n.error),Promise.reject(new s.ErrorResponse(n))):Promise.resolve({undefined:void 0,response:n});var o=n.state;return t=t||this._stateStore,(r?t.remove.bind(t):t.get.bind(t))(o).then((function(e){if(!e)throw i.Log.error("OidcClient.readSignoutResponseState: No matching state found in storage"),new Error("No matching state found in storage");return{state:f.State.fromStorageString(e),response:n}}))},e.prototype.processSignoutResponse=function(e,t){var r=this;return i.Log.debug("OidcClient.processSignoutResponse"),this.readSignoutResponseState(e,t,!0).then((function(e){var t=e.state,n=e.response;return t?(i.Log.debug("OidcClient.processSignoutResponse: Received state from storage; validating response"),r._validator.validateSignoutResponse(t,n)):(i.Log.debug("OidcClient.processSignoutResponse: No state from storage; skipping validating response"),n)}))},e.prototype.clearStaleState=function(e){return i.Log.debug("OidcClient.clearStaleState"),e=e||this._stateStore,f.State.clearStaleState(e,this.settings.staleStateAge)},n(e,[{key:"_stateStore",get:function(){return this.settings.stateStore}},{key:"_validator",get:function(){return this.settings.validator}},{key:"_metadataService",get:function(){return this.settings.metadataService}},{key:"settings",get:function(){return this._settings}},{key:"metadataService",get:function(){return this._metadataService}}]),e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenClient=void 0;var n=r(7),i=r(2),o=r(0);t.TokenClient=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t)throw o.Log.error("TokenClient.ctor: No settings passed"),new Error("settings");this._settings=t,this._jsonService=new r,this._metadataService=new s(this._settings)}return e.prototype.exchangeCode=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(t=Object.assign({},t)).grant_type=t.grant_type||"authorization_code",t.client_id=t.client_id||this._settings.client_id,t.redirect_uri=t.redirect_uri||this._settings.redirect_uri,t.code?t.redirect_uri?t.code_verifier?t.client_id?this._metadataService.getTokenEndpoint(!1).then((function(r){return o.Log.debug("TokenClient.exchangeCode: Received token endpoint"),e._jsonService.postForm(r,t).then((function(e){return o.Log.debug("TokenClient.exchangeCode: response received"),e}))})):(o.Log.error("TokenClient.exchangeCode: No client_id passed"),Promise.reject(new Error("A client_id is required"))):(o.Log.error("TokenClient.exchangeCode: No code_verifier passed"),Promise.reject(new Error("A code_verifier is required"))):(o.Log.error("TokenClient.exchangeCode: No redirect_uri passed"),Promise.reject(new Error("A redirect_uri is required"))):(o.Log.error("TokenClient.exchangeCode: No code passed"),Promise.reject(new Error("A code is required")))},e.prototype.exchangeRefreshToken=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(t=Object.assign({},t)).grant_type=t.grant_type||"refresh_token",t.client_id=t.client_id||this._settings.client_id,t.client_secret=t.client_secret||this._settings.client_secret,t.refresh_token?t.client_id?this._metadataService.getTokenEndpoint(!1).then((function(r){return o.Log.debug("TokenClient.exchangeRefreshToken: Received token endpoint"),e._jsonService.postForm(r,t).then((function(e){return o.Log.debug("TokenClient.exchangeRefreshToken: response received"),e}))})):(o.Log.error("TokenClient.exchangeRefreshToken: No client_id passed"),Promise.reject(new Error("A client_id is required"))):(o.Log.error("TokenClient.exchangeRefreshToken: No refresh_token passed"),Promise.reject(new Error("A refresh_token is required")))},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ErrorResponse=void 0;var n=r(0);t.ErrorResponse=function(e){function t(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=r.error,o=r.error_description,s=r.error_uri,a=r.state,u=r.session_state;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),!i)throw n.Log.error("No error passed to ErrorResponse"),new Error("error");var c=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,o||i));return c.name="ErrorResponse",c.error=i,c.error_description=o,c.error_uri=s,c.state=a,c.session_state=u,c}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(Error)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SigninRequest=void 0;var n=r(0),i=r(3),o=r(13);t.SigninRequest=function(){function e(t){var r=t.url,s=t.client_id,a=t.redirect_uri,u=t.response_type,c=t.scope,h=t.authority,l=t.data,f=t.prompt,g=t.display,d=t.max_age,p=t.ui_locales,v=t.id_token_hint,y=t.login_hint,m=t.acr_values,_=t.resource,S=t.response_mode,w=t.request,F=t.request_uri,b=t.extraQueryParams,E=t.request_type,x=t.client_secret,k=t.extraTokenParams,A=t.skipUserInfo;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!r)throw n.Log.error("SigninRequest.ctor: No url passed"),new Error("url");if(!s)throw n.Log.error("SigninRequest.ctor: No client_id passed"),new Error("client_id");if(!a)throw n.Log.error("SigninRequest.ctor: No redirect_uri passed"),new Error("redirect_uri");if(!u)throw n.Log.error("SigninRequest.ctor: No response_type passed"),new Error("response_type");if(!c)throw n.Log.error("SigninRequest.ctor: No scope passed"),new Error("scope");if(!h)throw n.Log.error("SigninRequest.ctor: No authority passed"),new Error("authority");var P=e.isOidc(u),C=e.isCode(u);S||(S=e.isCode(u)?"query":null),this.state=new o.SigninState({nonce:P,data:l,client_id:s,authority:h,redirect_uri:a,code_verifier:C,request_type:E,response_mode:S,client_secret:x,scope:c,extraTokenParams:k,skipUserInfo:A}),r=i.UrlUtility.addQueryParam(r,"client_id",s),r=i.UrlUtility.addQueryParam(r,"redirect_uri",a),r=i.UrlUtility.addQueryParam(r,"response_type",u),r=i.UrlUtility.addQueryParam(r,"scope",c),r=i.UrlUtility.addQueryParam(r,"state",this.state.id),P&&(r=i.UrlUtility.addQueryParam(r,"nonce",this.state.nonce)),C&&(r=i.UrlUtility.addQueryParam(r,"code_challenge",this.state.code_challenge),r=i.UrlUtility.addQueryParam(r,"code_challenge_method","S256"));var T={prompt:f,display:g,max_age:d,ui_locales:p,id_token_hint:v,login_hint:y,acr_values:m,resource:_,request:w,request_uri:F,response_mode:S};for(var R in T)T[R]&&(r=i.UrlUtility.addQueryParam(r,R,T[R]));for(var I in b)r=i.UrlUtility.addQueryParam(r,I,b[I]);this.url=r}return e.isOidc=function(e){return!!e.split(/\s+/g).filter((function(e){return"id_token"===e}))[0]},e.isOAuth=function(e){return!!e.split(/\s+/g).filter((function(e){return"token"===e}))[0]},e.isCode=function(e){return!!e.split(/\s+/g).filter((function(e){return"code"===e}))[0]},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SigninState=void 0;var n=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.nonce,i=r.authority,o=r.client_id,u=r.redirect_uri,c=r.code_verifier,h=r.response_mode,l=r.client_secret,f=r.scope,g=r.extraTokenParams,d=r.skipUserInfo;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var p=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,arguments[0]));if(!0===n?p._nonce=(0,a.default)():n&&(p._nonce=n),!0===c?p._code_verifier=(0,a.default)()+(0,a.default)()+(0,a.default)():c&&(p._code_verifier=c),p.code_verifier){var v=s.JoseUtil.hashString(p.code_verifier,"SHA256");p._code_challenge=s.JoseUtil.hexToBase64Url(v)}return p._redirect_uri=u,p._authority=i,p._client_id=o,p._response_mode=h,p._client_secret=l,p._scope=f,p._extraTokenParams=g,p._skipUserInfo=d,p}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.toStorageString=function(){return i.Log.debug("SigninState.toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,nonce:this.nonce,code_verifier:this.code_verifier,redirect_uri:this.redirect_uri,authority:this.authority,client_id:this.client_id,response_mode:this.response_mode,client_secret:this.client_secret,scope:this.scope,extraTokenParams:this.extraTokenParams,skipUserInfo:this.skipUserInfo})},t.fromStorageString=function(e){return i.Log.debug("SigninState.fromStorageString"),new t(JSON.parse(e))},n(t,[{key:"nonce",get:function(){return this._nonce}},{key:"authority",get:function(){return this._authority}},{key:"client_id",get:function(){return this._client_id}},{key:"redirect_uri",get:function(){return this._redirect_uri}},{key:"code_verifier",get:function(){return this._code_verifier}},{key:"code_challenge",get:function(){return this._code_challenge}},{key:"response_mode",get:function(){return this._response_mode}},{key:"client_secret",get:function(){return this._client_secret}},{key:"scope",get:function(){return this._scope}},{key:"extraTokenParams",get:function(){return this._extraTokenParams}},{key:"skipUserInfo",get:function(){return this._skipUserInfo}}]),t}(o.State)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return(0,n.default)().replace(/-/g,"")};var n=function(e){return e&&e.__esModule?e:{default:e}}(r(33));e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.User=void 0;var n=function(){function e(e,t){for(var r=0;r0){var r=parseInt(Date.now()/1e3);this.expires_at=r+t}}},{key:"expired",get:function(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:"scopes",get:function(){return(this.scope||"").split(" ")}}]),e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AccessTokenEvents=void 0;var n=r(0),i=r(48);t.AccessTokenEvents=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.accessTokenExpiringNotificationTime,n=void 0===r?60:r,o=t.accessTokenExpiringTimer,s=void 0===o?new i.Timer("Access token expiring"):o,a=t.accessTokenExpiredTimer,u=void 0===a?new i.Timer("Access token expired"):a;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._accessTokenExpiringNotificationTime=n,this._accessTokenExpiring=s,this._accessTokenExpired=u}return e.prototype.load=function(e){if(e.access_token&&void 0!==e.expires_in){var t=e.expires_in;if(n.Log.debug("AccessTokenEvents.load: access token present, remaining duration:",t),t>0){var r=t-this._accessTokenExpiringNotificationTime;r<=0&&(r=1),n.Log.debug("AccessTokenEvents.load: registering expiring timer in:",r),this._accessTokenExpiring.init(r)}else n.Log.debug("AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration."),this._accessTokenExpiring.cancel();var i=t+1;n.Log.debug("AccessTokenEvents.load: registering expired timer in:",i),this._accessTokenExpired.init(i)}else this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},e.prototype.unload=function(){n.Log.debug("AccessTokenEvents.unload: canceling existing access token timers"),this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},e.prototype.addAccessTokenExpiring=function(e){this._accessTokenExpiring.addHandler(e)},e.prototype.removeAccessTokenExpiring=function(e){this._accessTokenExpiring.removeHandler(e)},e.prototype.addAccessTokenExpired=function(e){this._accessTokenExpired.addHandler(e)},e.prototype.removeAccessTokenExpired=function(e){this._accessTokenExpired.removeHandler(e)},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Event=void 0;var n=r(0);t.Event=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._name=t,this._callbacks=[]}return e.prototype.addHandler=function(e){this._callbacks.push(e)},e.prototype.removeHandler=function(e){var t=this._callbacks.findIndex((function(t){return t===e}));t>=0&&this._callbacks.splice(t,1)},e.prototype.raise=function(){n.Log.debug("Event: Raising event: "+this._name);for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:o.CheckSessionIFrame,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.Global.timer;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t)throw i.Log.error("SessionMonitor.ctor: No user manager passed to SessionMonitor"),new Error("userManager");this._userManager=t,this._CheckSessionIFrameCtor=n,this._timer=a,this._userManager.events.addUserLoaded(this._start.bind(this)),this._userManager.events.addUserUnloaded(this._stop.bind(this)),this._userManager.getUser().then((function(e){e?r._start(e):r._settings.monitorAnonymousSession&&r._userManager.querySessionStatus().then((function(e){var t={session_state:e.session_state};e.sub&&e.sid&&(t.profile={sub:e.sub,sid:e.sid}),r._start(t)})).catch((function(e){i.Log.error("SessionMonitor ctor: error from querySessionStatus:",e.message)}))})).catch((function(e){i.Log.error("SessionMonitor ctor: error from getUser:",e.message)}))}return e.prototype._start=function(e){var t=this,r=e.session_state;r&&(e.profile?(this._sub=e.profile.sub,this._sid=e.profile.sid,i.Log.debug("SessionMonitor._start: session_state:",r,", sub:",this._sub)):(this._sub=void 0,this._sid=void 0,i.Log.debug("SessionMonitor._start: session_state:",r,", anonymous user")),this._checkSessionIFrame?this._checkSessionIFrame.start(r):this._metadataService.getCheckSessionIframe().then((function(e){if(e){i.Log.debug("SessionMonitor._start: Initializing check session iframe");var n=t._client_id,o=t._checkSessionInterval,s=t._stopCheckSessionOnError;t._checkSessionIFrame=new t._CheckSessionIFrameCtor(t._callback.bind(t),n,e,o,s),t._checkSessionIFrame.load().then((function(){t._checkSessionIFrame.start(r)}))}else i.Log.warn("SessionMonitor._start: No check session iframe found in the metadata")})).catch((function(e){i.Log.error("SessionMonitor._start: Error from getCheckSessionIframe:",e.message)})))},e.prototype._stop=function(){var e=this;if(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&(i.Log.debug("SessionMonitor._stop"),this._checkSessionIFrame.stop()),this._settings.monitorAnonymousSession)var t=this._timer.setInterval((function(){e._timer.clearInterval(t),e._userManager.querySessionStatus().then((function(t){var r={session_state:t.session_state};t.sub&&t.sid&&(r.profile={sub:t.sub,sid:t.sid}),e._start(r)})).catch((function(e){i.Log.error("SessionMonitor: error from querySessionStatus:",e.message)}))}),1e3)},e.prototype._callback=function(){var e=this;this._userManager.querySessionStatus().then((function(t){var r=!0;t?t.sub===e._sub?(r=!1,e._checkSessionIFrame.start(t.session_state),t.sid===e._sid?i.Log.debug("SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:",t.session_state):(i.Log.debug("SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:",t.session_state),e._userManager.events._raiseUserSessionChanged())):i.Log.debug("SessionMonitor._callback: Different subject signed into OP:",t.sub):i.Log.debug("SessionMonitor._callback: Subject no longer signed into OP"),r&&(e._sub?(i.Log.debug("SessionMonitor._callback: SessionMonitor._callback; raising signed out event"),e._userManager.events._raiseUserSignedOut()):(i.Log.debug("SessionMonitor._callback: SessionMonitor._callback; raising signed in event"),e._userManager.events._raiseUserSignedIn()))})).catch((function(t){e._sub&&(i.Log.debug("SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event",t.message),e._userManager.events._raiseUserSignedOut())}))},n(e,[{key:"_settings",get:function(){return this._userManager.settings}},{key:"_metadataService",get:function(){return this._userManager.metadataService}},{key:"_client_id",get:function(){return this._settings.client_id}},{key:"_checkSessionInterval",get:function(){return this._settings.checkSessionInterval}},{key:"_stopCheckSessionOnError",get:function(){return this._settings.stopCheckSessionOnError}}]),e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CheckSessionIFrame=void 0;var n=r(0);t.CheckSessionIFrame=function(){function e(t,r,n,i){var o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._callback=t,this._client_id=r,this._url=n,this._interval=i||2e3,this._stopOnError=o;var s=n.indexOf("/",n.indexOf("//")+2);this._frame_origin=n.substr(0,s),this._frame=window.document.createElement("iframe"),this._frame.style.visibility="hidden",this._frame.style.position="absolute",this._frame.style.display="none",this._frame.style.width=0,this._frame.style.height=0,this._frame.src=n}return e.prototype.load=function(){var e=this;return new Promise((function(t){e._frame.onload=function(){t()},window.document.body.appendChild(e._frame),e._boundMessageEvent=e._message.bind(e),window.addEventListener("message",e._boundMessageEvent,!1)}))},e.prototype._message=function(e){e.origin===this._frame_origin&&e.source===this._frame.contentWindow&&("error"===e.data?(n.Log.error("CheckSessionIFrame: error message from check session op iframe"),this._stopOnError&&this.stop()):"changed"===e.data?(n.Log.debug("CheckSessionIFrame: changed message from check session op iframe"),this.stop(),this._callback()):n.Log.debug("CheckSessionIFrame: "+e.data+" message from check session op iframe"))},e.prototype.start=function(e){var t=this;if(this._session_state!==e){n.Log.debug("CheckSessionIFrame.start"),this.stop(),this._session_state=e;var r=function(){t._frame.contentWindow.postMessage(t._client_id+" "+t._session_state,t._frame_origin)};r(),this._timer=window.setInterval(r,this._interval)}},e.prototype.stop=function(){this._session_state=null,this._timer&&(n.Log.debug("CheckSessionIFrame.stop"),window.clearInterval(this._timer),this._timer=null)},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenRevocationClient=void 0;var n=r(0),i=r(2),o=r(1);t.TokenRevocationClient=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.XMLHttpRequest,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t)throw n.Log.error("TokenRevocationClient.ctor: No settings provided"),new Error("No settings provided.");this._settings=t,this._XMLHttpRequestCtor=r,this._metadataService=new s(this._settings)}return e.prototype.revoke=function(e,t){var r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"access_token";if(!e)throw n.Log.error("TokenRevocationClient.revoke: No token provided"),new Error("No token provided.");if("access_token"!==i&&"refresh_token"!=i)throw n.Log.error("TokenRevocationClient.revoke: Invalid token type"),new Error("Invalid token type.");return this._metadataService.getRevocationEndpoint().then((function(o){if(o){n.Log.debug("TokenRevocationClient.revoke: Revoking "+i);var s=r._settings.client_id,a=r._settings.client_secret;return r._revoke(o,s,a,e,i)}if(t)throw n.Log.error("TokenRevocationClient.revoke: Revocation not supported"),new Error("Revocation not supported")}))},e.prototype._revoke=function(e,t,r,i,o){var s=this;return new Promise((function(a,u){var c=new s._XMLHttpRequestCtor;c.open("POST",e),c.onload=function(){n.Log.debug("TokenRevocationClient.revoke: HTTP response received, status",c.status),200===c.status?a():u(Error(c.statusText+" ("+c.status+")"))},c.onerror=function(){n.Log.debug("TokenRevocationClient.revoke: Network Error."),u("Network Error")};var h="client_id="+encodeURIComponent(t);r&&(h+="&client_secret="+encodeURIComponent(r)),h+="&token_type_hint="+encodeURIComponent(o),h+="&token="+encodeURIComponent(i),c.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),c.send(h)}))},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CordovaPopupWindow=void 0;var n=function(){function e(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.MetadataService,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.UserInfoService,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:c.JoseUtil,h=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.TokenClient;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t)throw i.Log.error("ResponseValidator.ctor: No settings passed to ResponseValidator"),new Error("settings");this._settings=t,this._metadataService=new r(this._settings),this._userInfoService=new n(this._settings),this._joseUtil=u,this._tokenClient=new h(this._settings)}return e.prototype.validateSigninResponse=function(e,t){var r=this;return i.Log.debug("ResponseValidator.validateSigninResponse"),this._processSigninParams(e,t).then((function(t){return i.Log.debug("ResponseValidator.validateSigninResponse: state processed"),r._validateTokens(e,t).then((function(t){return i.Log.debug("ResponseValidator.validateSigninResponse: tokens validated"),r._processClaims(e,t).then((function(e){return i.Log.debug("ResponseValidator.validateSigninResponse: claims processed"),e}))}))}))},e.prototype.validateSignoutResponse=function(e,t){return e.id!==t.state?(i.Log.error("ResponseValidator.validateSignoutResponse: State does not match"),Promise.reject(new Error("State does not match"))):(i.Log.debug("ResponseValidator.validateSignoutResponse: state validated"),t.state=e.data,t.error?(i.Log.warn("ResponseValidator.validateSignoutResponse: Response was error",t.error),Promise.reject(new u.ErrorResponse(t))):Promise.resolve(t))},e.prototype._processSigninParams=function(e,t){if(e.id!==t.state)return i.Log.error("ResponseValidator._processSigninParams: State does not match"),Promise.reject(new Error("State does not match"));if(!e.client_id)return i.Log.error("ResponseValidator._processSigninParams: No client_id on state"),Promise.reject(new Error("No client_id on state"));if(!e.authority)return i.Log.error("ResponseValidator._processSigninParams: No authority on state"),Promise.reject(new Error("No authority on state"));if(this._settings.authority){if(this._settings.authority&&this._settings.authority!==e.authority)return i.Log.error("ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state"),Promise.reject(new Error("authority mismatch on settings vs. signin state"))}else this._settings.authority=e.authority;if(this._settings.client_id){if(this._settings.client_id&&this._settings.client_id!==e.client_id)return i.Log.error("ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state"),Promise.reject(new Error("client_id mismatch on settings vs. signin state"))}else this._settings.client_id=e.client_id;return i.Log.debug("ResponseValidator._processSigninParams: state validated"),t.state=e.data,t.error?(i.Log.warn("ResponseValidator._processSigninParams: Response was error",t.error),Promise.reject(new u.ErrorResponse(t))):e.nonce&&!t.id_token?(i.Log.error("ResponseValidator._processSigninParams: Expecting id_token in response"),Promise.reject(new Error("No id_token in response"))):!e.nonce&&t.id_token?(i.Log.error("ResponseValidator._processSigninParams: Not expecting id_token in response"),Promise.reject(new Error("Unexpected id_token in response"))):e.code_verifier&&!t.code?(i.Log.error("ResponseValidator._processSigninParams: Expecting code in response"),Promise.reject(new Error("No code in response"))):!e.code_verifier&&t.code?(i.Log.error("ResponseValidator._processSigninParams: Not expecting code in response"),Promise.reject(new Error("Unexpected code in response"))):(t.scope||(t.scope=e.scope),Promise.resolve(t))},e.prototype._processClaims=function(e,t){var r=this;if(t.isOpenIdConnect){if(i.Log.debug("ResponseValidator._processClaims: response is OIDC, processing claims"),t.profile=this._filterProtocolClaims(t.profile),!0!==e.skipUserInfo&&this._settings.loadUserInfo&&t.access_token)return i.Log.debug("ResponseValidator._processClaims: loading user info"),this._userInfoService.getClaims(t.access_token).then((function(e){return i.Log.debug("ResponseValidator._processClaims: user info claims received from user info endpoint"),e.sub!==t.profile.sub?(i.Log.error("ResponseValidator._processClaims: sub from user info endpoint does not match sub in access_token"),Promise.reject(new Error("sub from user info endpoint does not match sub in access_token"))):(t.profile=r._mergeClaims(t.profile,e),i.Log.debug("ResponseValidator._processClaims: user info claims received, updated profile:",t.profile),t)}));i.Log.debug("ResponseValidator._processClaims: not loading user info")}else i.Log.debug("ResponseValidator._processClaims: response is not OIDC, not processing claims");return Promise.resolve(t)},e.prototype._mergeClaims=function(e,t){var r=Object.assign({},e);for(var i in t){var o=t[i];Array.isArray(o)||(o=[o]);for(var s=0;s1)return i.Log.error("ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata"),Promise.reject(new Error("No kid found in id_token and more than one key found in metadata"));u=a[0]}if(!u)return i.Log.error("ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys"),Promise.reject(new Error("No key matching kid or alg found in signing keys"));var c=e.client_id,h=r._settings.clockSkew;return i.Log.debug("ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: ",h),r._joseUtil.validateJwt(t.id_token,u,s,c,h).then((function(){return i.Log.debug("ResponseValidator._validateIdToken: JWT validation successful"),n.payload.sub?(t.profile=n.payload,t):(i.Log.error("ResponseValidator._validateIdToken: No sub present in id_token"),Promise.reject(new Error("No sub present in id_token")))}))}))}))},e.prototype._filterByAlg=function(e,t){var r=null;if(t.startsWith("RS"))r="RSA";else if(t.startsWith("PS"))r="PS";else{if(!t.startsWith("ES"))return i.Log.debug("ResponseValidator._filterByAlg: alg not supported: ",t),[];r="EC"}return i.Log.debug("ResponseValidator._filterByAlg: Looking for keys that match kty: ",r),e=e.filter((function(e){return e.kty===r})),i.Log.debug("ResponseValidator._filterByAlg: Number of keys that match kty: ",r,e.length),e},e.prototype._validateAccessToken=function(e){if(!e.profile)return i.Log.error("ResponseValidator._validateAccessToken: No profile loaded from id_token"),Promise.reject(new Error("No profile loaded from id_token"));if(!e.profile.at_hash)return i.Log.error("ResponseValidator._validateAccessToken: No at_hash in id_token"),Promise.reject(new Error("No at_hash in id_token"));if(!e.id_token)return i.Log.error("ResponseValidator._validateAccessToken: No id_token"),Promise.reject(new Error("No id_token"));var t=this._joseUtil.parseJwt(e.id_token);if(!t||!t.header)return i.Log.error("ResponseValidator._validateAccessToken: Failed to parse id_token",t),Promise.reject(new Error("Failed to parse id_token"));var r=t.header.alg;if(!r||5!==r.length)return i.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",r),Promise.reject(new Error("Unsupported alg: "+r));var n=r.substr(2,3);if(!n)return i.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",r,n),Promise.reject(new Error("Unsupported alg: "+r));if(256!==(n=parseInt(n))&&384!==n&&512!==n)return i.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",r,n),Promise.reject(new Error("Unsupported alg: "+r));var o="sha"+n,s=this._joseUtil.hashString(e.access_token,o);if(!s)return i.Log.error("ResponseValidator._validateAccessToken: access_token hash failed:",o),Promise.reject(new Error("Failed to validate at_hash"));var a=s.substr(0,s.length/2),u=this._joseUtil.hexToBase64Url(a);return u!==e.profile.at_hash?(i.Log.error("ResponseValidator._validateAccessToken: Failed to validate at_hash",u,e.profile.at_hash),Promise.reject(new Error("Failed to validate at_hash"))):(i.Log.debug("ResponseValidator._validateAccessToken: success"),Promise.resolve(e))},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserInfoService=void 0;var n=r(7),i=r(2),o=r(0),s=r(4);t.UserInfoService=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:s.JoseUtil;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t)throw o.Log.error("UserInfoService.ctor: No settings passed"),new Error("settings");this._settings=t,this._jsonService=new r(void 0,void 0,this._getClaimsFromJwt.bind(this)),this._metadataService=new a(this._settings),this._joseUtil=u}return e.prototype.getClaims=function(e){var t=this;return e?this._metadataService.getUserInfoEndpoint().then((function(r){return o.Log.debug("UserInfoService.getClaims: received userinfo url",r),t._jsonService.getJson(r,e).then((function(e){return o.Log.debug("UserInfoService.getClaims: claims received",e),e}))})):(o.Log.error("UserInfoService.getClaims: No token passed"),Promise.reject(new Error("A token is required")))},e.prototype._getClaimsFromJwt=function e(t){var r=this;try{var n=this._joseUtil.parseJwt(t.responseText);if(!n||!n.header||!n.payload)return o.Log.error("UserInfoService._getClaimsFromJwt: Failed to parse JWT",n),Promise.reject(new Error("Failed to parse id_token"));var i=n.header.kid,s=void 0;switch(this._settings.userInfoJwtIssuer){case"OP":s=this._metadataService.getIssuer();break;case"ANY":s=Promise.resolve(n.payload.iss);break;default:s=Promise.resolve(this._settings.userInfoJwtIssuer)}return s.then((function(e){return o.Log.debug("UserInfoService._getClaimsFromJwt: Received issuer:"+e),r._metadataService.getSigningKeys().then((function(s){if(!s)return o.Log.error("UserInfoService._getClaimsFromJwt: No signing keys from metadata"),Promise.reject(new Error("No signing keys from metadata"));o.Log.debug("UserInfoService._getClaimsFromJwt: Received signing keys");var a=void 0;if(i)a=s.filter((function(e){return e.kid===i}))[0];else{if((s=r._filterByAlg(s,n.header.alg)).length>1)return o.Log.error("UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata"),Promise.reject(new Error("No kid found in id_token and more than one key found in metadata"));a=s[0]}if(!a)return o.Log.error("UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys"),Promise.reject(new Error("No key matching kid or alg found in signing keys"));var u=r._settings.client_id,c=r._settings.clockSkew;return o.Log.debug("UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: ",c),r._joseUtil.validateJwt(t.responseText,a,e,u,c,void 0,!0).then((function(){return o.Log.debug("UserInfoService._getClaimsFromJwt: JWT validation successful"),n.payload}))}))}))}catch(e){return o.Log.error("UserInfoService._getClaimsFromJwt: Error parsing JWT response",e.message),void reject(e)}},e.prototype._filterByAlg=function(e,t){var r=null;if(t.startsWith("RS"))r="RSA";else if(t.startsWith("PS"))r="PS";else{if(!t.startsWith("ES"))return o.Log.debug("UserInfoService._filterByAlg: alg not supported: ",t),[];r="EC"}return o.Log.debug("UserInfoService._filterByAlg: Looking for keys that match kty: ",r),e=e.filter((function(e){return e.kty===r})),o.Log.debug("UserInfoService._filterByAlg: Number of keys that match kty: ",r,e.length),e},e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AllowedSigningAlgs=t.b64tohex=t.hextob64u=t.crypto=t.X509=t.KeyUtil=t.jws=void 0;var n=r(26);t.jws=n.jws,t.KeyUtil=n.KEYUTIL,t.X509=n.X509,t.crypto=n.crypto,t.hextob64u=n.hextob64u,t.b64tohex=n.b64tohex,t.AllowedSigningAlgs=["RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512"]},function(e,t,r){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n={userAgent:!1},i={}; -/*! -Copyright (c) 2011, Yahoo! Inc. All rights reserved. -Code licensed under the BSD License: -http://developer.yahoo.com/yui/license.html -version: 2.9.0 -*/if(void 0===o)var o={};o.lang={extend:function(e,t,r){if(!t||!e)throw new Error("YAHOO.lang.extend failed, please check that all dependencies are included.");var i=function(){};if(i.prototype=t.prototype,e.prototype=new i,e.prototype.constructor=e,e.superclass=t.prototype,t.prototype.constructor==Object.prototype.constructor&&(t.prototype.constructor=t),r){var o;for(o in r)e.prototype[o]=r[o];var s=function(){},a=["toString","valueOf"];try{/MSIE/.test(n.userAgent)&&(s=function(e,t){for(o=0;o>>2]>>>24-o%4*8&255;t[n+o>>>2]|=s<<24-(n+o)%4*8}else for(o=0;o>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=s.ceil(t/4)},clone:function(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new h.init(r,t/2)}},g=l.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],i=0;i>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new h.init(r,t)}},d=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(g.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return g.parse(unescape(encodeURIComponent(e)))}},p=u.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new h.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,r=t.words,n=t.sigBytes,i=this.blockSize,o=n/(4*i),a=(o=e?s.ceil(o):s.max((0|o)-this._minBufferSize,0))*i,u=s.min(4*a,n);if(a){for(var c=0;c>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,s=0;4>s&&i+.75*s>>6*(3-s)&63));if(t=n.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var r=e.length,n=this._map;(i=n.charAt(64))&&-1!=(i=e.indexOf(i))&&(r=i);for(var i=[],o=0,s=0;s>>6-s%4*2;i[o>>>2]|=(a|u)<<24-o%4*8,o++}return t.create(i,o)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(e){for(var t=y,r=(i=t.lib).WordArray,n=i.Hasher,i=t.algo,o=[],s=[],a=function(e){return 4294967296*(e-(0|e))|0},u=2,c=0;64>c;){var h;e:{h=u;for(var l=e.sqrt(h),f=2;f<=l;f++)if(!(h%f)){h=!1;break e}h=!0}h&&(8>c&&(o[c]=a(e.pow(u,.5))),s[c]=a(e.pow(u,1/3)),c++),u++}var g=[];i=i.SHA256=n.extend({_doReset:function(){this._hash=new r.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],u=r[4],c=r[5],h=r[6],l=r[7],f=0;64>f;f++){if(16>f)g[f]=0|e[t+f];else{var d=g[f-15],p=g[f-2];g[f]=((d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3)+g[f-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+g[f-16]}d=l+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&c^~u&h)+s[f]+g[f],p=((n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22))+(n&i^n&o^i&o),l=h,h=c,c=u,u=a+d|0,a=o,o=i,i=n,n=d+p|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+u|0,r[5]=r[5]+c|0,r[6]=r[6]+h|0,r[7]=r[7]+l|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;return r[i>>>5]|=128<<24-i%32,r[14+(i+64>>>9<<4)]=e.floor(n/4294967296),r[15+(i+64>>>9<<4)]=n,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),t.SHA256=n._createHelper(i),t.HmacSHA256=n._createHmacHelper(i)}(Math),function(){function e(){return n.create.apply(n,arguments)}for(var t=y,r=t.lib.Hasher,n=(o=t.x64).Word,i=o.WordArray,o=t.algo,s=[e(1116352408,3609767458),e(1899447441,602891725),e(3049323471,3964484399),e(3921009573,2173295548),e(961987163,4081628472),e(1508970993,3053834265),e(2453635748,2937671579),e(2870763221,3664609560),e(3624381080,2734883394),e(310598401,1164996542),e(607225278,1323610764),e(1426881987,3590304994),e(1925078388,4068182383),e(2162078206,991336113),e(2614888103,633803317),e(3248222580,3479774868),e(3835390401,2666613458),e(4022224774,944711139),e(264347078,2341262773),e(604807628,2007800933),e(770255983,1495990901),e(1249150122,1856431235),e(1555081692,3175218132),e(1996064986,2198950837),e(2554220882,3999719339),e(2821834349,766784016),e(2952996808,2566594879),e(3210313671,3203337956),e(3336571891,1034457026),e(3584528711,2466948901),e(113926993,3758326383),e(338241895,168717936),e(666307205,1188179964),e(773529912,1546045734),e(1294757372,1522805485),e(1396182291,2643833823),e(1695183700,2343527390),e(1986661051,1014477480),e(2177026350,1206759142),e(2456956037,344077627),e(2730485921,1290863460),e(2820302411,3158454273),e(3259730800,3505952657),e(3345764771,106217008),e(3516065817,3606008344),e(3600352804,1432725776),e(4094571909,1467031594),e(275423344,851169720),e(430227734,3100823752),e(506948616,1363258195),e(659060556,3750685593),e(883997877,3785050280),e(958139571,3318307427),e(1322822218,3812723403),e(1537002063,2003034995),e(1747873779,3602036899),e(1955562222,1575990012),e(2024104815,1125592928),e(2227730452,2716904306),e(2361852424,442776044),e(2428436474,593698344),e(2756734187,3733110249),e(3204031479,2999351573),e(3329325298,3815920427),e(3391569614,3928383900),e(3515267271,566280711),e(3940187606,3454069534),e(4118630271,4000239992),e(116418474,1914138554),e(174292421,2731055270),e(289380356,3203993006),e(460393269,320620315),e(685471733,587496836),e(852142971,1086792851),e(1017036298,365543100),e(1126000580,2618297676),e(1288033470,3409855158),e(1501505948,4234509866),e(1607167915,987167468),e(1816402316,1246189591)],a=[],u=0;80>u;u++)a[u]=e();o=o.SHA512=r.extend({_doReset:function(){this._hash=new i.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=(l=this._hash.words)[0],n=l[1],i=l[2],o=l[3],u=l[4],c=l[5],h=l[6],l=l[7],f=r.high,g=r.low,d=n.high,p=n.low,v=i.high,y=i.low,m=o.high,_=o.low,S=u.high,w=u.low,F=c.high,b=c.low,E=h.high,x=h.low,k=l.high,A=l.low,P=f,C=g,T=d,R=p,I=v,D=y,U=m,L=_,N=S,O=w,B=F,M=b,j=E,H=x,K=k,V=A,q=0;80>q;q++){var J=a[q];if(16>q)var W=J.high=0|e[t+2*q],z=J.low=0|e[t+2*q+1];else{W=((z=(W=a[q-15]).high)>>>1|(Y=W.low)<<31)^(z>>>8|Y<<24)^z>>>7;var Y=(Y>>>1|z<<31)^(Y>>>8|z<<24)^(Y>>>7|z<<25),G=((z=(G=a[q-2]).high)>>>19|(X=G.low)<<13)^(z<<3|X>>>29)^z>>>6,X=(X>>>19|z<<13)^(X<<3|z>>>29)^(X>>>6|z<<26),$=(z=a[q-7]).high,Q=(Z=a[q-16]).high,Z=Z.low;W=(W=(W=W+$+((z=Y+z.low)>>>0>>0?1:0))+G+((z+=X)>>>0>>0?1:0))+Q+((z+=Z)>>>0>>0?1:0),J.high=W,J.low=z}$=N&B^~N&j,Z=O&M^~O&H,J=P&T^P&I^T&I;var ee=C&R^C&D^R&D,te=(Y=(P>>>28|C<<4)^(P<<30|C>>>2)^(P<<25|C>>>7),G=(C>>>28|P<<4)^(C<<30|P>>>2)^(C<<25|P>>>7),(X=s[q]).high),re=X.low;Q=(Q=(Q=(Q=K+((N>>>14|O<<18)^(N>>>18|O<<14)^(N<<23|O>>>9))+((X=V+((O>>>14|N<<18)^(O>>>18|N<<14)^(O<<23|N>>>9)))>>>0>>0?1:0))+$+((X+=Z)>>>0>>0?1:0))+te+((X+=re)>>>0>>0?1:0))+W+((X+=z)>>>0>>0?1:0),K=j,V=H,j=B,H=M,B=N,M=O,N=U+Q+((O=L+X|0)>>>0>>0?1:0)|0,U=I,L=D,I=T,D=R,T=P,R=C,P=Q+(J=Y+J+((z=G+ee)>>>0>>0?1:0))+((C=X+z|0)>>>0>>0?1:0)|0}g=r.low=g+C,r.high=f+P+(g>>>0>>0?1:0),p=n.low=p+R,n.high=d+T+(p>>>0>>0?1:0),y=i.low=y+D,i.high=v+I+(y>>>0>>0?1:0),_=o.low=_+L,o.high=m+U+(_>>>0>>0?1:0),w=u.low=w+O,u.high=S+N+(w>>>0>>0?1:0),b=c.low=b+M,c.high=F+B+(b>>>0>>0?1:0),x=h.low=x+H,h.high=E+j+(x>>>0>>0?1:0),A=l.low=A+V,l.high=k+K+(A>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(n+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),t.SHA512=r._createHelper(o),t.HmacSHA512=r._createHmacHelper(o)}(),function(){var e=y,t=(i=e.x64).Word,r=i.WordArray,n=(i=e.algo).SHA512,i=i.SHA384=n.extend({_doReset:function(){this._hash=new r.init([new t.init(3418070365,3238371032),new t.init(1654270250,914150663),new t.init(2438529370,812702999),new t.init(355462360,4144912697),new t.init(1731405415,4290775857),new t.init(2394180231,1750603025),new t.init(3675008525,1694076839),new t.init(1203062813,3204075428)])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}});e.SHA384=n._createHelper(i),e.HmacSHA384=n._createHmacHelper(i)}(); -/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */ -var m,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function S(e){var t,r,n="";for(t=0;t+3<=e.length;t+=3)r=parseInt(e.substring(t,t+3),16),n+=_.charAt(r>>6)+_.charAt(63&r);for(t+1==e.length?(r=parseInt(e.substring(t,t+1),16),n+=_.charAt(r<<2)):t+2==e.length&&(r=parseInt(e.substring(t,t+2),16),n+=_.charAt(r>>2)+_.charAt((3&r)<<4));(3&n.length)>0;)n+="=";return n}function w(e){var t,r,n,i="",o=0;for(t=0;t>2),r=3&n,o=1):1==o?(i+=P(r<<2|n>>4),r=15&n,o=2):2==o?(i+=P(r),i+=P(n>>2),r=3&n,o=3):(i+=P(r<<2|n>>4),i+=P(15&n),o=0));return 1==o&&(i+=P(r<<2)),i}function F(e){var t,r=w(e),n=new Array;for(t=0;2*t>15;--o>=0;){var u=32767&this[e],c=this[e++]>>15,h=a*u+c*s;i=((u=s*u+((32767&h)<<15)+r[n]+(1073741823&i))>>>30)+(h>>>15)+a*c+(i>>>30),r[n++]=1073741823&u}return i},m=30):"Netscape"!=n.appName?(b.prototype.am=function(e,t,r,n,i,o){for(;--o>=0;){var s=t*this[e++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},m=26):(b.prototype.am=function(e,t,r,n,i,o){for(var s=16383&t,a=t>>14;--o>=0;){var u=16383&this[e],c=this[e++]>>14,h=a*u+c*s;i=((u=s*u+((16383&h)<<14)+r[n]+i)>>28)+(h>>14)+a*c,r[n++]=268435455&u}return i},m=28),b.prototype.DB=m,b.prototype.DM=(1<>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function I(e){this.m=e}function D(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function M(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function j(){}function H(e){return e}function K(e){this.r2=E(),this.q3=E(),b.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}I.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},I.prototype.revert=function(e){return e},I.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},I.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},I.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},D.prototype.convert=function(e){var t=E();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(b.ZERO)>0&&this.m.subTo(t,t),t},D.prototype.revert=function(e){var t=E();return e.copyTo(t),this.reduce(t),t},D.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,n,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},D.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},D.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},b.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},b.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},b.prototype.fromString=function(e,t){var r;if(16==t)r=4;else if(8==t)r=3;else if(256==t)r=8;else if(2==t)r=1;else if(32==t)r=5;else{if(4!=t)return void this.fromRadix(e,t);r=2}this.t=0,this.s=0;for(var n=e.length,i=!1,o=0;--n>=0;){var s=8==r?255&e[n]:C(e,n);s<0?"-"==e.charAt(n)&&(i=!0):(i=!1,0==o?this[this.t++]=s:o+r>this.DB?(this[this.t-1]|=(s&(1<>this.DB-o):this[this.t-1]|=s<=this.DB&&(o-=this.DB))}8==r&&0!=(128&e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==e;)--this.t},b.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},b.prototype.drShiftTo=function(e,t){for(var r=e;r=0;--r)t[r+s+1]=this[r]>>i|a,a=(this[r]&o)<=0;--r)t[r]=0;t[s]=a,t.t=this.t+s+1,t.s=this.s,t.clamp()},b.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var n=e%this.DB,i=this.DB-n,o=(1<>n;for(var s=r+1;s>n;n>0&&(t[this.t-r-1]|=(this.s&o)<>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=e.s}t.s=n<0?-1:0,n<-1?t[r++]=this.DV+n:n>0&&(t[r++]=n),t.t=r,t.clamp()},b.prototype.multiplyTo=function(e,t){var r=this.abs(),n=e.abs(),i=r.t;for(t.t=i+n.t;--i>=0;)t[i]=0;for(i=0;i=0;)e[r]=0;for(r=0;r=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},b.prototype.divRemTo=function(e,t,r){var n=e.abs();if(!(n.t<=0)){var i=this.abs();if(i.t0?(n.lShiftTo(u,o),i.lShiftTo(u,r)):(n.copyTo(o),i.copyTo(r));var c=o.t,h=o[c-1];if(0!=h){var l=h*(1<1?o[c-2]>>this.F2:0),f=this.FV/l,g=(1<=0&&(r[r.t++]=1,r.subTo(y,r)),b.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t=0;){var m=r[--p]==h?this.DM:Math.floor(r[p]*f+(r[p-1]+d)*g);if((r[p]+=o.am(0,m,r,v,0,c))0&&r.rShiftTo(u,r),s<0&&b.ZERO.subTo(r,r)}}},b.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},b.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},b.prototype.exp=function(e,t){if(e>4294967295||e<1)return b.ONE;var r=E(),n=E(),i=t.convert(this),o=R(e)-1;for(i.copyTo(r);--o>=0;)if(t.sqrTo(r,n),(e&1<0)t.mulTo(n,i,r);else{var s=r;r=n,n=s}return t.revert(r)},b.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,n=(1<0)for(a>a)>0&&(i=!0,o=P(r));s>=0;)a>(a+=this.DB-t)):(r=this[s]>>(a-=t)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=P(r));return i?o:"0"},b.prototype.negate=function(){var e=E();return b.ZERO.subTo(this,e),e},b.prototype.abs=function(){return this.s<0?this.negate():this},b.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},b.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+R(this[this.t-1]^this.s&this.DM)},b.prototype.mod=function(e){var t=E();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(b.ZERO)>0&&e.subTo(t,t),t},b.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new I(t):new D(t),this.exp(e,r)},b.ZERO=T(0),b.ONE=T(1),j.prototype.convert=H,j.prototype.revert=H,j.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},j.prototype.sqrTo=function(e,t){e.squareTo(t)},K.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=E();return e.copyTo(t),this.reduce(t),t},K.prototype.revert=function(e){return e},K.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},K.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},K.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var V,q,J,W=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],z=(1<<26)/W[W.length-1]; -/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */function Y(){this.i=0,this.j=0,this.S=new Array} -/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */ -function G(){!function(e){q[J++]^=255&e,q[J++]^=e>>8&255,q[J++]^=e>>16&255,q[J++]^=e>>24&255,J>=256&&(J-=256)}((new Date).getTime())}if(b.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},b.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),n=T(r),i=E(),o=E(),s="";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(e).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(e)+s},b.prototype.fromRadix=function(e,t){this.fromInt(0),null==t&&(t=10);for(var r=this.chunkSize(t),n=Math.pow(t,r),i=!1,o=0,s=0,a=0;a=r&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(s,0)),i&&b.ZERO.subTo(this,this)},b.prototype.fromNumber=function(e,t,r){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(b.ONE.shiftLeft(e-1),L,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(b.ONE.shiftLeft(e-1),this);else{var n=new Array,i=7&e;n.length=1+(e>>3),t.nextBytes(n),i>0?n[0]&=(1<>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=e.s}t.s=n<0?-1:0,n>0?t[r++]=n:n<-1&&(t[r++]=this.DV+n),t.t=r,t.clamp()},b.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},b.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},b.prototype.multiplyLowerTo=function(e,t,r){var n,i=Math.min(this.t+e.t,t);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i=0;)r[n]=0;for(n=Math.max(t-this.t,0);n0)if(0==t)r=this[0]%e;else for(var n=this.t-1;n>=0;--n)r=(t*r+this[n])%e;return r},b.prototype.millerRabin=function(e){var t=this.subtract(b.ONE),r=t.getLowestSetBit();if(r<=0)return!1;var n=t.shiftRight(r);(e=e+1>>1)>W.length&&(e=W.length);for(var i=E(),o=0;o>24},b.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},b.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},b.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,n=this.DB-e*this.DB%8,i=0;if(e-- >0)for(n>n)!=(this.s&this.DM)>>n&&(t[i++]=r|this.s<=0;)n<8?(r=(this[e]&(1<>(n+=this.DB-8)):(r=this[e]>>(n-=8)&255,n<=0&&(n+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(t[i++]=r);return t},b.prototype.equals=function(e){return 0==this.compareTo(e)},b.prototype.min=function(e){return this.compareTo(e)<0?this:e},b.prototype.max=function(e){return this.compareTo(e)>0?this:e},b.prototype.and=function(e){var t=E();return this.bitwiseTo(e,U,t),t},b.prototype.or=function(e){var t=E();return this.bitwiseTo(e,L,t),t},b.prototype.xor=function(e){var t=E();return this.bitwiseTo(e,N,t),t},b.prototype.andNot=function(e){var t=E();return this.bitwiseTo(e,O,t),t},b.prototype.not=function(){for(var e=E(),t=0;t=this.t?0!=this.s:0!=(this[t]&1<1){var h=E();for(n.sqrTo(s[1],h);a<=c;)s[a]=E(),n.mulTo(h,s[a-2],s[a]),a+=2}var l,f,g=e.t-1,d=!0,p=E();for(i=R(e[g])-1;g>=0;){for(i>=u?l=e[g]>>i-u&c:(l=(e[g]&(1<0&&(l|=e[g-1]>>this.DB+i-u)),a=r;0==(1&l);)l>>=1,--a;if((i-=a)<0&&(i+=this.DB,--g),d)s[l].copyTo(o),d=!1;else{for(;a>1;)n.sqrTo(o,p),n.sqrTo(p,o),a-=2;a>0?n.sqrTo(o,p):(f=o,o=p,p=f),n.mulTo(p,s[l],o)}for(;g>=0&&0==(e[g]&1<=0?(r.subTo(n,r),t&&i.subTo(s,i),o.subTo(a,o)):(n.subTo(r,n),t&&s.subTo(i,s),a.subTo(o,a))}return 0!=n.compareTo(b.ONE)?b.ZERO:a.compareTo(e)>=0?a.subtract(e):a.signum()<0?(a.addTo(e,a),a.signum()<0?a.add(e):a):a},b.prototype.pow=function(e){return this.exp(e,new j)},b.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var n=t;t=r,r=n}var i=t.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return t;for(i0&&(t.rShiftTo(o,t),r.rShiftTo(o,r));t.signum()>0;)(i=t.getLowestSetBit())>0&&t.rShiftTo(i,t),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},b.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=W[W.length-1]){for(t=0;t>>8,q[J++]=255&X;J=0,G()}function ee(){if(null==V){for(G(),(V=new Y).init(q),J=0;J>24,(16711680&i)>>16,(65280&i)>>8,255&i]))),i+=1;return n}function ie(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null} -/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */function oe(e,t){this.x=t,this.q=e}function se(e,t,r,n){this.curve=e,this.x=t,this.y=r,this.z=null==n?b.ONE:n,this.zinv=null}function ae(e,t,r){this.q=e,this.a=this.fromBigInteger(t),this.b=this.fromBigInteger(r),this.infinity=new se(this,null,null)}te.prototype.nextBytes=function(e){var t;for(t=0;t0&&t.length>0))throw"Invalid RSA public key";this.n=re(e,16),this.e=parseInt(t,16)}},ie.prototype.encrypt=function(e){var t=function(e,t){if(t=0&&t>0;){var i=e.charCodeAt(n--);i<128?r[--t]=i:i>127&&i<2048?(r[--t]=63&i|128,r[--t]=i>>6|192):(r[--t]=63&i|128,r[--t]=i>>6&63|128,r[--t]=i>>12|224)}r[--t]=0;for(var o=new te,s=new Array;t>2;){for(s[0]=0;0==s[0];)o.nextBytes(s);r[--t]=s[0]}return r[--t]=2,r[--t]=0,new b(r)}(e,this.n.bitLength()+7>>3);if(null==t)return null;var r=this.doPublic(t);if(null==r)return null;var n=r.toString(16);return 0==(1&n.length)?n:"0"+n},ie.prototype.encryptOAEP=function(e,t,r){var n=function(e,t,r,n){var i=ce.crypto.MessageDigest,o=ce.crypto.Util,s=null;if(r||(r="sha1"),"string"==typeof r&&(s=i.getCanonicalAlgName(r),n=i.getHashLength(s),r=function(e){return be(o.hashHex(Ee(e),s))}),e.length+2*n+2>t)throw"Message too long for RSA";var a,u="";for(a=0;a>3,t,r);if(null==n)return null;var i=this.doPublic(n);if(null==i)return null;var o=i.toString(16);return 0==(1&o.length)?o:"0"+o},ie.prototype.type="RSA",oe.prototype.equals=function(e){return e==this||this.q.equals(e.q)&&this.x.equals(e.x)},oe.prototype.toBigInteger=function(){return this.x},oe.prototype.negate=function(){return new oe(this.q,this.x.negate().mod(this.q))},oe.prototype.add=function(e){return new oe(this.q,this.x.add(e.toBigInteger()).mod(this.q))},oe.prototype.subtract=function(e){return new oe(this.q,this.x.subtract(e.toBigInteger()).mod(this.q))},oe.prototype.multiply=function(e){return new oe(this.q,this.x.multiply(e.toBigInteger()).mod(this.q))},oe.prototype.square=function(){return new oe(this.q,this.x.square().mod(this.q))},oe.prototype.divide=function(e){return new oe(this.q,this.x.multiply(e.toBigInteger().modInverse(this.q)).mod(this.q))},se.prototype.getX=function(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))},se.prototype.getY=function(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))},se.prototype.equals=function(e){return e==this||(this.isInfinity()?e.isInfinity():e.isInfinity()?this.isInfinity():!!e.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(e.z)).mod(this.curve.q).equals(b.ZERO)&&e.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(e.z)).mod(this.curve.q).equals(b.ZERO))},se.prototype.isInfinity=function(){return null==this.x&&null==this.y||this.z.equals(b.ZERO)&&!this.y.toBigInteger().equals(b.ZERO)},se.prototype.negate=function(){return new se(this.curve,this.x,this.y.negate(),this.z)},se.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(e.z)).mod(this.curve.q),r=e.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(e.z)).mod(this.curve.q);if(b.ZERO.equals(r))return b.ZERO.equals(t)?this.twice():this.curve.getInfinity();var n=new b("3"),i=this.x.toBigInteger(),o=this.y.toBigInteger(),s=(e.x.toBigInteger(),e.y.toBigInteger(),r.square()),a=s.multiply(r),u=i.multiply(s),c=t.square().multiply(this.z),h=c.subtract(u.shiftLeft(1)).multiply(e.z).subtract(a).multiply(r).mod(this.curve.q),l=u.multiply(n).multiply(t).subtract(o.multiply(a)).subtract(c.multiply(t)).multiply(e.z).add(t.multiply(a)).mod(this.curve.q),f=a.multiply(this.z).multiply(e.z).mod(this.curve.q);return new se(this.curve,this.curve.fromBigInteger(h),this.curve.fromBigInteger(l),f)},se.prototype.twice=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var e=new b("3"),t=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),i=n.multiply(r).mod(this.curve.q),o=this.curve.a.toBigInteger(),s=t.square().multiply(e);b.ZERO.equals(o)||(s=s.add(this.z.square().multiply(o)));var a=(s=s.mod(this.curve.q)).square().subtract(t.shiftLeft(3).multiply(i)).shiftLeft(1).multiply(n).mod(this.curve.q),u=s.multiply(e).multiply(t).subtract(i.shiftLeft(1)).shiftLeft(2).multiply(i).subtract(s.square().multiply(s)).mod(this.curve.q),c=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new se(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(u),c)},se.prototype.multiply=function(e){if(this.isInfinity())return this;if(0==e.signum())return this.curve.getInfinity();var t,r=e,n=r.multiply(new b("3")),i=this.negate(),o=this;for(t=n.bitLength()-2;t>0;--t){o=o.twice();var s=n.testBit(t);s!=r.testBit(t)&&(o=o.add(s?this:i))}return o},se.prototype.multiplyTwo=function(e,t,r){var n;n=e.bitLength()>r.bitLength()?e.bitLength()-1:r.bitLength()-1;for(var i=this.curve.getInfinity(),o=this.add(t);n>=0;)i=i.twice(),e.testBit(n)?i=r.testBit(n)?i.add(o):i.add(this):r.testBit(n)&&(i=i.add(t)),--n;return i},ae.prototype.getQ=function(){return this.q},ae.prototype.getA=function(){return this.a},ae.prototype.getB=function(){return this.b},ae.prototype.equals=function(e){return e==this||this.q.equals(e.q)&&this.a.equals(e.a)&&this.b.equals(e.b)},ae.prototype.getInfinity=function(){return this.infinity},ae.prototype.fromBigInteger=function(e){return new oe(this.q,e)},ae.prototype.decodePointHex=function(e){switch(parseInt(e.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var t=(e.length-2)/2,r=e.substr(2,t),n=e.substr(t+2,t);return new se(this,this.fromBigInteger(new b(r,16)),this.fromBigInteger(new b(n,16)));default:return null}}, -/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib - */ -oe.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},se.prototype.getEncoded=function(e){var t=function(e,t){var r=e.toByteArrayUnsigned();if(tr.length;)r.unshift(0);return r},r=this.getX().toBigInteger(),n=this.getY().toBigInteger(),i=t(r,32);return e?n.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(t(n,32))),i},se.decodeFrom=function(e,t){t[0];var r=t.length-1,n=t.slice(1,1+r/2),i=t.slice(1+r/2,1+r);n.unshift(0),i.unshift(0);var o=new b(n),s=new b(i);return new se(e,e.fromBigInteger(o),e.fromBigInteger(s))},se.decodeFromHex=function(e,t){t.substr(0,2);var r=t.length-2,n=t.substr(2,r/2),i=t.substr(2+r/2,r/2),o=new b(n,16),s=new b(i,16);return new se(e,e.fromBigInteger(o),e.fromBigInteger(s))},se.prototype.add2D=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;if(this.x.equals(e.x))return this.y.equals(e.y)?this.twice():this.curve.getInfinity();var t=e.x.subtract(this.x),r=e.y.subtract(this.y).divide(t),n=r.square().subtract(this.x).subtract(e.x),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new se(this.curve,n,i)},se.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var e=this.curve.fromBigInteger(b.valueOf(2)),t=this.curve.fromBigInteger(b.valueOf(3)),r=this.x.square().multiply(t).add(this.curve.a).divide(this.y.multiply(e)),n=r.square().subtract(this.x.multiply(e)),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new se(this.curve,n,i)},se.prototype.multiply2D=function(e){if(this.isInfinity())return this;if(0==e.signum())return this.curve.getInfinity();var t,r=e,n=r.multiply(new b("3")),i=this.negate(),o=this;for(t=n.bitLength()-2;t>0;--t){o=o.twice();var s=n.testBit(t);s!=r.testBit(t)&&(o=o.add2D(s?this:i))}return o},se.prototype.isOnCurve=function(){var e=this.getX().toBigInteger(),t=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),n=this.curve.getB().toBigInteger(),i=this.curve.getQ(),o=t.multiply(t).mod(i),s=e.multiply(e).multiply(e).add(r.multiply(e)).add(n).mod(i);return o.equals(s)},se.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"},se.prototype.validate=function(){var e=this.curve.getQ();if(this.isInfinity())throw new Error("Point is at infinity.");var t=this.getX().toBigInteger(),r=this.getY().toBigInteger();if(t.compareTo(b.ONE)<0||t.compareTo(e.subtract(b.ONE))>0)throw new Error("x coordinate out of bounds");if(r.compareTo(b.ONE)<0||r.compareTo(e.subtract(b.ONE))>0)throw new Error("y coordinate out of bounds");if(!this.isOnCurve())throw new Error("Point is not on the curve.");if(this.multiply(e).isInfinity())throw new Error("Point is not a scalar multiple of G.");return!0}; -/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval - */ -var ue=function(){var e=new RegExp('(?:false|true|null|[\\{\\}\\[\\]]|(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)|(?:"(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))*"))',"g"),t=new RegExp("\\\\(?:([^u])|u(.{4}))","g"),n={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"};function i(e,t,r){return t?n[t]:String.fromCharCode(parseInt(r,16))}var o=new String(""),s=Object.hasOwnProperty;return function(n,a){var u,c,h=n.match(e),l=h[0],f=!1;"{"===l?u={}:"["===l?u=[]:(u=[],f=!0);for(var g=[u],d=1-f,p=h.length;d=0;)delete i[o[h]]}return a.call(t,n,i)}({"":u},"")),u}}();void 0!==ce&&ce||(t.KJUR=ce={}),void 0!==ce.asn1&&ce.asn1||(ce.asn1={}),ce.asn1.ASN1Util=new function(){this.integerToByteHex=function(e){var t=e.toString(16);return t.length%2==1&&(t="0"+t),t},this.bigIntToMinTwosComplementsHex=function(e){var t=e.toString(16);if("-"!=t.substr(0,1))t.length%2==1?t="0"+t:t.match(/^[0-7]/)||(t="00"+t);else{var r=t.substr(1).length;r%2==1?r+=1:t.match(/^[0-7]/)||(r+=2);for(var n="",i=0;i15)throw"ASN.1 length too long to represent by 8x: n = "+e.toString(16);return(128+r).toString(16)+t},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return""}},ce.asn1.DERAbstractString=function(e){ce.asn1.DERAbstractString.superclass.constructor.call(this),this.getString=function(){return this.s},this.setString=function(e){this.hTLV=null,this.isModified=!0,this.s=e,this.hV=we(this.s).toLowerCase()},this.setStringHex=function(e){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=e},this.getFreshValueHex=function(){return this.hV},void 0!==e&&("string"==typeof e?this.setString(e):void 0!==e.str?this.setString(e.str):void 0!==e.hex&&this.setStringHex(e.hex))},o.lang.extend(ce.asn1.DERAbstractString,ce.asn1.ASN1Object),ce.asn1.DERAbstractTime=function(e){ce.asn1.DERAbstractTime.superclass.constructor.call(this),this.localDateToUTC=function(e){return utc=e.getTime()+6e4*e.getTimezoneOffset(),new Date(utc)},this.formatDate=function(e,t,r){var n=this.zeroPadding,i=this.localDateToUTC(e),o=String(i.getFullYear());"utc"==t&&(o=o.substr(2,2));var s=o+n(String(i.getMonth()+1),2)+n(String(i.getDate()),2)+n(String(i.getHours()),2)+n(String(i.getMinutes()),2)+n(String(i.getSeconds()),2);if(!0===r){var a=i.getMilliseconds();if(0!=a){var u=n(String(a),3);s=s+"."+(u=u.replace(/[0]+$/,""))}}return s+"Z"},this.zeroPadding=function(e,t){return e.length>=t?e:new Array(t-e.length+1).join("0")+e},this.getString=function(){return this.s},this.setString=function(e){this.hTLV=null,this.isModified=!0,this.s=e,this.hV=ve(e)},this.setByDateValue=function(e,t,r,n,i,o){var s=new Date(Date.UTC(e,t-1,r,n,i,o,0));this.setByDate(s)},this.getFreshValueHex=function(){return this.hV}},o.lang.extend(ce.asn1.DERAbstractTime,ce.asn1.ASN1Object),ce.asn1.DERAbstractStructured=function(e){ce.asn1.DERAbstractString.superclass.constructor.call(this),this.setByASN1ObjectArray=function(e){this.hTLV=null,this.isModified=!0,this.asn1Array=e},this.appendASN1Object=function(e){this.hTLV=null,this.isModified=!0,this.asn1Array.push(e)},this.asn1Array=new Array,void 0!==e&&void 0!==e.array&&(this.asn1Array=e.array)},o.lang.extend(ce.asn1.DERAbstractStructured,ce.asn1.ASN1Object),ce.asn1.DERBoolean=function(){ce.asn1.DERBoolean.superclass.constructor.call(this),this.hT="01",this.hTLV="0101ff"},o.lang.extend(ce.asn1.DERBoolean,ce.asn1.ASN1Object),ce.asn1.DERInteger=function(e){ce.asn1.DERInteger.superclass.constructor.call(this),this.hT="02",this.setByBigInteger=function(e){this.hTLV=null,this.isModified=!0,this.hV=ce.asn1.ASN1Util.bigIntToMinTwosComplementsHex(e)},this.setByInteger=function(e){var t=new b(String(e),10);this.setByBigInteger(t)},this.setValueHex=function(e){this.hV=e},this.getFreshValueHex=function(){return this.hV},void 0!==e&&(void 0!==e.bigint?this.setByBigInteger(e.bigint):void 0!==e.int?this.setByInteger(e.int):"number"==typeof e?this.setByInteger(e):void 0!==e.hex&&this.setValueHex(e.hex))},o.lang.extend(ce.asn1.DERInteger,ce.asn1.ASN1Object),ce.asn1.DERBitString=function(e){if(void 0!==e&&void 0!==e.obj){var t=ce.asn1.ASN1Util.newObject(e.obj);e.hex="00"+t.getEncodedHex()}ce.asn1.DERBitString.superclass.constructor.call(this),this.hT="03",this.setHexValueIncludingUnusedBits=function(e){this.hTLV=null,this.isModified=!0,this.hV=e},this.setUnusedBitsAndHexValue=function(e,t){if(e<0||7i.length&&(i=n[r]);return(e=e.replace(i,"::")).slice(1,-1)}function Ne(e){var t="malformed hex value";if(!e.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw t;if(8!=e.length)return 32==e.length?Le(e):e;try{return parseInt(e.substr(0,2),16)+"."+parseInt(e.substr(2,2),16)+"."+parseInt(e.substr(4,2),16)+"."+parseInt(e.substr(6,2),16)}catch(e){throw t}}function Oe(e){for(var t=encodeURIComponent(e),r="",n=0;n"7"?"00"+e:e}fe.getLblen=function(e,t){if("8"!=e.substr(t+2,1))return 1;var r=parseInt(e.substr(t+3,1));return 0==r?-1:0=2*o)break;if(a>=200)break;n.push(u),s=u,a++}return n},fe.getNthChildIdx=function(e,t,r){return fe.getChildIdx(e,t)[r]},fe.getIdxbyList=function(e,t,r,n){var i,o,s=fe;if(0==r.length){if(void 0!==n&&e.substr(t,2)!==n)throw"checking tag doesn't match: "+e.substr(t,2)+"!="+n;return t}return i=r.shift(),o=s.getChildIdx(e,t),s.getIdxbyList(e,o[i],r,n)},fe.getTLVbyList=function(e,t,r,n){var i=fe,o=i.getIdxbyList(e,t,r);if(void 0===o)throw"can't find nthList object";if(void 0!==n&&e.substr(o,2)!=n)throw"checking tag doesn't match: "+e.substr(o,2)+"!="+n;return i.getTLV(e,o)},fe.getVbyList=function(e,t,r,n,i){var o,s,a=fe;if(void 0===(o=a.getIdxbyList(e,t,r,n)))throw"can't find nthList object";return s=a.getV(e,o),!0===i&&(s=s.substr(2)),s},fe.hextooidstr=function(e){var t=function(e,t){return e.length>=t?e:new Array(t-e.length+1).join("0")+e},r=[],n=e.substr(0,2),i=parseInt(n,16);r[0]=new String(Math.floor(i/40)),r[1]=new String(i%40);for(var o=e.substr(2),s=[],a=0;a0&&(h=h+"."+u.join(".")),h},fe.dump=function(e,t,r,n){var i=fe,o=i.getV,s=i.dump,a=i.getChildIdx,u=e;e instanceof ce.asn1.ASN1Object&&(u=e.getEncodedHex());var c=function(e,t){return e.length<=2*t?e:e.substr(0,t)+"..(total "+e.length/2+"bytes).."+e.substr(e.length-t,t)};void 0===t&&(t={ommit_long_octet:32}),void 0===r&&(r=0),void 0===n&&(n="");var h=t.ommit_long_octet;if("01"==u.substr(r,2))return"00"==(l=o(u,r))?n+"BOOLEAN FALSE\n":n+"BOOLEAN TRUE\n";if("02"==u.substr(r,2))return n+"INTEGER "+c(l=o(u,r),h)+"\n";if("03"==u.substr(r,2))return n+"BITSTRING "+c(l=o(u,r),h)+"\n";if("04"==u.substr(r,2)){var l=o(u,r);return i.isASN1HEX(l)?(F=n+"OCTETSTRING, encapsulates\n")+s(l,t,0,n+" "):n+"OCTETSTRING "+c(l,h)+"\n"}if("05"==u.substr(r,2))return n+"NULL\n";if("06"==u.substr(r,2)){var f=o(u,r),g=ce.asn1.ASN1Util.oidHexToInt(f),d=ce.asn1.x509.OID.oid2name(g),p=g.replace(/\./g," ");return""!=d?n+"ObjectIdentifier "+d+" ("+p+")\n":n+"ObjectIdentifier ("+p+")\n"}if("0c"==u.substr(r,2))return n+"UTF8String '"+Fe(o(u,r))+"'\n";if("13"==u.substr(r,2))return n+"PrintableString '"+Fe(o(u,r))+"'\n";if("14"==u.substr(r,2))return n+"TeletexString '"+Fe(o(u,r))+"'\n";if("16"==u.substr(r,2))return n+"IA5String '"+Fe(o(u,r))+"'\n";if("17"==u.substr(r,2))return n+"UTCTime "+Fe(o(u,r))+"\n";if("18"==u.substr(r,2))return n+"GeneralizedTime "+Fe(o(u,r))+"\n";if("30"==u.substr(r,2)){if("3000"==u.substr(r,4))return n+"SEQUENCE {}\n";F=n+"SEQUENCE\n";var v=t;if((2==(_=a(u,r)).length||3==_.length)&&"06"==u.substr(_[0],2)&&"04"==u.substr(_[_.length-1],2)){d=i.oidname(o(u,_[0]));var y=JSON.parse(JSON.stringify(t));y.x509ExtName=d,v=y}for(var m=0;m<_.length;m++)F+=s(u,v,_[m],n+" ");return F}if("31"==u.substr(r,2)){F=n+"SET\n";var _=a(u,r);for(m=0;m<_.length;m++)F+=s(u,t,_[m],n+" ");return F}var S=parseInt(u.substr(r,2),16);if(0!=(128&S)){var w=31&S;if(0!=(32&S)){var F=n+"["+w+"]\n";for(_=a(u,r),m=0;m<_.length;m++)F+=s(u,t,_[m],n+" ");return F}return"68747470"==(l=o(u,r)).substr(0,8)&&(l=Fe(l)),"subjectAltName"===t.x509ExtName&&2==w&&(l=Fe(l)),n+"["+w+"] "+l+"\n"}return n+"UNKNOWN("+u.substr(r,2)+") "+o(u,r)+"\n"},fe.isASN1HEX=function(e){var t=fe;if(e.length%2==1)return!1;var r=t.getVblen(e,0),n=e.substr(0,2),i=t.getL(e,0);return e.length-n.length-i.length==2*r},fe.oidname=function(e){var t=ce.asn1;ce.lang.String.isHex(e)&&(e=t.ASN1Util.oidHexToInt(e));var r=t.x509.OID.oid2name(e);return""===r&&(r=e),r},void 0!==ce&&ce||(t.KJUR=ce={}),void 0!==ce.lang&&ce.lang||(ce.lang={}),ce.lang.String=function(){},"function"==typeof e?(t.utf8tob64u=he=function(t){return ye(new e(t,"utf8").toString("base64"))},t.b64utoutf8=le=function(t){return new e(me(t),"base64").toString("utf8")}):(t.utf8tob64u=he=function(e){return _e(Ie(Oe(e)))},t.b64utoutf8=le=function(e){return decodeURIComponent(De(Se(e)))}),ce.lang.String.isInteger=function(e){return!!e.match(/^[0-9]+$/)||!!e.match(/^-[0-9]+$/)},ce.lang.String.isHex=function(e){return!(e.length%2!=0||!e.match(/^[0-9a-f]+$/)&&!e.match(/^[0-9A-F]+$/))},ce.lang.String.isBase64=function(e){return!(!(e=e.replace(/\s+/g,"")).match(/^[0-9A-Za-z+\/]+={0,3}$/)||e.length%4!=0)},ce.lang.String.isBase64URL=function(e){return!e.match(/[+/=]/)&&(e=me(e),ce.lang.String.isBase64(e))},ce.lang.String.isIntegerArray=function(e){return!!(e=e.replace(/\s+/g,"")).match(/^\[[0-9,]+\]$/)},void 0!==ce&&ce||(t.KJUR=ce={}),void 0!==ce.crypto&&ce.crypto||(ce.crypto={}),ce.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414"},this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa"},this.CRYPTOJSMESSAGEDIGESTNAME={md5:y.algo.MD5,sha1:y.algo.SHA1,sha224:y.algo.SHA224,sha256:y.algo.SHA256,sha384:y.algo.SHA384,sha512:y.algo.SHA512,ripemd160:y.algo.RIPEMD160},this.getDigestInfoHex=function(e,t){if(void 0===this.DIGESTINFOHEAD[t])throw"alg not supported in Util.DIGESTINFOHEAD: "+t;return this.DIGESTINFOHEAD[t]+e},this.getPaddedDigestInfoHex=function(e,t,r){var n=this.getDigestInfoHex(e,t),i=r/4;if(n.length+22>i)throw"key is too short for SigAlg: keylen="+r+","+t;for(var o="0001",s="00"+n,a="",u=i-o.length-s.length,c=0;c=0)return!1;if(r.compareTo(b.ONE)<0||r.compareTo(i)>=0)return!1;var s=r.modInverse(i),a=e.multiply(s).mod(i),u=t.multiply(s).mod(i);return o.multiply(a).add(n.multiply(u)).getX().toBigInteger().mod(i).equals(t)},this.serializeSig=function(e,t){var r=e.toByteArraySigned(),n=t.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(n.length),(i=i.concat(n)).unshift(i.length),i.unshift(48),i},this.parseSig=function(e){var t;if(48!=e[0])throw new Error("Signature not a valid DERSequence");if(2!=e[t=2])throw new Error("First element in signature must be a DERInteger");var r=e.slice(t+2,t+2+e[t+1]);if(2!=e[t+=2+e[t+1]])throw new Error("Second element in signature must be a DERInteger");var n=e.slice(t+2,t+2+e[t+1]);return t+=2+e[t+1],{r:b.fromByteArrayUnsigned(r),s:b.fromByteArrayUnsigned(n)}},this.parseSigCompact=function(e){if(65!==e.length)throw"Signature has the wrong length";var t=e[0]-27;if(t<0||t>7)throw"Invalid signature type";var r=this.ecparams.n;return{r:b.fromByteArrayUnsigned(e.slice(1,33)).mod(r),s:b.fromByteArrayUnsigned(e.slice(33,65)).mod(r),i:t}},this.readPKCS5PrvKeyHex=function(e){var t,r,n,i=fe,o=ce.crypto.ECDSA.getName,s=i.getVbyList;if(!1===i.isASN1HEX(e))throw"not ASN.1 hex string";try{t=s(e,0,[2,0],"06"),r=s(e,0,[1],"04");try{n=s(e,0,[3,0],"03").substr(2)}catch(e){}}catch(e){throw"malformed PKCS#1/5 plain ECC private key"}if(this.curveName=o(t),void 0===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(e){var t,r,n,i=fe,o=ce.crypto.ECDSA.getName,s=i.getVbyList;if(!1===i.isASN1HEX(e))throw"not ASN.1 hex string";try{s(e,0,[1,0],"06"),t=s(e,0,[1,1],"06"),r=s(e,0,[2,0,1],"04");try{n=s(e,0,[2,0,2,0],"03").substr(2)}catch(e){}}catch(e){throw"malformed PKCS#8 plain ECC private key"}if(this.curveName=o(t),void 0===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PubKeyHex=function(e){var t,r,n=fe,i=ce.crypto.ECDSA.getName,o=n.getVbyList;if(!1===n.isASN1HEX(e))throw"not ASN.1 hex string";try{o(e,0,[0,0],"06"),t=o(e,0,[0,1],"06"),r=o(e,0,[1],"03").substr(2)}catch(e){throw"malformed PKCS#8 ECC public key"}if(this.curveName=i(t),null===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName),this.setPublicKeyHex(r)},this.readCertPubKeyHex=function(e,t){5!==t&&(t=6);var r,n,i=fe,o=ce.crypto.ECDSA.getName,s=i.getVbyList;if(!1===i.isASN1HEX(e))throw"not ASN.1 hex string";try{r=s(e,0,[0,t,0,1],"06"),n=s(e,0,[0,t,1],"03").substr(2)}catch(e){throw"malformed X.509 certificate ECC public key"}if(this.curveName=o(r),null===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n)},void 0!==e&&void 0!==e.curve&&(this.curveName=e.curve),void 0===this.curveName&&(this.curveName="secp256r1"),this.setNamedCurve(this.curveName),void 0!==e&&(void 0!==e.prv&&this.setPrivateKeyHex(e.prv),void 0!==e.pub&&this.setPublicKeyHex(e.pub))},ce.crypto.ECDSA.parseSigHex=function(e){var t=ce.crypto.ECDSA.parseSigHexInHexRS(e);return{r:new b(t.r,16),s:new b(t.s,16)}},ce.crypto.ECDSA.parseSigHexInHexRS=function(e){var t=fe,r=t.getChildIdx,n=t.getV;if("30"!=e.substr(0,2))throw"signature is not a ASN.1 sequence";var i=r(e,0);if(2!=i.length)throw"number of signature ASN.1 sequence elements seem wrong";var o=i[0],s=i[1];if("02"!=e.substr(o,2))throw"1st item of sequene of signature is not ASN.1 integer";if("02"!=e.substr(s,2))throw"2nd item of sequene of signature is not ASN.1 integer";return{r:n(e,o),s:n(e,s)}},ce.crypto.ECDSA.asn1SigToConcatSig=function(e){var t=ce.crypto.ECDSA.parseSigHexInHexRS(e),r=t.r,n=t.s;if("00"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),"00"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),r.length%32==30&&(r="00"+r),n.length%32==30&&(n="00"+n),r.length%32!=0)throw"unknown ECDSA sig r length error";if(n.length%32!=0)throw"unknown ECDSA sig s length error";return r+n},ce.crypto.ECDSA.concatSigToASN1Sig=function(e){if(e.length/2*8%128!=0)throw"unknown ECDSA concatinated r-s sig length error";var t=e.substr(0,e.length/2),r=e.substr(e.length/2);return ce.crypto.ECDSA.hexRSSigToASN1Sig(t,r)},ce.crypto.ECDSA.hexRSSigToASN1Sig=function(e,t){var r=new b(e,16),n=new b(t,16);return ce.crypto.ECDSA.biRSSigToASN1Sig(r,n)},ce.crypto.ECDSA.biRSSigToASN1Sig=function(e,t){var r=ce.asn1,n=new r.DERInteger({bigint:e}),i=new r.DERInteger({bigint:t});return new r.DERSequence({array:[n,i]}).getEncodedHex()},ce.crypto.ECDSA.getName=function(e){return"2a8648ce3d030107"===e?"secp256r1":"2b8104000a"===e?"secp256k1":"2b81040022"===e?"secp384r1":-1!=="|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(e)?"secp256r1":-1!=="|secp256k1|".indexOf(e)?"secp256k1":-1!=="|secp384r1|NIST P-384|P-384|".indexOf(e)?"secp384r1":null},void 0!==ce&&ce||(t.KJUR=ce={}),void 0!==ce.crypto&&ce.crypto||(ce.crypto={}),ce.crypto.ECParameterDB=new function(){var e={},t={};function r(e){return new b(e,16)}this.getByName=function(r){var n=r;if(void 0!==t[n]&&(n=t[r]),void 0!==e[n])return e[n];throw"unregistered EC curve name: "+n},this.regist=function(n,i,o,s,a,u,c,h,l,f,g,d){e[n]={};var p=r(o),v=r(s),y=r(a),m=r(u),_=r(c),S=new ae(p,v,y),w=S.decodePointHex("04"+h+l);e[n].name=n,e[n].keylen=i,e[n].curve=S,e[n].G=w,e[n].n=m,e[n].h=_,e[n].oid=g,e[n].info=d;for(var F=0;F=2*a)break}var l={};return l.keyhex=u.substr(0,2*i[e].keylen),l.ivhex=u.substr(2*i[e].keylen,2*i[e].ivlen),l},a=function(e,t,r,n){var o=y.enc.Base64.parse(e),s=y.enc.Hex.stringify(o);return(0,i[t].proc)(s,r,n)};return{version:"1.0.0",parsePKCS5PEM:function(e){return o(e)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(e,t,r){return s(e,t,r)},decryptKeyB64:function(e,t,r,n){return a(e,t,r,n)},getDecryptedKeyHex:function(e,t){var r=o(e),n=(r.type,r.cipher),i=r.ivsalt,u=r.data,c=s(n,t,i).keyhex;return a(u,n,c,i)},getEncryptedPKCS5PEMFromPrvKeyHex:function(e,t,r,n,o){var a="";if(void 0!==n&&null!=n||(n="AES-256-CBC"),void 0===i[n])throw"KEYUTIL unsupported algorithm: "+n;return void 0!==o&&null!=o||(o=function(e){var t=y.lib.WordArray.random(e);return y.enc.Hex.stringify(t)}(i[n].ivlen).toUpperCase()),a="-----BEGIN "+e+" PRIVATE KEY-----\r\n",a+="Proc-Type: 4,ENCRYPTED\r\n",a+="DEK-Info: "+n+","+o+"\r\n",a+="\r\n",(a+=function(e,t,r,n){return(0,i[t].eproc)(e,r,n)}(t,n,s(n,r,o).keyhex,o).replace(/(.{64})/g,"$1\r\n"))+"\r\n-----END "+e+" PRIVATE KEY-----\r\n"},parseHexOfEncryptedPKCS8:function(e){var t=fe,r=t.getChildIdx,n=t.getV,i={},o=r(e,0);if(2!=o.length)throw"malformed format: SEQUENCE(0).items != 2: "+o.length;i.ciphertext=n(e,o[1]);var s=r(e,o[0]);if(2!=s.length)throw"malformed format: SEQUENCE(0.0).items != 2: "+s.length;if("2a864886f70d01050d"!=n(e,s[0]))throw"this only supports pkcs5PBES2";var a=r(e,s[1]);if(2!=s.length)throw"malformed format: SEQUENCE(0.0.1).items != 2: "+a.length;var u=r(e,a[1]);if(2!=u.length)throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+u.length;if("2a864886f70d0307"!=n(e,u[0]))throw"this only supports TripleDES";i.encryptionSchemeAlg="TripleDES",i.encryptionSchemeIV=n(e,u[1]);var c=r(e,a[0]);if(2!=c.length)throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+c.length;if("2a864886f70d01050c"!=n(e,c[0]))throw"this only supports pkcs5PBKDF2";var h=r(e,c[1]);if(h.length<2)throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+h.length;i.pbkdf2Salt=n(e,h[0]);var l=n(e,h[1]);try{i.pbkdf2Iter=parseInt(l,16)}catch(e){throw"malformed format pbkdf2Iter: "+l}return i},getPBKDF2KeyHexFromParam:function(e,t){var r=y.enc.Hex.parse(e.pbkdf2Salt),n=e.pbkdf2Iter,i=y.PBKDF2(t,r,{keySize:6,iterations:n});return y.enc.Hex.stringify(i)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(e,t){var r=Ce(e,"ENCRYPTED PRIVATE KEY"),n=this.parseHexOfEncryptedPKCS8(r),i=Me.getPBKDF2KeyHexFromParam(n,t),o={};o.ciphertext=y.enc.Hex.parse(n.ciphertext);var s=y.enc.Hex.parse(i),a=y.enc.Hex.parse(n.encryptionSchemeIV),u=y.TripleDES.decrypt(o,s,{iv:a});return y.enc.Hex.stringify(u)},getKeyFromEncryptedPKCS8PEM:function(e,t){var r=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(e,t);return this.getKeyFromPlainPrivatePKCS8Hex(r)},parsePlainPrivatePKCS8Hex:function(e){var t=fe,r=t.getChildIdx,n=t.getV,i={algparam:null};if("30"!=e.substr(0,2))throw"malformed plain PKCS8 private key(code:001)";var o=r(e,0);if(3!=o.length)throw"malformed plain PKCS8 private key(code:002)";if("30"!=e.substr(o[1],2))throw"malformed PKCS8 private key(code:003)";var s=r(e,o[1]);if(2!=s.length)throw"malformed PKCS8 private key(code:004)";if("06"!=e.substr(s[0],2))throw"malformed PKCS8 private key(code:005)";if(i.algoid=n(e,s[0]),"06"==e.substr(s[1],2)&&(i.algparam=n(e,s[1])),"04"!=e.substr(o[2],2))throw"malformed PKCS8 private key(code:006)";return i.keyidx=t.getVidx(e,o[2]),i},getKeyFromPlainPrivatePKCS8PEM:function(e){var t=Ce(e,"PRIVATE KEY");return this.getKeyFromPlainPrivatePKCS8Hex(t)},getKeyFromPlainPrivatePKCS8Hex:function(e){var t,r=this.parsePlainPrivatePKCS8Hex(e);if("2a864886f70d010101"==r.algoid)t=new ie;else if("2a8648ce380401"==r.algoid)t=new ce.crypto.DSA;else{if("2a8648ce3d0201"!=r.algoid)throw"unsupported private key algorithm";t=new ce.crypto.ECDSA}return t.readPKCS8PrvKeyHex(e),t},_getKeyFromPublicPKCS8Hex:function(e){var t,r=fe.getVbyList(e,0,[0,0],"06");if("2a864886f70d010101"===r)t=new ie;else if("2a8648ce380401"===r)t=new ce.crypto.DSA;else{if("2a8648ce3d0201"!==r)throw"unsupported PKCS#8 public key hex";t=new ce.crypto.ECDSA}return t.readPKCS8PubKeyHex(e),t},parsePublicRawRSAKeyHex:function(e){var t=fe,r=t.getChildIdx,n=t.getV,i={};if("30"!=e.substr(0,2))throw"malformed RSA key(code:001)";var o=r(e,0);if(2!=o.length)throw"malformed RSA key(code:002)";if("02"!=e.substr(o[0],2))throw"malformed RSA key(code:003)";if(i.n=n(e,o[0]),"02"!=e.substr(o[1],2))throw"malformed RSA key(code:004)";return i.e=n(e,o[1]),i},parsePublicPKCS8Hex:function(e){var t=fe,r=t.getChildIdx,n=t.getV,i={algparam:null},o=r(e,0);if(2!=o.length)throw"outer DERSequence shall have 2 elements: "+o.length;var s=o[0];if("30"!=e.substr(s,2))throw"malformed PKCS8 public key(code:001)";var a=r(e,s);if(2!=a.length)throw"malformed PKCS8 public key(code:002)";if("06"!=e.substr(a[0],2))throw"malformed PKCS8 public key(code:003)";if(i.algoid=n(e,a[0]),"06"==e.substr(a[1],2)?i.algparam=n(e,a[1]):"30"==e.substr(a[1],2)&&(i.algparam={},i.algparam.p=t.getVbyList(e,a[1],[0],"02"),i.algparam.q=t.getVbyList(e,a[1],[1],"02"),i.algparam.g=t.getVbyList(e,a[1],[2],"02")),"03"!=e.substr(o[1],2))throw"malformed PKCS8 public key(code:004)";return i.key=n(e,o[1]).substr(2),i}}}();Me.getKey=function(e,t,r){var n,i=(y=fe).getChildIdx,o=(y.getV,y.getVbyList),s=ce.crypto,a=s.ECDSA,u=s.DSA,c=ie,h=Ce,l=Me;if(void 0!==c&&e instanceof c)return e;if(void 0!==a&&e instanceof a)return e;if(void 0!==u&&e instanceof u)return e;if(void 0!==e.curve&&void 0!==e.xy&&void 0===e.d)return new a({pub:e.xy,curve:e.curve});if(void 0!==e.curve&&void 0!==e.d)return new a({prv:e.d,curve:e.curve});if(void 0===e.kty&&void 0!==e.n&&void 0!==e.e&&void 0===e.d)return(C=new c).setPublic(e.n,e.e),C;if(void 0===e.kty&&void 0!==e.n&&void 0!==e.e&&void 0!==e.d&&void 0!==e.p&&void 0!==e.q&&void 0!==e.dp&&void 0!==e.dq&&void 0!==e.co&&void 0===e.qi)return(C=new c).setPrivateEx(e.n,e.e,e.d,e.p,e.q,e.dp,e.dq,e.co),C;if(void 0===e.kty&&void 0!==e.n&&void 0!==e.e&&void 0!==e.d&&void 0===e.p)return(C=new c).setPrivate(e.n,e.e,e.d),C;if(void 0!==e.p&&void 0!==e.q&&void 0!==e.g&&void 0!==e.y&&void 0===e.x)return(C=new u).setPublic(e.p,e.q,e.g,e.y),C;if(void 0!==e.p&&void 0!==e.q&&void 0!==e.g&&void 0!==e.y&&void 0!==e.x)return(C=new u).setPrivate(e.p,e.q,e.g,e.y,e.x),C;if("RSA"===e.kty&&void 0!==e.n&&void 0!==e.e&&void 0===e.d)return(C=new c).setPublic(Se(e.n),Se(e.e)),C;if("RSA"===e.kty&&void 0!==e.n&&void 0!==e.e&&void 0!==e.d&&void 0!==e.p&&void 0!==e.q&&void 0!==e.dp&&void 0!==e.dq&&void 0!==e.qi)return(C=new c).setPrivateEx(Se(e.n),Se(e.e),Se(e.d),Se(e.p),Se(e.q),Se(e.dp),Se(e.dq),Se(e.qi)),C;if("RSA"===e.kty&&void 0!==e.n&&void 0!==e.e&&void 0!==e.d)return(C=new c).setPrivate(Se(e.n),Se(e.e),Se(e.d)),C;if("EC"===e.kty&&void 0!==e.crv&&void 0!==e.x&&void 0!==e.y&&void 0===e.d){var f=(P=new a({curve:e.crv})).ecparams.keylen/4,g="04"+("0000000000"+Se(e.x)).slice(-f)+("0000000000"+Se(e.y)).slice(-f);return P.setPublicKeyHex(g),P}if("EC"===e.kty&&void 0!==e.crv&&void 0!==e.x&&void 0!==e.y&&void 0!==e.d){f=(P=new a({curve:e.crv})).ecparams.keylen/4,g="04"+("0000000000"+Se(e.x)).slice(-f)+("0000000000"+Se(e.y)).slice(-f);var d=("0000000000"+Se(e.d)).slice(-f);return P.setPublicKeyHex(g),P.setPrivateKeyHex(d),P}if("pkcs5prv"===r){var p,v=e,y=fe;if(9===(p=i(v,0)).length)(C=new c).readPKCS5PrvKeyHex(v);else if(6===p.length)(C=new u).readPKCS5PrvKeyHex(v);else{if(!(p.length>2&&"04"===v.substr(p[1],2)))throw"unsupported PKCS#1/5 hexadecimal key";(C=new a).readPKCS5PrvKeyHex(v)}return C}if("pkcs8prv"===r)return l.getKeyFromPlainPrivatePKCS8Hex(e);if("pkcs8pub"===r)return l._getKeyFromPublicPKCS8Hex(e);if("x509pub"===r)return qe.getPublicKeyFromCertHex(e);if(-1!=e.indexOf("-END CERTIFICATE-",0)||-1!=e.indexOf("-END X509 CERTIFICATE-",0)||-1!=e.indexOf("-END TRUSTED CERTIFICATE-",0))return qe.getPublicKeyFromCertPEM(e);if(-1!=e.indexOf("-END PUBLIC KEY-")){var m=Ce(e,"PUBLIC KEY");return l._getKeyFromPublicPKCS8Hex(m)}if(-1!=e.indexOf("-END RSA PRIVATE KEY-")&&-1==e.indexOf("4,ENCRYPTED")){var _=h(e,"RSA PRIVATE KEY");return l.getKey(_,null,"pkcs5prv")}if(-1!=e.indexOf("-END DSA PRIVATE KEY-")&&-1==e.indexOf("4,ENCRYPTED")){var S=o(n=h(e,"DSA PRIVATE KEY"),0,[1],"02"),w=o(n,0,[2],"02"),F=o(n,0,[3],"02"),E=o(n,0,[4],"02"),x=o(n,0,[5],"02");return(C=new u).setPrivate(new b(S,16),new b(w,16),new b(F,16),new b(E,16),new b(x,16)),C}if(-1!=e.indexOf("-END PRIVATE KEY-"))return l.getKeyFromPlainPrivatePKCS8PEM(e);if(-1!=e.indexOf("-END RSA PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED")){var k=l.getDecryptedKeyHex(e,t),A=new ie;return A.readPKCS5PrvKeyHex(k),A}if(-1!=e.indexOf("-END EC PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED")){var P,C=o(n=l.getDecryptedKeyHex(e,t),0,[1],"04"),T=o(n,0,[2,0],"06"),R=o(n,0,[3,0],"03").substr(2);if(void 0===ce.crypto.OID.oidhex2name[T])throw"undefined OID(hex) in KJUR.crypto.OID: "+T;return(P=new a({curve:ce.crypto.OID.oidhex2name[T]})).setPublicKeyHex(R),P.setPrivateKeyHex(C),P.isPublic=!1,P}if(-1!=e.indexOf("-END DSA PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED"))return S=o(n=l.getDecryptedKeyHex(e,t),0,[1],"02"),w=o(n,0,[2],"02"),F=o(n,0,[3],"02"),E=o(n,0,[4],"02"),x=o(n,0,[5],"02"),(C=new u).setPrivate(new b(S,16),new b(w,16),new b(F,16),new b(E,16),new b(x,16)),C;if(-1!=e.indexOf("-END ENCRYPTED PRIVATE KEY-"))return l.getKeyFromEncryptedPKCS8PEM(e,t);throw"not supported argument"},Me.generateKeypair=function(e,t){if("RSA"==e){var r=t;(s=new ie).generate(r,"10001"),s.isPrivate=!0,s.isPublic=!0;var n=new ie,i=s.n.toString(16),o=s.e.toString(16);return n.setPublic(i,o),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}if("EC"==e){var s,a,u=t,c=new ce.crypto.ECDSA({curve:u}).generateKeyPairHex();return(s=new ce.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),s.setPrivateKeyHex(c.ecprvhex),s.isPrivate=!0,s.isPublic=!1,(n=new ce.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}throw"unknown algorithm: "+e},Me.getPEM=function(e,t,r,n,i,o){var s=ce,a=s.asn1,u=a.DERObjectIdentifier,c=a.DERInteger,h=a.ASN1Util.newObject,l=a.x509.SubjectPublicKeyInfo,f=s.crypto,g=f.DSA,d=f.ECDSA,p=ie;function v(e){return h({seq:[{int:0},{int:{bigint:e.n}},{int:e.e},{int:{bigint:e.d}},{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.dmp1}},{int:{bigint:e.dmq1}},{int:{bigint:e.coeff}}]})}function m(e){return h({seq:[{int:1},{octstr:{hex:e.prvKeyHex}},{tag:["a0",!0,{oid:{name:e.curveName}}]},{tag:["a1",!0,{bitstr:{hex:"00"+e.pubKeyHex}}]}]})}function _(e){return h({seq:[{int:0},{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.g}},{int:{bigint:e.y}},{int:{bigint:e.x}}]})}if((void 0!==p&&e instanceof p||void 0!==g&&e instanceof g||void 0!==d&&e instanceof d)&&1==e.isPublic&&(void 0===t||"PKCS8PUB"==t))return Pe(b=new l(e).getEncodedHex(),"PUBLIC KEY");if("PKCS1PRV"==t&&void 0!==p&&e instanceof p&&(void 0===r||null==r)&&1==e.isPrivate)return Pe(b=v(e).getEncodedHex(),"RSA PRIVATE KEY");if("PKCS1PRV"==t&&void 0!==d&&e instanceof d&&(void 0===r||null==r)&&1==e.isPrivate){var S=new u({name:e.curveName}).getEncodedHex(),w=m(e).getEncodedHex(),F="";return(F+=Pe(S,"EC PARAMETERS"))+Pe(w,"EC PRIVATE KEY")}if("PKCS1PRV"==t&&void 0!==g&&e instanceof g&&(void 0===r||null==r)&&1==e.isPrivate)return Pe(b=_(e).getEncodedHex(),"DSA PRIVATE KEY");if("PKCS5PRV"==t&&void 0!==p&&e instanceof p&&void 0!==r&&null!=r&&1==e.isPrivate){var b=v(e).getEncodedHex();return void 0===n&&(n="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("RSA",b,r,n,o)}if("PKCS5PRV"==t&&void 0!==d&&e instanceof d&&void 0!==r&&null!=r&&1==e.isPrivate)return b=m(e).getEncodedHex(),void 0===n&&(n="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("EC",b,r,n,o);if("PKCS5PRV"==t&&void 0!==g&&e instanceof g&&void 0!==r&&null!=r&&1==e.isPrivate)return b=_(e).getEncodedHex(),void 0===n&&(n="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("DSA",b,r,n,o);var E=function(e,t){var r=x(e,t);return new h({seq:[{seq:[{oid:{name:"pkcs5PBES2"}},{seq:[{seq:[{oid:{name:"pkcs5PBKDF2"}},{seq:[{octstr:{hex:r.pbkdf2Salt}},{int:r.pbkdf2Iter}]}]},{seq:[{oid:{name:"des-EDE3-CBC"}},{octstr:{hex:r.encryptionSchemeIV}}]}]}]},{octstr:{hex:r.ciphertext}}]}).getEncodedHex()},x=function(e,t){var r=y.lib.WordArray.random(8),n=y.lib.WordArray.random(8),i=y.PBKDF2(t,r,{keySize:6,iterations:100}),o=y.enc.Hex.parse(e),s=y.TripleDES.encrypt(o,i,{iv:n})+"",a={};return a.ciphertext=s,a.pbkdf2Salt=y.enc.Hex.stringify(r),a.pbkdf2Iter=100,a.encryptionSchemeAlg="DES-EDE3-CBC",a.encryptionSchemeIV=y.enc.Hex.stringify(n),a};if("PKCS8PRV"==t&&null!=p&&e instanceof p&&1==e.isPrivate){var k=v(e).getEncodedHex();return b=h({seq:[{int:0},{seq:[{oid:{name:"rsaEncryption"}},{null:!0}]},{octstr:{hex:k}}]}).getEncodedHex(),void 0===r||null==r?Pe(b,"PRIVATE KEY"):Pe(w=E(b,r),"ENCRYPTED PRIVATE KEY")}if("PKCS8PRV"==t&&void 0!==d&&e instanceof d&&1==e.isPrivate)return k=new h({seq:[{int:1},{octstr:{hex:e.prvKeyHex}},{tag:["a1",!0,{bitstr:{hex:"00"+e.pubKeyHex}}]}]}).getEncodedHex(),b=h({seq:[{int:0},{seq:[{oid:{name:"ecPublicKey"}},{oid:{name:e.curveName}}]},{octstr:{hex:k}}]}).getEncodedHex(),void 0===r||null==r?Pe(b,"PRIVATE KEY"):Pe(w=E(b,r),"ENCRYPTED PRIVATE KEY");if("PKCS8PRV"==t&&void 0!==g&&e instanceof g&&1==e.isPrivate)return k=new c({bigint:e.x}).getEncodedHex(),b=h({seq:[{int:0},{seq:[{oid:{name:"dsa"}},{seq:[{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.g}}]}]},{octstr:{hex:k}}]}).getEncodedHex(),void 0===r||null==r?Pe(b,"PRIVATE KEY"):Pe(w=E(b,r),"ENCRYPTED PRIVATE KEY");throw"unsupported object nor format"},Me.getKeyFromCSRPEM=function(e){var t=Ce(e,"CERTIFICATE REQUEST");return Me.getKeyFromCSRHex(t)},Me.getKeyFromCSRHex=function(e){var t=Me.parseCSRHex(e);return Me.getKey(t.p8pubkeyhex,null,"pkcs8pub")},Me.parseCSRHex=function(e){var t=fe,r=t.getChildIdx,n=t.getTLV,i={},o=e;if("30"!=o.substr(0,2))throw"malformed CSR(code:001)";var s=r(o,0);if(s.length<1)throw"malformed CSR(code:002)";if("30"!=o.substr(s[0],2))throw"malformed CSR(code:003)";var a=r(o,s[0]);if(a.length<3)throw"malformed CSR(code:004)";return i.p8pubkeyhex=n(o,a[2]),i},Me.getJWKFromKey=function(e){var t={};if(e instanceof ie&&e.isPrivate)return t.kty="RSA",t.n=_e(e.n.toString(16)),t.e=_e(e.e.toString(16)),t.d=_e(e.d.toString(16)),t.p=_e(e.p.toString(16)),t.q=_e(e.q.toString(16)),t.dp=_e(e.dmp1.toString(16)),t.dq=_e(e.dmq1.toString(16)),t.qi=_e(e.coeff.toString(16)),t;if(e instanceof ie&&e.isPublic)return t.kty="RSA",t.n=_e(e.n.toString(16)),t.e=_e(e.e.toString(16)),t;if(e instanceof ce.crypto.ECDSA&&e.isPrivate){if("P-256"!==(n=e.getShortNISTPCurveName())&&"P-384"!==n)throw"unsupported curve name for JWT: "+n;var r=e.getPublicKeyXYHex();return t.kty="EC",t.crv=n,t.x=_e(r.x),t.y=_e(r.y),t.d=_e(e.prvKeyHex),t}if(e instanceof ce.crypto.ECDSA&&e.isPublic){var n;if("P-256"!==(n=e.getShortNISTPCurveName())&&"P-384"!==n)throw"unsupported curve name for JWT: "+n;return r=e.getPublicKeyXYHex(),t.kty="EC",t.crv=n,t.x=_e(r.x),t.y=_e(r.y),t}throw"not supported key object"},ie.getPosArrayOfChildrenFromHex=function(e){return fe.getChildIdx(e,0)},ie.getHexValueArrayOfChildrenFromHex=function(e){var t,r=fe.getV,n=r(e,(t=ie.getPosArrayOfChildrenFromHex(e))[0]),i=r(e,t[1]),o=r(e,t[2]),s=r(e,t[3]),a=r(e,t[4]),u=r(e,t[5]),c=r(e,t[6]),h=r(e,t[7]),l=r(e,t[8]);return(t=new Array).push(n,i,o,s,a,u,c,h,l),t},ie.prototype.readPrivateKeyFromPEMString=function(e){var t=Ce(e),r=ie.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8])},ie.prototype.readPKCS5PrvKeyHex=function(e){var t=ie.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},ie.prototype.readPKCS8PrvKeyHex=function(e){var t,r,n,i,o,s,a,u,c=fe,h=c.getVbyList;if(!1===c.isASN1HEX(e))throw"not ASN.1 hex string";try{t=h(e,0,[2,0,1],"02"),r=h(e,0,[2,0,2],"02"),n=h(e,0,[2,0,3],"02"),i=h(e,0,[2,0,4],"02"),o=h(e,0,[2,0,5],"02"),s=h(e,0,[2,0,6],"02"),a=h(e,0,[2,0,7],"02"),u=h(e,0,[2,0,8],"02")}catch(e){throw"malformed PKCS#8 plain RSA private key"}this.setPrivateEx(t,r,n,i,o,s,a,u)},ie.prototype.readPKCS5PubKeyHex=function(e){var t=fe,r=t.getV;if(!1===t.isASN1HEX(e))throw"keyHex is not ASN.1 hex string";var n=t.getChildIdx(e,0);if(2!==n.length||"02"!==e.substr(n[0],2)||"02"!==e.substr(n[1],2))throw"wrong hex for PKCS#5 public key";var i=r(e,n[0]),o=r(e,n[1]);this.setPublic(i,o)},ie.prototype.readPKCS8PubKeyHex=function(e){var t=fe;if(!1===t.isASN1HEX(e))throw"not ASN.1 hex string";if("06092a864886f70d010101"!==t.getTLVbyList(e,0,[0,0]))throw"not PKCS8 RSA public key";var r=t.getTLVbyList(e,0,[1,0]);this.readPKCS5PubKeyHex(r)},ie.prototype.readCertPubKeyHex=function(e,t){var r,n;(r=new qe).readCertHex(e),n=r.getPublicKeyHex(),this.readPKCS8PubKeyHex(n)};var je=new RegExp("");function He(e,t){for(var r="",n=t/4-e.length,i=0;i>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return n}function Ve(e){for(var t in ce.crypto.Util.DIGESTINFOHEAD){var r=ce.crypto.Util.DIGESTINFOHEAD[t],n=r.length;if(e.substring(0,n)==r)return[t,e.substring(n)]}return[]}function qe(){var e=fe,t=e.getChildIdx,r=e.getV,n=e.getTLV,i=e.getVbyList,o=e.getTLVbyList,s=e.getIdxbyList,a=e.getVidx,u=e.oidname,c=qe,h=Ce;this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){return null===this.hex||0!==this.version?this.version:"a003020102"!==o(this.hex,0,[0,0])?(this.version=1,this.foffset=-1,1):(this.version=3,3)},this.getSerialNumberHex=function(){return i(this.hex,0,[0,1+this.foffset],"02")},this.getSignatureAlgorithmField=function(){return u(i(this.hex,0,[0,2+this.foffset,0],"06"))},this.getIssuerHex=function(){return o(this.hex,0,[0,3+this.foffset],"30")},this.getIssuerString=function(){return c.hex2dn(this.getIssuerHex())},this.getSubjectHex=function(){return o(this.hex,0,[0,5+this.foffset],"30")},this.getSubjectString=function(){return c.hex2dn(this.getSubjectHex())},this.getNotBefore=function(){var e=i(this.hex,0,[0,4+this.foffset,0]);return e=e.replace(/(..)/g,"%$1"),decodeURIComponent(e)},this.getNotAfter=function(){var e=i(this.hex,0,[0,4+this.foffset,1]);return e=e.replace(/(..)/g,"%$1"),decodeURIComponent(e)},this.getPublicKeyHex=function(){return e.getTLVbyList(this.hex,0,[0,6+this.foffset],"30")},this.getPublicKeyIdx=function(){return s(this.hex,0,[0,6+this.foffset],"30")},this.getPublicKeyContentIdx=function(){var e=this.getPublicKeyIdx();return s(this.hex,e,[1,0],"30")},this.getPublicKey=function(){return Me.getKey(this.getPublicKeyHex(),null,"pkcs8pub")},this.getSignatureAlgorithmName=function(){return u(i(this.hex,0,[1,0],"06"))},this.getSignatureValueHex=function(){return i(this.hex,0,[2],"03",!0)},this.verifySignature=function(e){var t=this.getSignatureAlgorithmName(),r=this.getSignatureValueHex(),n=o(this.hex,0,[0],"30"),i=new ce.crypto.Signature({alg:t});return i.init(e),i.updateHex(n),i.verify(r)},this.parseExt=function(){if(3!==this.version)return-1;var r=s(this.hex,0,[0,7,0],"30"),n=t(this.hex,r);this.aExtInfo=new Array;for(var o=0;o0&&(c=new Array(r),(new te).nextBytes(c),c=String.fromCharCode.apply(String,c));var h=be(u(Ee("\0\0\0\0\0\0\0\0"+i+c))),l=[];for(n=0;n>8*a-s&255;for(d[0]&=~p,n=0;nthis.n.bitLength())return 0;var n=Ve(this.doPublic(r).toString(16).replace(/^1f+00/,""));if(0==n.length)return!1;var i=n[0];return n[1]==function(e){return ce.crypto.Util.hashString(e,i)}(e)},ie.prototype.verifyWithMessageHash=function(e,t){var r=re(t=(t=t.replace(je,"")).replace(/[ \n]+/g,""),16);if(r.bitLength()>this.n.bitLength())return 0;var n=Ve(this.doPublic(r).toString(16).replace(/^1f+00/,""));return 0!=n.length&&(n[0],n[1]==e)},ie.prototype.verifyPSS=function(e,t,r,n){var i=function(e){return ce.crypto.Util.hashHex(e,r)}(Ee(e));return void 0===n&&(n=-1),this.verifyWithMessageHashPSS(i,t,r,n)},ie.prototype.verifyWithMessageHashPSS=function(e,t,r,n){var i=new b(t,16);if(i.bitLength()>this.n.bitLength())return!1;var o,s=function(e){return ce.crypto.Util.hashHex(e,r)},a=be(e),u=a.length,c=this.n.bitLength()-1,h=Math.ceil(c/8);if(-1===n||void 0===n)n=u;else if(-2===n)n=h-u-2;else if(n<-2)throw"invalid salt length";if(h>8*h-c&255;if(0!=(f.charCodeAt(0)&d))throw"bits beyond keysize not zero";var p=Ke(g,f.length,s),v=[];for(o=0;o0&&-1==(":"+n.join(":")+":").indexOf(":"+y+":"))throw"algorithm '"+y+"' not accepted in the list";if("none"!=y&&null===t)throw"key shall be specified to verify.";if("string"==typeof t&&-1!=t.indexOf("-----BEGIN ")&&(t=Me.getKey(t)),!("RS"!=g&&"PS"!=g||t instanceof i))throw"key shall be a RSAKey obj for RS* and PS* algs";if("ES"==g&&!(t instanceof c))throw"key shall be a ECDSA obj for ES* algs";var m=null;if(void 0===s.jwsalg2sigalg[v.alg])throw"unsupported alg name: "+y;if("none"==(m=s.jwsalg2sigalg[y]))throw"not supported";if("Hmac"==m.substr(0,4)){if(void 0===t)throw"hexadecimal key shall be specified for HMAC";var _=new h({alg:m,pass:t});return _.updateString(d),p==_.doFinal()}if(-1!=m.indexOf("withECDSA")){var S,w=null;try{w=c.concatSigToASN1Sig(p)}catch(e){return!1}return(S=new l({alg:m})).init(t),S.updateString(d),S.verify(w)}return(S=new l({alg:m})).init(t),S.updateString(d),S.verify(p)},ce.jws.JWS.parse=function(e){var t,r,n,i=e.split("."),o={};if(2!=i.length&&3!=i.length)throw"malformed sJWS: wrong number of '.' splitted elements";return t=i[0],r=i[1],3==i.length&&(n=i[2]),o.headerObj=ce.jws.JWS.readSafeJSONString(le(t)),o.payloadObj=ce.jws.JWS.readSafeJSONString(le(r)),o.headerPP=JSON.stringify(o.headerObj,null," "),null==o.payloadObj?o.payloadPP=le(r):o.payloadPP=JSON.stringify(o.payloadObj,null," "),void 0!==n&&(o.sigHex=Se(n)),o},ce.jws.JWS.verifyJWT=function(e,t,n){var i=ce.jws,o=i.JWS,s=o.readSafeJSONString,a=o.inArray,u=o.includedArray,c=e.split("."),h=c[0],l=c[1],f=(Se(c[2]),s(le(h))),g=s(le(l));if(void 0===f.alg)return!1;if(void 0===n.alg)throw"acceptField.alg shall be specified";if(!a(f.alg,n.alg))return!1;if(void 0!==g.iss&&"object"===r(n.iss)&&!a(g.iss,n.iss))return!1;if(void 0!==g.sub&&"object"===r(n.sub)&&!a(g.sub,n.sub))return!1;if(void 0!==g.aud&&"object"===r(n.aud))if("string"==typeof g.aud){if(!a(g.aud,n.aud))return!1}else if("object"==r(g.aud)&&!u(g.aud,n.aud))return!1;var d=i.IntDate.getNow();return void 0!==n.verifyAt&&"number"==typeof n.verifyAt&&(d=n.verifyAt),void 0!==n.gracePeriod&&"number"==typeof n.gracePeriod||(n.gracePeriod=0),!(void 0!==g.exp&&"number"==typeof g.exp&&g.exp+n.gracePeriodt.length&&(r=t.length);for(var n=0;n - * @license MIT - */ -var n=r(29),i=r(30),o=r(31);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function d(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return j(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return H(e).length;default:if(n)return j(e).length;t=(""+t).toLowerCase(),n=!0}}function p(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function v(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=u.from(t,n)),u.isBuffer(t))return 0===t.length?-1:y(e,t,r,n,i);if("number"==typeof t)return t&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):y(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,r,n,i){var o,s=1,a=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var h=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var l=!0,f=0;fi&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function E(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function x(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:c>223?3:c>191?2:1;if(i+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(o=e[i+1]))&&(u=(31&c)<<6|63&o)>127&&(h=u);break;case 3:o=e[i+1],s=e[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:o=e[i+1],s=e[i+2],a=e[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u)}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return function(e){var t=e.length;if(t<=k)return String.fromCharCode.apply(String,e);for(var r="",n=0;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,r);case"utf8":case"utf-8":return x(this,t,r);case"ascii":return A(this,t,r);case"latin1":case"binary":return P(this,t,r);case"base64":return E(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}.apply(this,arguments)},u.prototype.equals=function(e){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===u.compare(this,e)},u.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},u.prototype.compare=function(e,t,r,n,i){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),a=Math.min(o,s),c=this.slice(n,i),h=e.slice(t,r),l=0;li)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return m(this,e,t,r);case"utf8":case"utf-8":return _(this,e,t,r);case"ascii":return S(this,e,t,r);case"latin1":case"binary":return w(this,e,t,r);case"base64":return F(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function A(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function I(e,t,r,n,i,o){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function D(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function U(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function L(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function N(e,t,r,n,o){return o||L(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function O(e,t,r,n,o){return o||L(e,0,r,8),i.write(e,t,r,n,52,8),r+8}u.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},u.prototype.readUInt8=function(e,t){return t||R(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return t||R(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return t||R(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||R(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},u.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||R(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},u.prototype.readInt8=function(e,t){return t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){t||R(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(e,t){t||R(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(e,t){return t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return t||R(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return t||R(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return t||R(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return t||R(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,r,n){e=+e,t|=0,r|=0,n||I(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+r},u.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},u.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},u.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):U(this,e,t,!0),t+4},u.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):U(this,e,t,!1),t+4},u.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);I(this,e,t,r,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>0)-a&255;return t+r},u.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);I(this,e,t,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+r},u.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},u.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},u.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):U(this,e,t,!0),t+4},u.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):U(this,e,t,!1),t+4},u.prototype.writeFloatLE=function(e,t,r){return N(this,e,t,!0,r)},u.prototype.writeFloatBE=function(e,t,r){return N(this,e,t,!1,r)},u.prototype.writeDoubleLE=function(e,t,r){return O(this,e,t,!0,r)},u.prototype.writeDoubleBE=function(e,t,r){return O(this,e,t,!1,r)},u.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(28))},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";t.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){for(var t,r=c(e),n=r[0],s=r[1],a=new o(function(e,t,r){return 3*(t+r)/4-r}(0,n,s)),u=0,h=s>0?n-4:n,l=0;l>16&255,a[u++]=t>>8&255,a[u++]=255&t;return 2===s&&(t=i[e.charCodeAt(l)]<<2|i[e.charCodeAt(l+1)]>>4,a[u++]=255&t),1===s&&(t=i[e.charCodeAt(l)]<<10|i[e.charCodeAt(l+1)]<<4|i[e.charCodeAt(l+2)]>>2,a[u++]=t>>8&255,a[u++]=255&t),a},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],s=0,a=r-i;sa?a:s+16383));return 1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,u=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function h(e,t,r){for(var i,o,s=[],a=t;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,h=-7,l=r?i-1:0,f=r?-1:1,g=e[t+l];for(l+=f,o=g&(1<<-h)-1,g>>=-h,h+=a;h>0;o=256*o+e[t+l],l+=f,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+e[t+l],l+=f,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),o-=c}return(g?-1:1)*s*Math.pow(2,o-n)},t.write=function(e,t,r,n,i,o){var s,a,u,c=8*o-i-1,h=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:o-1,d=n?1:-1,p=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=h):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),(t+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(t*u-1)*Math.pow(2,i),s+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;e[r+g]=255&a,g+=d,a/=256,i-=8);for(s=s<0;e[r+g]=255&s,g+=d,s/=256,c-=8);e[r+g-d]|=128*p}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.jws,r=e.KeyUtil,i=e.X509,o=e.crypto,s=e.hextob64u,a=e.b64tohex,u=e.AllowedSigningAlgs;return function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.parseJwt=function e(r){n.Log.debug("JoseUtil.parseJwt");try{var i=t.JWS.parse(r);return{header:i.headerObj,payload:i.payloadObj}}catch(e){n.Log.error(e)}},e.validateJwt=function(t,o,s,u,c,h,l){n.Log.debug("JoseUtil.validateJwt");try{if("RSA"===o.kty)if(o.e&&o.n)o=r.getKey(o);else{if(!o.x5c||!o.x5c.length)return n.Log.error("JoseUtil.validateJwt: RSA key missing key material",o),Promise.reject(new Error("RSA key missing key material"));var f=a(o.x5c[0]);o=i.getPublicKeyFromCertHex(f)}else{if("EC"!==o.kty)return n.Log.error("JoseUtil.validateJwt: Unsupported key type",o&&o.kty),Promise.reject(new Error(o.kty));if(!(o.crv&&o.x&&o.y))return n.Log.error("JoseUtil.validateJwt: EC key missing key material",o),Promise.reject(new Error("EC key missing key material"));o=r.getKey(o)}return e._validateJwt(t,o,s,u,c,h,l)}catch(e){return n.Log.error(e&&e.message||e),Promise.reject("JWT validation failed")}},e.validateJwtAttributes=function(t,r,i,o,s,a){o||(o=0),s||(s=parseInt(Date.now()/1e3));var u=e.parseJwt(t).payload;if(!u.iss)return n.Log.error("JoseUtil._validateJwt: issuer was not provided"),Promise.reject(new Error("issuer was not provided"));if(u.iss!==r)return n.Log.error("JoseUtil._validateJwt: Invalid issuer in token",u.iss),Promise.reject(new Error("Invalid issuer in token: "+u.iss));if(!u.aud)return n.Log.error("JoseUtil._validateJwt: aud was not provided"),Promise.reject(new Error("aud was not provided"));if(!(u.aud===i||Array.isArray(u.aud)&&u.aud.indexOf(i)>=0))return n.Log.error("JoseUtil._validateJwt: Invalid audience in token",u.aud),Promise.reject(new Error("Invalid audience in token: "+u.aud));if(u.azp&&u.azp!==i)return n.Log.error("JoseUtil._validateJwt: Invalid azp in token",u.azp),Promise.reject(new Error("Invalid azp in token: "+u.azp));if(!a){var c=s+o,h=s-o;if(!u.iat)return n.Log.error("JoseUtil._validateJwt: iat was not provided"),Promise.reject(new Error("iat was not provided"));if(c>>((3&t)<<3)&255;return i}}},function(e,t){for(var r=[],n=0;n<256;++n)r[n]=(n+256).toString(16).substr(1);e.exports=function(e,t){var n=t||0,i=r;return[i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]]].join("")}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SigninResponse=void 0;var n=function(){function e(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:"#";!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var n=i.UrlUtility.parseUrlFragment(t,r);this.error=n.error,this.error_description=n.error_description,this.error_uri=n.error_uri,this.code=n.code,this.state=n.state,this.id_token=n.id_token,this.session_state=n.session_state,this.access_token=n.access_token,this.token_type=n.token_type,this.scope=n.scope,this.profile=void 0,this.expires_in=n.expires_in}return n(e,[{key:"expires_in",get:function(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function(e){var t=parseInt(e);if("number"==typeof t&&t>0){var r=parseInt(Date.now()/1e3);this.expires_at=r+t}}},{key:"expired",get:function(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:"scopes",get:function(){return(this.scope||"").split(" ")}},{key:"isOpenIdConnect",get:function(){return this.scopes.indexOf("openid")>=0||!!this.id_token}}]),e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SignoutRequest=void 0;var n=r(0),i=r(3),o=r(8);t.SignoutRequest=function e(t){var r=t.url,s=t.id_token_hint,a=t.post_logout_redirect_uri,u=t.data,c=t.extraQueryParams,h=t.request_type;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!r)throw n.Log.error("SignoutRequest.ctor: No url passed"),new Error("url");for(var l in s&&(r=i.UrlUtility.addQueryParam(r,"id_token_hint",s)),a&&(r=i.UrlUtility.addQueryParam(r,"post_logout_redirect_uri",a),u&&(this.state=new o.State({data:u,request_type:h}),r=i.UrlUtility.addQueryParam(r,"state",this.state.id))),c)r=i.UrlUtility.addQueryParam(r,l,c[l]);this.url=r}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SignoutResponse=void 0;var n=r(3);t.SignoutResponse=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var r=n.UrlUtility.parseUrlFragment(t,"?");this.error=r.error,this.error_description=r.error_description,this.error_uri=r.error_uri,this.state=r.state}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InMemoryWebStorage=void 0;var n=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.SessionMonitor,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:l.TokenRevocationClient,d=arguments.length>4&&void 0!==arguments[4]?arguments[4]:f.TokenClient,p=arguments.length>5&&void 0!==arguments[5]?arguments[5]:g.JoseUtil;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r instanceof s.UserManagerSettings||(r=new s.UserManagerSettings(r));var v=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,r));return v._events=new u.UserManagerEvents(r),v._silentRenewService=new n(v),v.settings.automaticSilentRenew&&(i.Log.debug("UserManager.ctor: automaticSilentRenew is configured, setting up silent renew"),v.startSilentRenew()),v.settings.monitorSession&&(i.Log.debug("UserManager.ctor: monitorSession is configured, setting up session monitor"),v._sessionMonitor=new o(v)),v._tokenRevocationClient=new a(v._settings),v._tokenClient=new d(v._settings),v._joseUtil=p,v}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getUser=function(){var e=this;return this._loadUser().then((function(t){return t?(i.Log.info("UserManager.getUser: user loaded"),e._events.load(t,!1),t):(i.Log.info("UserManager.getUser: user not found in storage"),null)}))},t.prototype.removeUser=function(){var e=this;return this.storeUser(null).then((function(){i.Log.info("UserManager.removeUser: user removed from storage"),e._events.unload()}))},t.prototype.signinRedirect=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="si:r";var t={useReplaceToNavigate:e.useReplaceToNavigate};return this._signinStart(e,this._redirectNavigator,t).then((function(){i.Log.info("UserManager.signinRedirect: successful")}))},t.prototype.signinRedirectCallback=function(e){return this._signinEnd(e||this._redirectNavigator.url).then((function(e){return e.profile&&e.profile.sub?i.Log.info("UserManager.signinRedirectCallback: successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinRedirectCallback: no sub"),e}))},t.prototype.signinPopup=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="si:p";var t=e.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri;return t?(e.redirect_uri=t,e.display="popup",this._signin(e,this._popupNavigator,{startUrl:t,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(e){return e&&(e.profile&&e.profile.sub?i.Log.info("UserManager.signinPopup: signinPopup successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinPopup: no sub")),e}))):(i.Log.error("UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured"),Promise.reject(new Error("No popup_redirect_uri or redirect_uri configured")))},t.prototype.signinPopupCallback=function(e){return this._signinCallback(e,this._popupNavigator).then((function(e){return e&&(e.profile&&e.profile.sub?i.Log.info("UserManager.signinPopupCallback: successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinPopupCallback: no sub")),e})).catch((function(e){i.Log.error(e.message)}))},t.prototype.signinSilent=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(t=Object.assign({},t)).request_type="si:s",this._loadUser().then((function(r){return r&&r.refresh_token?(t.refresh_token=r.refresh_token,e._useRefreshToken(t)):(t.id_token_hint=t.id_token_hint||e.settings.includeIdTokenInSilentRenew&&r&&r.id_token,r&&e._settings.validateSubOnSilentRenew&&(i.Log.debug("UserManager.signinSilent, subject prior to silent renew: ",r.profile.sub),t.current_sub=r.profile.sub),e._signinSilentIframe(t))}))},t.prototype._useRefreshToken=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(t).then((function(t){return t?t.access_token?e._loadUser().then((function(r){if(r){var n=Promise.resolve();return t.id_token&&(n=e._validateIdTokenFromTokenRefreshToken(r.profile,t.id_token)),n.then((function(){return i.Log.debug("UserManager._useRefreshToken: refresh token response success"),r.id_token=t.id_token,r.access_token=t.access_token,r.refresh_token=t.refresh_token||r.refresh_token,r.expires_in=t.expires_in,e.storeUser(r).then((function(){return e._events.load(r),r}))}))}return null})):(i.Log.error("UserManager._useRefreshToken: No access token returned from token endpoint"),Promise.reject("No access token returned from token endpoint")):(i.Log.error("UserManager._useRefreshToken: No response returned from token endpoint"),Promise.reject("No response returned from token endpoint"))}))},t.prototype._validateIdTokenFromTokenRefreshToken=function(e,t){var r=this;return this._metadataService.getIssuer().then((function(n){return r._joseUtil.validateJwtAttributes(t,n,r._settings.client_id,r._settings.clockSkew).then((function(t){return t?t.sub!==e.sub?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub"),Promise.reject(new Error("sub in id_token does not match current sub"))):t.auth_time&&t.auth_time!==e.auth_time?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time"),Promise.reject(new Error("auth_time in id_token does not match original auth_time"))):t.azp&&t.azp!==e.azp?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp"),Promise.reject(new Error("azp in id_token does not match original azp"))):!t.azp&&e.azp?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token"),Promise.reject(new Error("azp not in id_token, but present in original id_token"))):void 0:(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token"),Promise.reject(new Error("Failed to validate id_token")))}))}))},t.prototype._signinSilentIframe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return t?(e.redirect_uri=t,e.prompt=e.prompt||"none",this._signin(e,this._iframeNavigator,{startUrl:t,silentRequestTimeout:e.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(e){return e&&(e.profile&&e.profile.sub?i.Log.info("UserManager.signinSilent: successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinSilent: no sub")),e}))):(i.Log.error("UserManager.signinSilent: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},t.prototype.signinSilentCallback=function(e){return this._signinCallback(e,this._iframeNavigator).then((function(e){return e&&(e.profile&&e.profile.sub?i.Log.info("UserManager.signinSilentCallback: successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinSilentCallback: no sub")),e}))},t.prototype.signinCallback=function(e){var t=this;return this.readSigninResponseState(e).then((function(r){var n=r.state;return r.response,"si:r"===n.request_type?t.signinRedirectCallback(e):"si:p"===n.request_type?t.signinPopupCallback(e):"si:s"===n.request_type?t.signinSilentCallback(e):Promise.reject(new Error("invalid response_type in state"))}))},t.prototype.signoutCallback=function(e,t){var r=this;return this.readSignoutResponseState(e).then((function(n){var i=n.state,o=n.response;return i?"so:r"===i.request_type?r.signoutRedirectCallback(e):"so:p"===i.request_type?r.signoutPopupCallback(e,t):Promise.reject(new Error("invalid response_type in state")):o}))},t.prototype.querySessionStatus=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(t=Object.assign({},t)).request_type="si:s";var r=t.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return r?(t.redirect_uri=r,t.prompt="none",t.response_type=t.response_type||this.settings.query_status_response_type,t.scope=t.scope||"openid",t.skipUserInfo=!0,this._signinStart(t,this._iframeNavigator,{startUrl:r,silentRequestTimeout:t.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return e.processSigninResponse(t.url).then((function(e){if(i.Log.debug("UserManager.querySessionStatus: got signin response"),e.session_state&&e.profile.sub)return i.Log.info("UserManager.querySessionStatus: querySessionStatus success for sub: ",e.profile.sub),{session_state:e.session_state,sub:e.profile.sub,sid:e.profile.sid};i.Log.info("querySessionStatus successful, user not authenticated")})).catch((function(t){if(t.session_state&&e.settings.monitorAnonymousSession&&("login_required"==t.message||"consent_required"==t.message||"interaction_required"==t.message||"account_selection_required"==t.message))return i.Log.info("UserManager.querySessionStatus: querySessionStatus success for anonymous user"),{session_state:t.session_state};throw t}))}))):(i.Log.error("UserManager.querySessionStatus: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},t.prototype._signin=function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(e,t,n).then((function(t){return r._signinEnd(t.url,e)}))},t.prototype._signinStart=function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.prepare(n).then((function(t){return i.Log.debug("UserManager._signinStart: got navigator window handle"),r.createSigninRequest(e).then((function(e){return i.Log.debug("UserManager._signinStart: got signin request"),n.url=e.url,n.id=e.state.id,t.navigate(n)})).catch((function(e){throw t.close&&(i.Log.debug("UserManager._signinStart: Error after preparing navigator, closing navigator window"),t.close()),e}))}))},t.prototype._signinEnd=function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(e).then((function(e){i.Log.debug("UserManager._signinEnd: got signin response");var n=new a.User(e);if(r.current_sub){if(r.current_sub!==n.profile.sub)return i.Log.debug("UserManager._signinEnd: current user does not match user returned from signin. sub from signin: ",n.profile.sub),Promise.reject(new Error("login_required"));i.Log.debug("UserManager._signinEnd: current user matches user returned from signin")}return t.storeUser(n).then((function(){return i.Log.debug("UserManager._signinEnd: user stored"),t._events.load(n),n}))}))},t.prototype._signinCallback=function(e,t){return i.Log.debug("UserManager._signinCallback"),t.callback(e)},t.prototype.signoutRedirect=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="so:r";var t=e.post_logout_redirect_uri||this.settings.post_logout_redirect_uri;t&&(e.post_logout_redirect_uri=t);var r={useReplaceToNavigate:e.useReplaceToNavigate};return this._signoutStart(e,this._redirectNavigator,r).then((function(){i.Log.info("UserManager.signoutRedirect: successful")}))},t.prototype.signoutRedirectCallback=function(e){return this._signoutEnd(e||this._redirectNavigator.url).then((function(e){return i.Log.info("UserManager.signoutRedirectCallback: successful"),e}))},t.prototype.signoutPopup=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="so:p";var t=e.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri;return e.post_logout_redirect_uri=t,e.display="popup",e.post_logout_redirect_uri&&(e.state=e.state||{}),this._signout(e,this._popupNavigator,{startUrl:t,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(){i.Log.info("UserManager.signoutPopup: successful")}))},t.prototype.signoutPopupCallback=function(e,t){return void 0===t&&"boolean"==typeof e&&(t=e,e=null),this._popupNavigator.callback(e,t,"?").then((function(){i.Log.info("UserManager.signoutPopupCallback: successful")}))},t.prototype._signout=function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(e,t,n).then((function(e){return r._signoutEnd(e.url)}))},t.prototype._signoutStart=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this,r=arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.prepare(n).then((function(r){return i.Log.debug("UserManager._signoutStart: got navigator window handle"),t._loadUser().then((function(o){return i.Log.debug("UserManager._signoutStart: loaded current user from storage"),(t._settings.revokeAccessTokenOnSignout?t._revokeInternal(o):Promise.resolve()).then((function(){var s=e.id_token_hint||o&&o.id_token;return s&&(i.Log.debug("UserManager._signoutStart: Setting id_token into signout request"),e.id_token_hint=s),t.removeUser().then((function(){return i.Log.debug("UserManager._signoutStart: user removed, creating signout request"),t.createSignoutRequest(e).then((function(e){return i.Log.debug("UserManager._signoutStart: got signout request"),n.url=e.url,e.state&&(n.id=e.state.id),r.navigate(n)}))}))}))})).catch((function(e){throw r.close&&(i.Log.debug("UserManager._signoutStart: Error after preparing navigator, closing navigator window"),r.close()),e}))}))},t.prototype._signoutEnd=function(e){return this.processSignoutResponse(e).then((function(e){return i.Log.debug("UserManager._signoutEnd: got signout response"),e}))},t.prototype.revokeAccessToken=function(){var e=this;return this._loadUser().then((function(t){return e._revokeInternal(t,!0).then((function(r){if(r)return i.Log.debug("UserManager.revokeAccessToken: removing token properties from user and re-storing"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,e.storeUser(t).then((function(){i.Log.debug("UserManager.revokeAccessToken: user stored"),e._events.load(t)}))}))})).then((function(){i.Log.info("UserManager.revokeAccessToken: access token revoked successfully")}))},t.prototype._revokeInternal=function(e,t){var r=this;if(e){var n=e.access_token,o=e.refresh_token;return this._revokeAccessTokenInternal(n,t).then((function(e){return r._revokeRefreshTokenInternal(o,t).then((function(t){return e||t||i.Log.debug("UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format"),e||t}))}))}return Promise.resolve(!1)},t.prototype._revokeAccessTokenInternal=function(e,t){return!e||e.indexOf(".")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(e,t).then((function(){return!0}))},t.prototype._revokeRefreshTokenInternal=function(e,t){return e?this._tokenRevocationClient.revoke(e,t,"refresh_token").then((function(){return!0})):Promise.resolve(!1)},t.prototype.startSilentRenew=function(){this._silentRenewService.start()},t.prototype.stopSilentRenew=function(){this._silentRenewService.stop()},t.prototype._loadUser=function(){return this._userStore.get(this._userStoreKey).then((function(e){return e?(i.Log.debug("UserManager._loadUser: user storageString loaded"),a.User.fromStorageString(e)):(i.Log.debug("UserManager._loadUser: no user storageString"),null)}))},t.prototype.storeUser=function(e){if(e){i.Log.debug("UserManager.storeUser: storing user");var t=e.toStorageString();return this._userStore.set(this._userStoreKey,t)}return i.Log.debug("storeUser.storeUser: removing user"),this._userStore.remove(this._userStoreKey)},n(t,[{key:"_redirectNavigator",get:function(){return this.settings.redirectNavigator}},{key:"_popupNavigator",get:function(){return this.settings.popupNavigator}},{key:"_iframeNavigator",get:function(){return this.settings.iframeNavigator}},{key:"_userStore",get:function(){return this.settings.userStore}},{key:"events",get:function(){return this._events}},{key:"_userStoreKey",get:function(){return"user:"+this.settings.authority+":"+this.settings.client_id}}]),t}(o.OidcClient)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserManagerSettings=void 0;var n=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.popup_redirect_uri,i=r.popup_post_logout_redirect_uri,l=r.popupWindowFeatures,f=r.popupWindowTarget,g=r.silent_redirect_uri,d=r.silentRequestTimeout,p=r.automaticSilentRenew,v=void 0!==p&&p,y=r.validateSubOnSilentRenew,m=void 0!==y&&y,_=r.includeIdTokenInSilentRenew,S=void 0===_||_,w=r.monitorSession,F=void 0===w||w,b=r.monitorAnonymousSession,E=void 0!==b&&b,x=r.checkSessionInterval,k=void 0===x?2e3:x,A=r.stopCheckSessionOnError,P=void 0===A||A,C=r.query_status_response_type,T=r.revokeAccessTokenOnSignout,R=void 0!==T&&T,I=r.accessTokenExpiringNotificationTime,D=void 0===I?60:I,U=r.redirectNavigator,L=void 0===U?new o.RedirectNavigator:U,N=r.popupNavigator,O=void 0===N?new s.PopupNavigator:N,B=r.iframeNavigator,M=void 0===B?new a.IFrameNavigator:B,j=r.userStore,H=void 0===j?new u.WebStorageStateStore({store:c.Global.sessionStorage}):j;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var K=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,arguments[0]));return K._popup_redirect_uri=n,K._popup_post_logout_redirect_uri=i,K._popupWindowFeatures=l,K._popupWindowTarget=f,K._silent_redirect_uri=g,K._silentRequestTimeout=d,K._automaticSilentRenew=v,K._validateSubOnSilentRenew=m,K._includeIdTokenInSilentRenew=S,K._accessTokenExpiringNotificationTime=D,K._monitorSession=F,K._monitorAnonymousSession=E,K._checkSessionInterval=k,K._stopCheckSessionOnError=P,C?K._query_status_response_type=C:arguments[0]&&arguments[0].response_type?K._query_status_response_type=h.SigninRequest.isOidc(arguments[0].response_type)?"id_token":"code":K._query_status_response_type="id_token",K._revokeAccessTokenOnSignout=R,K._redirectNavigator=L,K._popupNavigator=O,K._iframeNavigator=M,K._userStore=H,K}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),n(t,[{key:"popup_redirect_uri",get:function(){return this._popup_redirect_uri}},{key:"popup_post_logout_redirect_uri",get:function(){return this._popup_post_logout_redirect_uri}},{key:"popupWindowFeatures",get:function(){return this._popupWindowFeatures}},{key:"popupWindowTarget",get:function(){return this._popupWindowTarget}},{key:"silent_redirect_uri",get:function(){return this._silent_redirect_uri}},{key:"silentRequestTimeout",get:function(){return this._silentRequestTimeout}},{key:"automaticSilentRenew",get:function(){return this._automaticSilentRenew}},{key:"validateSubOnSilentRenew",get:function(){return this._validateSubOnSilentRenew}},{key:"includeIdTokenInSilentRenew",get:function(){return this._includeIdTokenInSilentRenew}},{key:"accessTokenExpiringNotificationTime",get:function(){return this._accessTokenExpiringNotificationTime}},{key:"monitorSession",get:function(){return this._monitorSession}},{key:"monitorAnonymousSession",get:function(){return this._monitorAnonymousSession}},{key:"checkSessionInterval",get:function(){return this._checkSessionInterval}},{key:"stopCheckSessionOnError",get:function(){return this._stopCheckSessionOnError}},{key:"query_status_response_type",get:function(){return this._query_status_response_type}},{key:"revokeAccessTokenOnSignout",get:function(){return this._revokeAccessTokenOnSignout}},{key:"redirectNavigator",get:function(){return this._redirectNavigator}},{key:"popupNavigator",get:function(){return this._popupNavigator}},{key:"iframeNavigator",get:function(){return this._iframeNavigator}},{key:"userStore",get:function(){return this._userStore}}]),t}(i.OidcClientSettings)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RedirectNavigator=void 0;var n=function(){function e(e,t){for(var r=0;r1&&void 0!==arguments[1])||arguments[1];n.Log.debug("UserManagerEvents.load"),e.prototype.load.call(this,t),r&&this._userLoaded.raise(t)},t.prototype.unload=function(){n.Log.debug("UserManagerEvents.unload"),e.prototype.unload.call(this),this._userUnloaded.raise()},t.prototype.addUserLoaded=function(e){this._userLoaded.addHandler(e)},t.prototype.removeUserLoaded=function(e){this._userLoaded.removeHandler(e)},t.prototype.addUserUnloaded=function(e){this._userUnloaded.addHandler(e)},t.prototype.removeUserUnloaded=function(e){this._userUnloaded.removeHandler(e)},t.prototype.addSilentRenewError=function(e){this._silentRenewError.addHandler(e)},t.prototype.removeSilentRenewError=function(e){this._silentRenewError.removeHandler(e)},t.prototype._raiseSilentRenewError=function(e){n.Log.debug("UserManagerEvents._raiseSilentRenewError",e.message),this._silentRenewError.raise(e)},t.prototype.addUserSignedIn=function(e){this._userSignedIn.addHandler(e)},t.prototype.removeUserSignedIn=function(e){this._userSignedIn.removeHandler(e)},t.prototype._raiseUserSignedIn=function(){n.Log.debug("UserManagerEvents._raiseUserSignedIn"),this._userSignedIn.raise()},t.prototype.addUserSignedOut=function(e){this._userSignedOut.addHandler(e)},t.prototype.removeUserSignedOut=function(e){this._userSignedOut.removeHandler(e)},t.prototype._raiseUserSignedOut=function(){n.Log.debug("UserManagerEvents._raiseUserSignedOut"),this._userSignedOut.raise()},t.prototype.addUserSessionChanged=function(e){this._userSessionChanged.addHandler(e)},t.prototype.removeUserSessionChanged=function(e){this._userSessionChanged.removeHandler(e)},t.prototype._raiseUserSessionChanged=function(){n.Log.debug("UserManagerEvents._raiseUserSessionChanged"),this._userSessionChanged.raise()},t}(i.AccessTokenEvents)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Timer=void 0;var n=function(){function e(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.Global.timer,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var s=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,r));return s._timer=n,s._nowFunc=i||function(){return Date.now()/1e3},s}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.init=function(e){e<=0&&(e=1),e=parseInt(e);var t=this.now+e;if(this.expiration===t&&this._timerHandle)i.Log.debug("Timer.init timer "+this._name+" skipping initialization since already initialized for expiration:",this.expiration);else{this.cancel(),i.Log.debug("Timer.init timer "+this._name+" for duration:",e),this._expiration=t;var r=5;e0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");return r in e||(e[r]=[]),e}function s(e,t,n){var i=e;if(e instanceof Comment&&(c(i)&&c(i).length>0))throw new Error("Not implemented: inserting non-empty logical container");if(u(i))throw new Error("Not implemented: moving existing logical children");var a=c(t);if(n0;)e(r,0)}var i=r;i.parentNode.removeChild(i)},t.getLogicalParent=u,t.getLogicalSiblingEnd=function(e){return e[i]||null},t.getLogicalChild=function(e,t){return c(e)[t]},t.isSvgElement=function(e){return"http://www.w3.org/2000/svg"===l(e).namespaceURI},t.getLogicalChildrenArray=c,t.permuteLogicalChildren=function(e,t){var n=c(e);t.forEach((function(e){e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=function e(t){if(t instanceof Element)return t;var n=f(t);if(n)return n.previousSibling;var r=u(t);return r instanceof Element?r.lastChild:e(r)}(e.moveRangeStart)})),t.forEach((function(t){var r=t.moveToBeforeMarker=document.createComment("marker"),o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):d(r,e)})),t.forEach((function(e){for(var t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd,i=r;i;){var a=i.nextSibling;if(n.insertBefore(i,t),i===o)break;i=a}n.removeChild(t)})),t.forEach((function(e){n[e.toSiblingIndex]=e.moveRangeStart}))},t.getClosestDomElement=l},,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(26),n(17);var r=n(27),o=n(7),i={},a=!1;function s(e,t,n){var o=i[e];o||(o=i[e]=new r.BrowserRenderer(e)),o.attachRootComponentToLogicalElement(n,t)}t.attachRootComponentToLogicalElement=s,t.attachRootComponentToElement=function(e,t,n){var r=document.querySelector(e);if(!r)throw new Error("Could not find any element matching selector '"+e+"'.");s(n||0,o.toLogicalElement(r,!0),t)},t.getRendererer=function(e){return i[e]},t.renderBatch=function(e,t){var n=i[e];if(!n)throw new Error("There is no browser renderer with ID "+e+".");for(var r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),u=r.count(o),c=t.referenceFrames(),l=r.values(c),f=t.diffReader,d=0;d0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]>2]}t.monoPlatform={start:function(e){return new Promise((function(t,n){var l,f;s.attachDebuggerHotkey(e),window.Browser={init:function(){}},l=function(){window.Module=function(e,t,n){var l=this,f=e.bootConfig.resources,d=window.Module||{},p=["DEBUGGING ENABLED"];d.print=function(e){return p.indexOf(e)<0&&console.log(e)},d.printErr=function(e){console.error(e),u.showErrorNotification()},d.preRun=d.preRun||[],d.postRun=d.postRun||[],d.preloadPlugins=[];var m,w,_=e.loadResources(f.assembly,(function(e){return"_framework/"+e}),"assembly"),E=e.loadResources(f.pdb||{},(function(e){return"_framework/"+e}),"pdb"),I=e.loadResource("dotnet.wasm","_framework/dotnet.wasm",e.bootConfig.resources.runtime["dotnet.wasm"],"dotnetwasm");if(e.bootConfig.resources.runtime.hasOwnProperty("dotnet.timezones.blat")&&(m=e.loadResource("dotnet.timezones.blat","_framework/dotnet.timezones.blat",e.bootConfig.resources.runtime["dotnet.timezones.blat"],"globalization")),e.bootConfig.icuDataMode!=c.ICUDataMode.Invariant){var C=e.startOptions.applicationCulture||navigator.languages&&navigator.languages[0],N=function(e,t){if(!t||e.icuDataMode===c.ICUDataMode.All)return"icudt.dat";var n=t.split("-")[0];return["en","fr","it","de","es"].includes(n)?"icudt_EFIGS.dat":["zh","ko","ja"].includes(n)?"icudt_CJK.dat":"icudt_no_CJK.dat"}(e.bootConfig,C);w=e.loadResource(N,"_framework/"+N,e.bootConfig.resources.runtime[N],"globalization")}return d.instantiateWasm=function(e,t){return r(l,void 0,void 0,(function(){var n,r;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,3,,4]),[4,I];case 1:return[4,y(o.sent(),e)];case 2:return n=o.sent(),[3,4];case 3:throw r=o.sent(),d.printErr(r),r;case 4:return t(n),[2]}}))})),[]},d.preRun.push((function(){i=cwrap("mono_wasm_add_assembly",null,["string","number","number"]),MONO.loaded_files=[],m&&function(e){r(this,void 0,void 0,(function(){var t,n;return o(this,(function(r){switch(r.label){case 0:return t="blazor:timezonedata",addRunDependency(t),[4,e.response];case 1:return[4,r.sent().arrayBuffer()];case 2:return n=r.sent(),Module.FS_createPath("/","usr",!0,!0),Module.FS_createPath("/usr/","share",!0,!0),Module.FS_createPath("/usr/share/","zoneinfo",!0,!0),MONO.mono_wasm_load_data_archive(new Uint8Array(n),"/usr/share/zoneinfo/"),removeRunDependency(t),[2]}}))}))}(m),w?function(e){r(this,void 0,void 0,(function(){var t,n,r,i,a;return o(this,(function(o){switch(o.label){case 0:return t="blazor:icudata",addRunDependency(t),[4,e.response];case 1:return n=o.sent(),i=Uint8Array.bind,[4,n.arrayBuffer()];case 2:if(r=new(i.apply(Uint8Array,[void 0,o.sent()])),a=MONO.mono_wasm_load_bytes_into_heap(r),!MONO.mono_wasm_load_icu_data(a))throw new Error("Error loading ICU asset.");return removeRunDependency(t),[2]}}))}))}(w):MONO.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT","1"),_.forEach((function(e){return A(e,b(e.name,".dll"))})),E.forEach((function(e){return A(e,e.name)})),window.Blazor._internal.dotNetCriticalError=function(e){d.printErr(BINDING.conv_string(e)||"(null)")},window.Blazor._internal.getSatelliteAssemblies=function(t){var n=BINDING.mono_array_to_js_array(t),i=e.bootConfig.resources.satelliteResources;if(e.startOptions.applicationCulture||navigator.languages&&navigator.languages[0],i){var a=Promise.all(n.filter((function(e){return i.hasOwnProperty(e)})).map((function(t){return e.loadResources(i[t],(function(e){return"_framework/"+e}),"assembly")})).reduce((function(e,t){return e.concat(t)}),new Array).map((function(e){return r(l,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.response];case 1:return[2,t.sent().arrayBuffer()]}}))}))})));return BINDING.js_to_mono_obj(a.then((function(e){return e.length&&(window.Blazor._internal.readSatelliteAssemblies=function(){for(var t=BINDING.mono_obj_array_new(e.length),n=0;n>1];var n},readInt32Field:function(e,t){return p(e+(t||0))},readUint64Field:function(e,t){return function(e){var t=e>>2,n=Module.HEAPU32[t+1];if(n>f)throw new Error("Cannot read uint64 with high order part "+n+", because the result would exceed Number.MAX_SAFE_INTEGER.");return n*l+Module.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),Module.HEAPF32[n>>2];var n},readObjectField:function(e,t){return p(e+(t||0))},readStringField:function(e,t,n){var r,o=p(e+(t||0));if(0===o)return null;if(n){var i=BINDING.unbox_mono_obj(o);return"boolean"==typeof i?i?"":null:i}return d?void 0===(r=d.stringCache.get(o))&&(r=BINDING.conv_string(o),d.stringCache.set(o,r)):r=BINDING.conv_string(o),r},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return g(),d=new w},invokeWhenHeapUnlocked:function(e){d?d.enqueuePostReleaseAction(e):e()}};var h=document.createElement("a");function m(e){return e+12}function v(e,t,n){var r="["+e+"] "+t+":"+n;return BINDING.bind_static_method(r)}function y(e,t){return r(this,void 0,void 0,(function(){var n,r;return o(this,(function(o){switch(o.label){case 0:if("function"!=typeof WebAssembly.instantiateStreaming)return[3,4];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,WebAssembly.instantiateStreaming(e.response,t)];case 2:return[2,o.sent().instance];case 3:return n=o.sent(),console.info("Streaming compilation failed. Falling back to ArrayBuffer instantiation. ",n),[3,4];case 4:return[4,e.response.then((function(e){return e.arrayBuffer()}))];case 5:return r=o.sent(),[4,WebAssembly.instantiate(r,t)];case 6:return[2,o.sent().instance]}}))}))}function b(e,t){var n=e.lastIndexOf(".");if(n<0)throw new Error("No extension to replace in '"+e+"'");return e.substr(0,n)+t}function g(){if(d)throw new Error("Assertion failed - heap is currently locked")}var w=function(){function e(){this.stringCache=new Map}return e.prototype.enqueuePostReleaseAction=function(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)},e.prototype.release=function(){var e;if(d!==this)throw new Error("Trying to release a lock which isn't current");for(d=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;){this.postReleaseActions.shift()(),g()}},e}()},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,a,s)}}))}),{root:i,rootMargin:o+"px"});a.observe(t),a.observe(n);var s=c(t),u=c(n);function c(e){var t=new MutationObserver((function(){a.unobserve(e),a.observe(e)}));return t.observe(e,{attributes:!0}),t}r[e._id]={intersectionObserver:a,mutationObserverBefore:s,mutationObserverAfter:u}},dispose:function(e){var t=r[e._id];t&&(t.intersectionObserver.disconnect(),t.mutationObserverBefore.disconnect(),t.mutationObserverAfter.disconnect(),e.dispose(),delete r[e._id])}};var r={}},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1].*)$/;function i(e,t){var n=e.currentElement;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){var r=new RegExp(o).exec(n.textContent),i=r&&r.groups&&r.groups.descriptor;if(!i)return;try{var s=function(e){var t=JSON.parse(e),n=t.type;if("server"!==n&&"webassembly"!==n)throw new Error("Invalid component type '"+n+"'.");return t}(i);switch(t){case"webassembly":return function(e,t,n){var r=e.type,o=e.assembly,i=e.typeName,s=e.parameterDefinitions,u=e.parameterValues,c=e.prerenderId;if("webassembly"!==r)return;if(!o)throw new Error("assembly must be defined when using a descriptor.");if(!i)throw new Error("typeName must be defined when using a descriptor.");if(c){var l=a(c,n);if(!l)throw new Error("Could not find an end component comment for '"+t+"'");return{type:r,assembly:o,typeName:i,parameterDefinitions:s&&atob(s),parameterValues:u&&atob(u),start:t,prerenderId:c,end:l}}return{type:r,assembly:o,typeName:i,parameterDefinitions:s&&atob(s),parameterValues:u&&atob(u),start:t}}(s,n,e);case"server":return function(e,t,n){var r=e.type,o=e.descriptor,i=e.sequence,s=e.prerenderId;if("server"!==r)return;if(!o)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===i)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(i))throw new Error("Error parsing the sequence '"+i+"' for component '"+JSON.stringify(e)+"'");if(s){var u=a(s,n);if(!u)throw new Error("Could not find an end component comment for '"+t+"'");return{type:r,sequence:i,descriptor:o,start:t,prerenderId:s,end:u}}return{type:r,sequence:i,descriptor:o,start:t}}(s,n,e)}}catch(e){throw new Error("Found malformed component comment at "+n.textContent)}}}function a(e,t){for(;t.next()&&t.currentElement;){var n=t.currentElement;if(n.nodeType===Node.COMMENT_NODE&&n.textContent){var r=new RegExp(o).exec(n.textContent),i=r&&r[1];if(i)return s(i,e),n}}}function s(e,t){var n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error("Invalid end of component comment: '"+e+"'");var r=n.prerenderId;if(!r)throw new Error("End of component comment must have a value for the prerendered property: '"+e+"'");if(r!==t)throw new Error("End of component comment prerendered property must match the start comment prerender id: '"+t+"', '"+r+"'")}var u=function(){function e(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}return e.prototype.next=function(){return this.currentIndex++,this.currentIndex0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var a=n(3);n(25);var s=n(17),u=n(20),c=n(12),l=n(49),f=n(37),d=n(18),p=n(50),h=n(51),m=n(22),v=n(52),y=n(38),b=!1;function g(e){return r(this,void 0,void 0,(function(){var t,n,f,g,_,E,I,C,N,A,S,O=this;return o(this,(function(D){switch(D.label){case 0:if(b)throw new Error("Blazor has already started.");return b=!0,d.setEventDispatcher((function(e,t){c.getRendererer(e.browserRendererId).eventDelegator.getHandler(e.eventHandlerId)&&u.monoPlatform.invokeWhenHeapUnlocked((function(){return a.DotNet.invokeMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","DispatchEvent",e,JSON.stringify(t))}))})),window.Blazor._internal.invokeJSFromDotNet=w,t=s.setPlatform(u.monoPlatform),window.Blazor.platform=t,window.Blazor._internal.renderBatch=function(e,t){var n=u.monoPlatform.beginHeapLock();try{c.renderBatch(e,new l.SharedMemoryRenderBatch(t))}finally{n.release()}},n=window.Blazor._internal.navigationManager.getBaseURI,f=window.Blazor._internal.navigationManager.getLocationHref,window.Blazor._internal.navigationManager.getUnmarshalledBaseURI=function(){return BINDING.js_string_to_mono_string(n())},window.Blazor._internal.navigationManager.getUnmarshalledLocationHref=function(){return BINDING.js_string_to_mono_string(f())},window.Blazor._internal.navigationManager.listenForNavigationEvents((function(e,t){return r(O,void 0,void 0,(function(){return o(this,(function(n){switch(n.label){case 0:return[4,a.DotNet.invokeMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t)];case 1:return n.sent(),[2]}}))}))})),g=null==e?void 0:e.environment,_=m.BootConfigResult.initAsync(g),E=y.discoverComponents(document,"webassembly"),I=new v.WebAssemblyComponentAttacher(E),window.Blazor._internal.registeredComponents={getRegisteredComponentsCount:function(){return I.getCount()},getId:function(e){return I.getId(e)},getAssembly:function(e){return BINDING.js_string_to_mono_string(I.getAssembly(e))},getTypeName:function(e){return BINDING.js_string_to_mono_string(I.getTypeName(e))},getParameterDefinitions:function(e){return BINDING.js_string_to_mono_string(I.getParameterDefinitions(e)||"")},getParameterValues:function(e){return BINDING.js_string_to_mono_string(I.getParameterValues(e)||"")}},window.Blazor._internal.attachRootComponentToElement=function(e,t,n){var r=I.resolveRegisteredElement(e);r?c.attachRootComponentToLogicalElement(n,r,t):c.attachRootComponentToElement(e,t,n)},[4,_];case 1:return C=D.sent(),[4,Promise.all([p.WebAssemblyResourceLoader.initAsync(C.bootConfig,e||{}),h.WebAssemblyConfigLoader.initAsync(C)])];case 2:N=i.apply(void 0,[D.sent(),1]),A=N[0],D.label=3;case 3:return D.trys.push([3,5,,6]),[4,t.start(A)];case 4:return D.sent(),[3,6];case 5:throw S=D.sent(),new Error("Failed to start platform. Reason: "+S);case 6:return t.callEntryPoint(A.bootConfig.entryAssembly),[2]}}))}))}function w(e,t,n,r){var o=u.monoPlatform.readStringField(e,0),i=u.monoPlatform.readInt32Field(e,4),s=u.monoPlatform.readStringField(e,8),c=u.monoPlatform.readUint64Field(e,20);if(null!==s){var l=u.monoPlatform.readUint64Field(e,12);if(0!==l)return a.DotNet.jsCallDispatcher.beginInvokeJSFromDotNet(l,o,s,i,c),0;var f=a.DotNet.jsCallDispatcher.invokeJSFromDotNet(o,s,i,c);return null===f?0:BINDING.js_string_to_mono_string(f)}var d=a.DotNet.jsCallDispatcher.findJSFunction(o,c).call(null,t,n,r);switch(i){case a.DotNet.JSCallResultType.Default:return d;case a.DotNet.JSCallResultType.JSObjectReference:return a.DotNet.createJSObjectReference(d).__jsObjectId;default:throw new Error("Invalid JS call result type '"+i+"'.")}}window.Blazor.start=g,f.shouldAutoStart()&&g().catch((function(e){"undefined"!=typeof Module&&Module.printErr?Module.printErr(e):console.error(e)}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17),o=function(){function e(e){this.batchAddress=e,this.arrayRangeReader=i,this.arrayBuilderSegmentReader=a,this.diffReader=s,this.editReader=u,this.frameReader=c}return e.prototype.updatedComponents=function(){return r.platform.readStructField(this.batchAddress,0)},e.prototype.referenceFrames=function(){return r.platform.readStructField(this.batchAddress,i.structLength)},e.prototype.disposedComponentIds=function(){return r.platform.readStructField(this.batchAddress,2*i.structLength)},e.prototype.disposedEventHandlerIds=function(){return r.platform.readStructField(this.batchAddress,3*i.structLength)},e.prototype.updatedComponentsEntry=function(e,t){return l(e,t,s.structLength)},e.prototype.referenceFramesEntry=function(e,t){return l(e,t,c.structLength)},e.prototype.disposedComponentIdsEntry=function(e,t){var n=l(e,t,4);return r.platform.readInt32Field(n)},e.prototype.disposedEventHandlerIdsEntry=function(e,t){var n=l(e,t,8);return r.platform.readUint64Field(n)},e}();t.SharedMemoryRenderBatch=o;var i={structLength:8,values:function(e){return r.platform.readObjectField(e,0)},count:function(e){return r.platform.readInt32Field(e,4)}},a={structLength:12,values:function(e){var t=r.platform.readObjectField(e,0),n=r.platform.getObjectFieldsBaseAddress(t);return r.platform.readObjectField(n,0)},offset:function(e){return r.platform.readInt32Field(e,4)},count:function(e){return r.platform.readInt32Field(e,8)}},s={structLength:4+a.structLength,componentId:function(e){return r.platform.readInt32Field(e,0)},edits:function(e){return r.platform.readStructField(e,4)},editsEntry:function(e,t){return l(e,t,u.structLength)}},u={structLength:20,editType:function(e){return r.platform.readInt32Field(e,0)},siblingIndex:function(e){return r.platform.readInt32Field(e,4)},newTreeIndex:function(e){return r.platform.readInt32Field(e,8)},moveToSiblingIndex:function(e){return r.platform.readInt32Field(e,8)},removedAttributeName:function(e){return r.platform.readStringField(e,16)}},c={structLength:36,frameType:function(e){return r.platform.readInt16Field(e,4)},subtreeLength:function(e){return r.platform.readInt32Field(e,8)},elementReferenceCaptureId:function(e){return r.platform.readStringField(e,16)},componentId:function(e){return r.platform.readInt32Field(e,12)},elementName:function(e){return r.platform.readStringField(e,16)},textContent:function(e){return r.platform.readStringField(e,16)},markupContent:function(e){return r.platform.readStringField(e,16)},attributeName:function(e){return r.platform.readStringField(e,16)},attributeValue:function(e){return r.platform.readStringField(e,24,!0)},attributeEventHandlerId:function(e){return r.platform.readUint64Field(e,8)}};function l(e,t,n){return r.platform.getArrayEntryPtr(e,t,n)}},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";var e,t,n;!function(e){window.DotNet=e;const t=[],n=new Map,r=new Map,o="__jsObjectId",s="__byte[]";class a{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const i={},c={0:new a(window)};c[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=document.baseURI+e.substr(2)),import(e))));let l,u=1,d=1,f=null;function m(e){t.push(e)}function h(e){if(e&&"object"==typeof e){c[d]=new a(e);const t={[o]:d};return d++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const n={__jsStreamReferenceLength:t};try{const t=h(e);n.__jsObjectId=t.__jsObjectId}catch{throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return n}function y(e){return e?JSON.parse(e,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null}function g(e,t,n,r){const o=w();if(o.invokeDotNetFromJS){const s=D(r),a=o.invokeDotNetFromJS(e,t,n,s);return a?y(a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeMethodAsync instead.")}function b(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=u++,s=new Promise(((e,t)=>{i[o]={resolve:e,reject:t}}));try{const s=D(r);w().beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){v(o,!1,e)}return s}function w(){if(null!==f)return f;throw new Error("No .NET call dispatcher has been set.")}function v(e,t,n){if(!i.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=i[e];delete i[e],t?r.resolve(n):r.reject(n)}function E(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){let n=c[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function I(e){delete c[e]}e.attachDispatcher=function(e){f=e},e.attachReviver=m,e.invokeMethod=function(e,t,...n){return g(e,t,null,n)},e.invokeMethodAsync=function(e,t,...n){return b(e,t,null,n)},e.createJSObjectReference=h,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e.__jsObjectId;"number"==typeof t&&I(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference"}(l=e.JSCallResultType||(e.JSCallResultType={})),e.jsCallDispatcher={findJSFunction:_,disposeJSObjectReferenceById:I,invokeJSFromDotNet:(e,t,n,r)=>{const o=S(_(e,r).apply(null,y(t)),n);return null==o?null:D(o)},beginInvokeJSFromDotNet:(e,t,n,r,o)=>{const s=new Promise((e=>{e(_(t,o).apply(null,y(n)))}));e&&s.then((t=>w().endInvokeJSFromDotNet(e,!0,D([e,!0,S(t,r)]))),(t=>w().endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,E(t)]))))},endInvokeDotNetFromJS:(e,t,n)=>{const r=t?y(n):new Error(n);v(parseInt(e),t,r)},receiveByteArray:(e,t)=>{n.set(e,t)},supplyDotNetStream:(e,t)=>{if(r.has(e)){const n=r.get(e);r.delete(e),n.resolve(t)}else{const n=new A;n.resolve(t),r.set(e,n)}}};class N{constructor(e){this._id=e}invokeMethod(e,...t){return g(null,e,this._id,t)}invokeMethodAsync(e,...t){return b(null,e,this._id,t)}dispose(){b(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{__dotNetObject:this._id}}}e.DotNetObject=N,m((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty("__dotNetObject"))return new N(t.__dotNetObject);if(t.hasOwnProperty(o)){const e=t.__jsObjectId,n=c[e];if(n)return n.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(s)){const e=t["__byte[]"],r=n.get(e);if(void 0===r)throw new Error(`Byte array index '${e}' does not exist.`);return n.delete(e),r}if(t.hasOwnProperty("__dotNetStream"))return new C(t.__dotNetStream)}return t}));class C{constructor(e){var t;if(r.has(e))this._streamPromise=null===(t=r.get(e))||void 0===t?void 0:t.streamPromise,r.delete(e);else{const t=new A;r.set(e,t),this._streamPromise=t.streamPromise}}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class A{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function S(e,t){switch(t){case l.Default:return e;case l.JSObjectReference:return h(e);case l.JSStreamReference:return p(e);default:throw new Error(`Invalid JS call result type '${t}'.`)}}let R=0;function D(e){return R=0,JSON.stringify(e,k)}function k(e,t){if(t instanceof N)return t.serializeAsArg();if(t instanceof Uint8Array){f.sendByteArray(R,t);const e={[s]:R};return R++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup"}(n||(n={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const o=new Map,s=new Map,a={createEventArgs:()=>({})},i=[];function c(e){return o.get(e)}function l(e){const t=o.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>o.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}return{value:function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t)?!!t.checked:t.value}}}),u(["copy","cut","paste"],a),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...f(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],a),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","dblclick"],{createEventArgs:e=>f(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...f(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...f(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["toggle"],a);const m=["date","datetime-local","month","time","week"],h=new Map;let p,y,g=0;const b={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++g).toString();h.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),s=new v(o,y[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class v{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const _=new Map;function I(e,t,n){return C(e,t.eventHandlerId,(()=>N(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function N(e){const t=_.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let C=(e,t,n)=>n();const A=B(["abort","blur","change","error","focus","load","loadend","loadstart","mouseenter","mouseleave","progress","reset","scroll","submit","unload","toggle","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),S={submit:!0},R=B(["click","dblclick","mousedown","mousemove","mouseup"]);class D{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++D.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new k(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),s=null,a=!1;const i=A.hasOwnProperty(e);let l=!1;for(;o;){const f=o,m=this.getEventHandlerInfosForElement(f,!1);if(m){const n=m.getHandler(e);if(n&&(u=f,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&R.hasOwnProperty(d)&&u.disabled))){if(!a){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},a=!0}S.hasOwnProperty(t.type)&&t.preventDefault(),I(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},s)}m.stopPropagation(e)&&(l=!0),m.preventDefault(e)&&t.preventDefault()}o=i||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return e.hasOwnProperty(this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new O:null}}D.nextEventDelegatorId=0;class k{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},i.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),this.countByEventName.hasOwnProperty(e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=A.hasOwnProperty(e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(this.infosByEventHandlerId.hasOwnProperty(t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(this.countByEventName.hasOwnProperty(e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class O{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return this.handlers.hasOwnProperty(e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=X("_blazorLogicalChildren"),M=X("_blazorLogicalParent"),T=X("_blazorLogicalEnd");function j(e,t){if(e.childNodes.length>0&&!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");return F in e||(e[F]=[]),e}function L(e,t){const n=document.createComment("!");return P(n,e,t),n}function P(e,t,n){const r=e;if(e instanceof Comment&&z(r)&&z(r).length>0)throw new Error("Not implemented: inserting non-empty logical container");if(H(r))throw new Error("Not implemented: moving existing logical children");const o=z(t);if(n0;)x(n,0)}const r=n;r.parentNode.removeChild(r)}function H(e){return e[M]||null}function $(e,t){return z(e)[t]}function J(e){var t=G(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function z(e){return e[F]}function U(e,t){const n=z(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=V(e.moveRangeStart)})),t.forEach((t=>{const r=t.moveToBeforeMarker=document.createComment("marker"),o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):K(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function W(e){const t=z(H(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function K(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=W(t);n?n.parentNode.insertBefore(e,n):K(e,H(t))}}}function V(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=W(e);if(t)return t.previousSibling;{const t=H(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:V(t)}}function X(e){return"function"==typeof Symbol?Symbol():e}function Y(e){return`_bl_${e}`}e.attachReviver(((e,t)=>t&&"object"==typeof t&&t.hasOwnProperty("__internalId")&&"string"==typeof t.__internalId?function(e){const t=`[${Y(e)}]`;return document.querySelector(t)}(t.__internalId):t));const q="_blazorDeferredValue",Z=document.createElement("template"),Q=document.createElementNS("http://www.w3.org/2000/svg","g"),ee={},te="__internal_",ne="preventDefault_",re="stopPropagation_";class oe{constructor(e){this.rootComponentIds=new Set,this.childComponentLocations={},this.eventDelegator=new D(e),this.eventDelegator.notifyAfterClick((e=>{if(!me)return;if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const t=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;ewe(!1))))},enableNavigationInterception:function(){me=!0},navigateTo:ge,getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href};function ge(e,t,n=!1){const r=Ee(e),o=t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n};!o.forceLoad&&Ie(r)?be(r,!1,o.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,o.replaceHistoryEntry)}function be(e,t,n){de=!0,n?history.replaceState(null,"",e):history.pushState(null,"",e),we(t)}async function we(e){pe&&await pe(location.href,e)}let ve;function Ee(e){return ve=ve||document.createElement("a"),ve.href=e,ve.href}function _e(e,t){return e?e.tagName===t?e:_e(e.parentElement,t):null}function Ie(e){const t=(n=document.baseURI).substr(0,n.lastIndexOf("/")+1);var n;return e.startsWith(t)}const Ne={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e){const t=document.querySelector(e);t&&(t.hasAttribute("tabindex")||(t.tabIndex=-1),t.focus())}},Ce={init:function(e,t,n,r=50){const o=Se(t);(o||document.documentElement).style.overflowAnchor="none";const s=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;const s=t.getBoundingClientRect(),a=n.getBoundingClientRect().top-s.bottom,i=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,a,i):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,a,i)}))}),{root:o,rootMargin:`${r}px`});s.observe(t),s.observe(n);const a=c(t),i=c(n);function c(e){const t=new MutationObserver((()=>{s.unobserve(e),s.observe(e)}));return t.observe(e,{attributes:!0}),t}Ae[e._id]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:i}},dispose:function(e){const t=Ae[e._id];t&&(t.intersectionObserver.disconnect(),t.mutationObserverBefore.disconnect(),t.mutationObserverAfter.disconnect(),e.dispose(),delete Ae[e._id])}},Ae={};function Se(e){return e?"visible"!==getComputedStyle(e).overflowY?e:Se(e.parentElement):null}const Re={getAndRemoveExistingTitle:function(){var e;const t=document.getElementsByTagName("title");if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==H(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},De={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=ke(e,t),a=await new Promise((function(e){const t=new Image;t.onload=function(){e(t)},t.src=URL.createObjectURL(s.blob)})),i=await new Promise((function(e){var t;const s=Math.min(1,r/a.width),i=Math.min(1,o/a.height),c=Math.min(s,i),l=document.createElement("canvas");l.width=Math.round(a.width*c),l.height=Math.round(a.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(a,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==i?void 0:i.size)||0,contentType:n,blob:i||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return ke(e,t).blob}};function ke(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed.`);return n}const Oe=new Map,Be={navigateTo:ge,registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(o.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),i.forEach((n=>n(e,t.browserEventName)))}o.set(e,t)},rootComponents:b,_internal:{navigationManager:ye,domWrapper:Ne,Virtualize:Ce,PageTitle:Re,InputFile:De,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},receiveDotNetDataStream:function(t,n,r,o){let s=Oe.get(t);if(!s){const n=new ReadableStream({start(e){Oe.set(t,e),s=e}});e.jsCallDispatcher.supplyDotNetStream(t,n)}o?(s.error(o),Oe.delete(t)):0===r?(s.close(),Oe.delete(t)):s.enqueue(n.length===r?n:n.subarray(0,r))},attachWebRendererInterop:function(t,n,r,o){if(_.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);_.set(t,n),Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,y=n;for(const[t,o]of Object.entries(r)){const r=e.jsCallDispatcher.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(N(t),r,o)}}};let Fe;function Me(e){return Fe=e,Fe}window.Blazor=Be;const Te=window.chrome&&navigator.userAgent.indexOf("Edge")<0;let je=!1,Le=!1;function Pe(){return(je||Le)&&Te}let xe=!1;async function He(e=""){let t=document.querySelector("#blazor-error-ui");t&&(t.style.display="block",e&&t.firstChild&&(t.firstChild.textContent=`\n\t${e}\t\n`)),xe||(xe=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class $e{constructor(e,t){this.bootConfig=e,this.applicationEnvironment=t}static async initAsync(e,t){const n=void 0!==e?e("manifest","blazor.boot.json","_framework/blazor.boot.json",""):a("_framework/blazor.boot.json"),r=n instanceof Promise?await n:await a(null!=n?n:"_framework/blazor.boot.json"),o=t||r.headers.get("Blazor-Environment")||"Production",s=await r.json();return s.modifiableAssemblies=r.headers.get("DOTNET-MODIFIABLE-ASSEMBLIES"),new $e(s,o);async function a(e){return fetch(e,{method:"GET",credentials:"include",cache:"no-cache"})}}}var Je;let ze;!function(e){e[e.Sharded=0]="Sharded",e[e.All=1]="All",e[e.Invariant=2]="Invariant"}(Je||(Je={}));const Ue=Math.pow(2,32),Ge=Math.pow(2,21)-1;let We=null;function Ke(e){return Module.HEAP32[e>>2]}const Ve={start:function(t){return new Promise(((n,r)=>{(function(e){je=!!e.bootConfig.resources.pdb,Le=e.bootConfig.debugBuild;const t=navigator.platform.match(/^Mac/i)?"Cmd":"Alt";Pe()&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(e=>{e.shiftKey&&(e.metaKey||e.altKey)&&"KeyD"===e.code&&(Le||je?Te?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), or Google Chrome, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))})(t),window.Browser={init:()=>{}},function(o){const s=document.createElement("script");window.__wasmmodulecallback__=()=>{window.Module=function(t,n,r){const o=t.bootConfig.resources,s=window.Module||{},a=["DEBUGGING ENABLED"];s.print=e=>a.indexOf(e)<0&&console.log(e),s.printErr=e=>{console.error(e),He()},s.preRun=s.preRun||[],s.postRun=s.postRun||[],s.preloadPlugins=[];const i="dotnet.wasm",c=t.loadResources(o.assembly,(e=>`_framework/${e}`),"assembly"),l=t.loadResources(o.pdb||{},(e=>`_framework/${e}`),"pdb"),u=t.loadResource(i,"_framework/dotnet.wasm",t.bootConfig.resources.runtime["dotnet.wasm"],"dotnetwasm"),d="dotnet.timezones.blat";let f,m;if(t.bootConfig.resources.runtime.hasOwnProperty(d)&&(f=t.loadResource(d,"_framework/dotnet.timezones.blat",t.bootConfig.resources.runtime["dotnet.timezones.blat"],"globalization")),t.bootConfig.icuDataMode!=Je.Invariant){const e=t.startOptions.applicationCulture||navigator.languages&&navigator.languages[0],n=function(e,t){if(!t||e.icuDataMode===Je.All)return"icudt.dat";const n=t.split("-")[0];return["en","fr","it","de","es"].includes(n)?"icudt_EFIGS.dat":["zh","ko","ja"].includes(n)?"icudt_CJK.dat":"icudt_no_CJK.dat"}(t.bootConfig,e);m=t.loadResource(n,`_framework/${n}`,t.bootConfig.resources.runtime[n],"globalization")}return s.instantiateWasm=(e,t)=>((async()=>{let n;try{const t=await u;n=await async function(e,t){if("function"==typeof WebAssembly.instantiateStreaming)try{return(await WebAssembly.instantiateStreaming(e.response,t)).instance}catch(e){console.info("Streaming compilation failed. Falling back to ArrayBuffer instantiation. ",e)}const n=await e.response.then((e=>e.arrayBuffer()));return(await WebAssembly.instantiate(n,t)).instance}(t,e)}catch(e){throw s.printErr(e),e}t(n)})(),[]),s.onRuntimeInitialized=()=>{m||MONO.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT","1")},s.preRun.push((()=>{ze=cwrap("mono_wasm_add_assembly",null,["string","number","number"]),MONO.loaded_files=[],f&&async function(e){const t="blazor:timezonedata";addRunDependency(t);const n=await e.response,r=await n.arrayBuffer();Module.FS_createPath("/","usr",!0,!0),Module.FS_createPath("/usr/","share",!0,!0),Module.FS_createPath("/usr/share/","zoneinfo",!0,!0),MONO.mono_wasm_load_data_archive(new Uint8Array(r),"/usr/share/zoneinfo/"),removeRunDependency(t)}(f),m&&async function(e){const t="blazor:icudata";addRunDependency(t);const n=await e.response,r=new Uint8Array(await n.arrayBuffer()),o=MONO.mono_wasm_load_bytes_into_heap(r);if(!MONO.mono_wasm_load_icu_data(o))throw new Error("Error loading ICU asset.");removeRunDependency(t)}(m),c.forEach((e=>h(e,Qe(e.name,".dll")))),l.forEach((e=>h(e,e.name))),Be._internal.dotNetCriticalError=e=>{s.printErr(BINDING.conv_string(e)||"(null)")},Be._internal.getSatelliteAssemblies=e=>{const n=BINDING.mono_array_to_js_array(e),r=t.bootConfig.resources.satelliteResources;if(t.startOptions.applicationCulture||navigator.languages&&navigator.languages[0],r){const e=Promise.all(n.filter((e=>r.hasOwnProperty(e))).map((e=>t.loadResources(r[e],(e=>`_framework/${e}`),"assembly"))).reduce(((e,t)=>e.concat(t)),new Array).map((async e=>(await e.response).arrayBuffer())));return BINDING.js_to_mono_obj(e.then((e=>(e.length&&(Be._internal.readSatelliteAssemblies=()=>{const t=BINDING.mono_obj_array_new(e.length);for(var n=0;n{const r=BINDING.mono_array_to_js_array(n),o=t.bootConfig.resources.lazyAssembly;if(!o)throw new Error("No assemblies have been marked as lazy-loadable. Use the 'BlazorWebAssemblyLazyLoad' item group in your project file to enable lazy loading an assembly.");var s=r.filter((e=>o.hasOwnProperty(e)));if(s.length!=r.length){var a=r.filter((e=>!s.includes(e)));throw new Error(`${a.join()} must be marked with 'BlazorWebAssemblyLazyLoad' item group in your project file to allow lazy-loading.`)}let i;if(Pe()){const e=t.bootConfig.resources.pdb,n=s.map((e=>Qe(e,".pdb")));e&&(i=Promise.all(n.map((e=>o.hasOwnProperty(e)?t.loadResource(e,`_framework/${e}`,o[e],"pdb"):null)).map((async e=>e?(await e.response).arrayBuffer():null))))}const c=Promise.all(s.map((e=>t.loadResource(e,`_framework/${e}`,o[e],"assembly"))).map((async e=>(await e.response).arrayBuffer())));return BINDING.js_to_mono_obj(Promise.all([c,i]).then((t=>(e.assemblies=t[0],e.pdbs=t[1],e.assemblies.length&&(Be._internal.readLazyAssemblies=()=>{const{assemblies:t}=e;if(!t)return BINDING.mono_obj_array_new(0);const n=BINDING.mono_obj_array_new(t.length);for(let e=0;e{const{assemblies:t,pdbs:n}=e;if(!t)return BINDING.mono_obj_array_new(0);const r=BINDING.mono_obj_array_new(t.length);for(let e=0;e{t.bootConfig.debugBuild&&t.bootConfig.cacheBootResources&&t.logToConsole(),t.purgeUnusedCacheEntriesAsync(),t.bootConfig.icuDataMode===Je.Sharded&&(MONO.mono_wasm_setenv("__BLAZOR_SHARDED_ICU","1"),t.startOptions.applicationCulture&&MONO.mono_wasm_setenv("LANG",`${t.startOptions.applicationCulture}.UTF-8`));let r="UTC";try{r=Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}MONO.mono_wasm_setenv("TZ",r||"UTC"),t.bootConfig.modifiableAssemblies&&MONO.mono_wasm_setenv("DOTNET_MODIFIABLE_ASSEMBLIES",t.bootConfig.modifiableAssemblies),cwrap("mono_wasm_load_runtime",null,["string","number"])("appBinDir",Pe()?-1:0),MONO.mono_wasm_runtime_ready(),function(){const t=qe("Microsoft.AspNetCore.Components.WebAssembly","Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime","InvokeDotNet"),n=qe("Microsoft.AspNetCore.Components.WebAssembly","Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime","BeginInvokeDotNet"),r=qe("Microsoft.AspNetCore.Components.WebAssembly","Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime","EndInvokeJS"),o=qe("Microsoft.AspNetCore.Components.WebAssembly","Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime","NotifyByteArrayAvailable");e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,r,o,s)=>{if(et(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const a=o?o.toString():t;n(e?e.toString():null,a,r,s)},endInvokeJSFromDotNet:(e,t,n)=>{r(n)},sendByteArray:(e,t)=>{Ze=t,o(e)},invokeDotNetFromJS:(e,n,r,o)=>(et(),t(e||null,n,r?r.toString():null,o))})}(),n()})),s;async function h(e,t){const n=`blazor:${e.name}`;addRunDependency(n);try{const n=await e.response.then((e=>e.arrayBuffer())),r=new Uint8Array(n),s=Module._malloc(r.length);new Uint8Array(Module.HEAPU8.buffer,s,r.length).set(r),ze(t,s,r.length),MONO.loaded_files.push((o=e.url,Xe.href=o,Xe.href))}catch(e){return void r(e)}var o;removeRunDependency(n)}}(t,n,r),function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");const t=Object.keys(e.bootConfig.resources.runtime).filter((e=>e.startsWith("dotnet.")&&e.endsWith(".js")))[0],n=e.bootConfig.resources.runtime[t],r=document.createElement("script");if(r.src=`_framework/${t}`,r.defer=!0,e.bootConfig.cacheBootResources&&(r.integrity=n,r.crossOrigin="anonymous"),e.startOptions.loadBootResource){const o="dotnetjs",s=e.startOptions.loadBootResource(o,t,r.src,n);if("string"==typeof s)r.src=s;else if(s)throw new Error(`For a ${o} resource, custom loaders must supply a URI string.`)}document.body.appendChild(r)}(t)},s.text="var Module; window.__wasmmodulecallback__(); delete window.__wasmmodulecallback__;",document.body.appendChild(s)}()}))},callEntryPoint:async function(e){const t=[[]];try{await BINDING.call_assembly_entry_point(e,t,"m")}catch(e){console.error(e),He()}},toUint8Array:function(e){const t=Ye(e),n=Ke(t),r=new Uint8Array(n);return r.set(Module.HEAPU8.subarray(t+4,t+4+n)),r},getArrayLength:function(e){return Ke(Ye(e))},getArrayEntryPtr:function(e,t,n){return Ye(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),Module.HEAP16[n>>1];var n},readInt32Field:function(e,t){return Ke(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=Module.HEAPU32[t+1];if(n>Ge)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Ue+Module.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),Module.HEAPF32[n>>2];var n},readObjectField:function(e,t){return Ke(e+(t||0))},readStringField:function(e,t,n){const r=Ke(e+(t||0));if(0===r)return null;if(n){const e=BINDING.unbox_mono_obj(r);return"boolean"==typeof e?e?"":null:e}let o;return We?(o=We.stringCache.get(r),void 0===o&&(o=BINDING.conv_string(r),We.stringCache.set(r,o))):o=BINDING.conv_string(r),o},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return et(),We=new tt,We},invokeWhenHeapUnlocked:function(e){We?We.enqueuePostReleaseAction(e):e()}},Xe=document.createElement("a");function Ye(e){return e+12}function qe(e,t,n){const r=`[${e}] ${t}:${n}`;return BINDING.bind_static_method(r)}let Ze=null;function Qe(e,t){const n=e.lastIndexOf(".");if(n<0)throw new Error(`No extension to replace in '${e}'`);return e.substr(0,n)+t}function et(){if(We)throw new Error("Assertion failed - heap is currently locked")}class tt{constructor(){this.stringCache=new Map}enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(We!==this)throw new Error("Trying to release a lock which isn't current");for(We=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),et()}}class nt{constructor(e){this.batchAddress=e,this.arrayRangeReader=rt,this.arrayBuilderSegmentReader=ot,this.diffReader=st,this.editReader=at,this.frameReader=it}updatedComponents(){return Fe.readStructField(this.batchAddress,0)}referenceFrames(){return Fe.readStructField(this.batchAddress,rt.structLength)}disposedComponentIds(){return Fe.readStructField(this.batchAddress,2*rt.structLength)}disposedEventHandlerIds(){return Fe.readStructField(this.batchAddress,3*rt.structLength)}updatedComponentsEntry(e,t){return ct(e,t,st.structLength)}referenceFramesEntry(e,t){return ct(e,t,it.structLength)}disposedComponentIdsEntry(e,t){const n=ct(e,t,4);return Fe.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=ct(e,t,8);return Fe.readUint64Field(n)}}const rt={structLength:8,values:e=>Fe.readObjectField(e,0),count:e=>Fe.readInt32Field(e,4)},ot={structLength:12,values:e=>{const t=Fe.readObjectField(e,0),n=Fe.getObjectFieldsBaseAddress(t);return Fe.readObjectField(n,0)},offset:e=>Fe.readInt32Field(e,4),count:e=>Fe.readInt32Field(e,8)},st={structLength:4+ot.structLength,componentId:e=>Fe.readInt32Field(e,0),edits:e=>Fe.readStructField(e,4),editsEntry:(e,t)=>ct(e,t,at.structLength)},at={structLength:20,editType:e=>Fe.readInt32Field(e,0),siblingIndex:e=>Fe.readInt32Field(e,4),newTreeIndex:e=>Fe.readInt32Field(e,8),moveToSiblingIndex:e=>Fe.readInt32Field(e,8),removedAttributeName:e=>Fe.readStringField(e,16)},it={structLength:36,frameType:e=>Fe.readInt16Field(e,4),subtreeLength:e=>Fe.readInt32Field(e,8),elementReferenceCaptureId:e=>Fe.readStringField(e,16),componentId:e=>Fe.readInt32Field(e,12),elementName:e=>Fe.readStringField(e,16),textContent:e=>Fe.readStringField(e,16),markupContent:e=>Fe.readStringField(e,16),attributeName:e=>Fe.readStringField(e,16),attributeValue:e=>Fe.readStringField(e,24,!0),attributeEventHandlerId:e=>Fe.readUint64Field(e,8)};function ct(e,t,n){return Fe.getArrayEntryPtr(e,t,n)}class lt{constructor(e,t,n){this.bootConfig=e,this.cacheIfUsed=t,this.startOptions=n,this.usedCacheKeys={},this.networkLoads={},this.cacheLoads={}}static async initAsync(e,t){const n=await async function(e){if(!e.cacheBootResources||"undefined"==typeof caches)return null;if(!1===window.isSecureContext)return null;const t=`blazor-resources-${document.baseURI.substring(document.location.origin.length)}`;try{return await caches.open(t)||null}catch{return null}}(e);return new lt(e,n,t)}loadResources(e,t,n){return Object.keys(e).map((r=>this.loadResource(r,t(r),e[r],n)))}loadResource(e,t,n,r){return{name:e,url:t,response:this.cacheIfUsed?this.loadResourceWithCaching(this.cacheIfUsed,e,t,n,r):this.loadResourceWithoutCaching(e,t,n,r)}}logToConsole(){const e=Object.values(this.cacheLoads),t=Object.values(this.networkLoads),n=ut(e),r=ut(t),o=n+r;if(0===o)return;const s=this.bootConfig.linkerEnabled?"%c":"\n%cThis application was built with linking (tree shaking) disabled. Published applications will be significantly smaller.";console.groupCollapsed(`%cblazor%c Loaded ${dt(o)} resources${s}`,"background: purple; color: white; padding: 1px 3px; border-radius: 3px;","font-weight: bold;","font-weight: normal;"),e.length&&(console.groupCollapsed(`Loaded ${dt(n)} resources from cache`),console.table(this.cacheLoads),console.groupEnd()),t.length&&(console.groupCollapsed(`Loaded ${dt(r)} resources from network`),console.table(this.networkLoads),console.groupEnd()),console.groupEnd()}async purgeUnusedCacheEntriesAsync(){const e=this.cacheIfUsed;if(e){const t=(await e.keys()).map((async t=>{t.url in this.usedCacheKeys||await e.delete(t)}));await Promise.all(t)}}async loadResourceWithCaching(e,t,n,r,o){if(!r||0===r.length)throw new Error("Content hash is required");const s=Ee(`${n}.${r}`);let a;this.usedCacheKeys[s]=!0;try{a=await e.match(s)}catch{}if(a){const e=parseInt(a.headers.get("content-length")||"0");return this.cacheLoads[t]={responseBytes:e},a}{const a=await this.loadResourceWithoutCaching(t,n,r,o);return this.addToCacheAsync(e,t,s,a),a}}loadResourceWithoutCaching(e,t,n,r){if(this.startOptions.loadBootResource){const o=this.startOptions.loadBootResource(r,e,t,n);if(o instanceof Promise)return o;"string"==typeof o&&(t=o)}return fetch(t,{cache:"no-cache",integrity:this.bootConfig.cacheBootResources?n:void 0})}async addToCacheAsync(e,t,n,r){const o=await r.clone().arrayBuffer(),s=function(e){if("undefined"!=typeof performance)return performance.getEntriesByName(e)[0]}(r.url),a=s&&s.encodedBodySize||void 0;this.networkLoads[t]={responseBytes:a};const i=new Response(o,{headers:{"content-type":r.headers.get("content-type")||"","content-length":(a||r.headers.get("content-length")||"").toString()}});try{await e.put(n,i)}catch{}}}function ut(e){return e.reduce(((e,t)=>e+(t.responseBytes||0)),0)}function dt(e){return`${(e/1048576).toFixed(2)} MB`}class ft{static async initAsync(e){Be._internal.getApplicationEnvironment=()=>BINDING.js_string_to_mono_string(e.applicationEnvironment);const t=await Promise.all((e.bootConfig.config||[]).filter((t=>"appsettings.json"===t||t===`appsettings.${e.applicationEnvironment}.json`)).map((async e=>({name:e,content:await n(e)}))));async function n(e){const t=await fetch(e,{method:"GET",credentials:"include",cache:"no-cache"});return new Uint8Array(await t.arrayBuffer())}Be._internal.getConfig=e=>{const n=BINDING.conv_string(e),r=t.find((e=>e.name===n));return r?BINDING.js_typed_array_to_array(r.content):void 0}}}class mt{constructor(e){this.preregisteredComponents=e;const t={};for(let n=0;no.push(e))),e[M]=r,t&&(e[T]=t,j(t)),j(e)}(this.componentsById[t].start,this.componentsById[t].end)}getParameterValues(e){return this.componentsById[e].parameterValues}getParameterDefinitions(e){return this.componentsById[e].parameterDefinitions}getTypeName(e){return this.componentsById[e].typeName}getAssembly(e){return this.componentsById[e].assembly}getId(e){return this.preregisteredComponents[e].id}getCount(){return this.preregisteredComponents.length}}const ht=/^\s*Blazor-Component-State:(?[a-zA-Z0-9\+\/=]+)$/;function pt(e){var t;if(e.nodeType===Node.COMMENT_NODE){const n=e.textContent||"",r=ht.exec(n),o=r&&r.groups&&r.groups.state;return o&&(null===(t=e.parentNode)||void 0===t||t.removeChild(e)),o}if(!e.hasChildNodes())return;const n=e.childNodes;for(let e=0;e.*)$/);function bt(e,t){const n=e.currentElement;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const r=gt.exec(n.textContent),o=r&&r.groups&&r.groups.descriptor;if(!o)return;try{const r=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(o);switch(t){case"webassembly":return function(e,t,n){const{type:r,assembly:o,typeName:s,parameterDefinitions:a,parameterValues:i,prerenderId:c}=e;if("webassembly"===r){if(!o)throw new Error("assembly must be defined when using a descriptor.");if(!s)throw new Error("typeName must be defined when using a descriptor.");if(c){const e=wt(c,n);if(!e)throw new Error(`Could not find an end component comment for '${t}'`);return{type:r,assembly:o,typeName:s,parameterDefinitions:a&&atob(a),parameterValues:i&&atob(i),start:t,prerenderId:c,end:e}}return{type:r,assembly:o,typeName:s,parameterDefinitions:a&&atob(a),parameterValues:i&&atob(i),start:t}}}(r,n,e);case"server":return function(e,t,n){const{type:r,descriptor:o,sequence:s,prerenderId:a}=e;if("server"===r){if(!o)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===s)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(s))throw new Error(`Error parsing the sequence '${s}' for component '${JSON.stringify(e)}'`);if(a){const e=wt(a,n);if(!e)throw new Error(`Could not find an end component comment for '${t}'`);return{type:r,sequence:s,descriptor:o,start:t,prerenderId:a,end:e}}return{type:r,sequence:s,descriptor:o,start:t}}}(r,n,e)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}function wt(e,t){for(;t.next()&&t.currentElement;){const n=t.currentElement;if(n.nodeType!==Node.COMMENT_NODE)continue;if(!n.textContent)continue;const r=gt.exec(n.textContent),o=r&&r[1];if(o)return vt(o,e),n}}function vt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class Et{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndexasync function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0===o)return;const{beforeStart:s,afterStarted:a}=o;return a&&e.afterStartedCallbacks.push(a),s?s(...t):void 0}(this,e))))}async invokeAfterStartedCallbacks(e){await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Nt=!1;async function Ct(t){if(Nt)throw new Error("Blazor has already started.");Nt=!0,C=(e,t,n)=>{(function(e){return ue[e]})(e).eventDelegator.getHandler(t)&&Ve.invokeWhenHeapUnlocked(n)},Be._internal.applyHotReload=(t,n,r)=>{e.invokeMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",t,n,r)},Be._internal.getApplyUpdateCapabilities=()=>e.invokeMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),Be._internal.invokeJSFromDotNet=At,Be._internal.endInvokeDotNetFromJS=St,Be._internal.receiveByteArray=Rt,Be._internal.retrieveByteArray=Dt;const n=Me(Ve);Be.platform=n,Be._internal.renderBatch=(e,t)=>{const n=Ve.beginHeapLock();try{!function(e,t){const n=ue[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),a=r.count(o),i=t.referenceFrames(),c=r.values(i),l=t.diffReader;for(let e=0;eBINDING.js_string_to_mono_string(r()),Be._internal.navigationManager.getUnmarshalledLocationHref=()=>BINDING.js_string_to_mono_string(o()),Be._internal.navigationManager.listenForNavigationEvents((async(t,n)=>{await e.invokeMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",t,n)}));const s=null!=t?t:{},a=s.environment,i=$e.initAsync(s.loadBootResource,a),c=function(e,t){return function(e){const t=yt(e,"webassembly"),n=[];for(let e=0;ee.id-t.id))}(e)}(document),l=new mt(c);Be._internal.registeredComponents={getRegisteredComponentsCount:()=>l.getCount(),getId:e=>l.getId(e),getAssembly:e=>BINDING.js_string_to_mono_string(l.getAssembly(e)),getTypeName:e=>BINDING.js_string_to_mono_string(l.getTypeName(e)),getParameterDefinitions:e=>BINDING.js_string_to_mono_string(l.getParameterDefinitions(e)||""),getParameterValues:e=>BINDING.js_string_to_mono_string(l.getParameterValues(e)||"")},Be._internal.getPersistedState=()=>BINDING.js_string_to_mono_string(pt(document)||""),Be._internal.attachRootComponentToElement=(e,t,n)=>{const r=l.resolveRegisteredElement(e);r?fe(n,r,t,!1):function(e,t,n){const r="::after";let o=!1;if(e.endsWith(r))e=e.slice(0,-r.length),o=!0;else if(e.endsWith("::before"))throw new Error("The '::before' selector is not supported.");const s=function(e){const t=h.get(e);if(t)return h.delete(e),t}(e)||document.querySelector(e);if(!s)throw new Error(`Could not find any element matching selector '${e}'.`);fe(n||0,j(s,!0),t,o)}(e,t,n)};const u=await i,d=await async function(e,t){const n=e.resources.libraryInitializers,r=new It;return n&&await r.importInitializersAsync(Object.keys(n),[t,e.resources.extensions]),r}(u.bootConfig,s),[f]=await Promise.all([lt.initAsync(u.bootConfig,s||{}),ft.initAsync(u)]);try{await n.start(f)}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}n.callEntryPoint(f.bootConfig.entryAssembly),d.invokeAfterStartedCallbacks(Be)}function At(t,n,r,o){const s=Ve.readStringField(t,0),a=Ve.readInt32Field(t,4),i=Ve.readStringField(t,8),c=Ve.readUint64Field(t,20);if(null!==i){const n=Ve.readUint64Field(t,12);if(0!==n)return e.jsCallDispatcher.beginInvokeJSFromDotNet(n,s,i,a,c),0;{const t=e.jsCallDispatcher.invokeJSFromDotNet(s,i,a,c);return null===t?0:BINDING.js_string_to_mono_string(t)}}{const t=e.jsCallDispatcher.findJSFunction(s,c).call(null,n,r,o);switch(a){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:const n=e.createJSStreamReference(t),r=JSON.stringify(n);return BINDING.js_string_to_mono_string(r);default:throw new Error(`Invalid JS call result type '${a}'.`)}}}function St(t,n,r){const o=BINDING.conv_string(t),s=0!==n,a=BINDING.conv_string(r);e.jsCallDispatcher.endInvokeDotNetFromJS(o,s,a)}function Rt(t,n){const r=t,o=Ve.toUint8Array(n);e.jsCallDispatcher.receiveByteArray(r,o)}function Dt(){if(null===Ze)throw new Error("Byte array not available for transfer");return BINDING.js_typed_array_to_array(Ze)}Be.start=Ct,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ct().catch((e=>{"undefined"!=typeof Module&&Module.printErr?Module.printErr(e):console.error(e)}))})(); diff --git a/src/EventHub.Admin.Web/wwwroot/index.html b/src/EventHub.Admin.Web/wwwroot/index.html index 1b542e5..fb8fb83 100644 --- a/src/EventHub.Admin.Web/wwwroot/index.html +++ b/src/EventHub.Admin.Web/wwwroot/index.html @@ -8,7 +8,7 @@ - + @@ -22,7 +22,7 @@ - + diff --git a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContext.cs b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContext.cs index 65d746c..3a86f73 100644 --- a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContext.cs +++ b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubDbContext.cs @@ -61,10 +61,6 @@ namespace EventHub.EntityFrameworkCore { base.OnModelCreating(builder); - //allows to use DateTime with timezone (by default) - //See: https://www.npgsql.org/efcore/release-notes/6.0.html#opting-out-of-the-new-timestamp-mapping-logic - AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); - builder.ConfigurePermissionManagement(); builder.ConfigureSettingManagement(); builder.ConfigureBackgroundJobs(); diff --git a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubEntityFrameworkCoreModule.cs b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubEntityFrameworkCoreModule.cs index e17fad7..5ccfe62 100644 --- a/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubEntityFrameworkCoreModule.cs +++ b/src/EventHub.EntityFrameworkCore/EntityFrameworkCore/EventHubEntityFrameworkCoreModule.cs @@ -9,6 +9,7 @@ using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.BlobStoring.Database.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.PostgreSql; +using System; namespace EventHub.EntityFrameworkCore { @@ -28,6 +29,10 @@ namespace EventHub.EntityFrameworkCore public override void PreConfigureServices(ServiceConfigurationContext context) { EventHubEfCoreEntityExtensionMappings.Configure(); + + //allows to use DateTime with timezone (by default) + //See: https://www.npgsql.org/efcore/release-notes/6.0.html#opting-out-of-the-new-timestamp-mapping-logic + AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); } public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj b/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj index 11cec43..36acaa8 100644 --- a/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj +++ b/src/EventHub.IdentityServer/EventHub.IdentityServer.csproj @@ -48,6 +48,7 @@ + diff --git a/src/EventHub.IdentityServer/EventHubIdentityServerModule.cs b/src/EventHub.IdentityServer/EventHubIdentityServerModule.cs index 81e8f25..1b86bc0 100644 --- a/src/EventHub.IdentityServer/EventHubIdentityServerModule.cs +++ b/src/EventHub.IdentityServer/EventHubIdentityServerModule.cs @@ -41,6 +41,9 @@ namespace EventHub typeof(AbpCachingStackExchangeRedisModule), typeof(AbpAccountWebIdentityServerModule), typeof(AbpAccountApplicationModule), + //we need to add AbpAccountHttpApiModule temporarily. (https://github.com/volosoft/volo/pull/7925). + //It should be removed with 5.0-beta.2. + typeof(AbpAccountHttpApiModule), typeof(EventHubWebThemeModule), typeof(EventHubEntityFrameworkCoreModule), typeof(AbpAspNetCoreSerilogModule) From 198dd38c5535a34ee77cba4cfe74c7f618469ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 8 Oct 2021 15:54:37 +0300 Subject: [PATCH 037/159] Added private ctor to PaymentRequest --- .../src/Payment.Domain/PaymentRequests/PaymentRequest.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs index 648a24e..5d47f26 100644 --- a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs +++ b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs @@ -22,6 +22,11 @@ namespace Payment.PaymentRequests public bool IsDeleted { get; set; } + private PaymentRequest() + { + + } + public PaymentRequest( Guid id, [CanBeNull] string customerId, From 7ba3b7c6ef626d93174a208b0dc33ad93b5d4e93 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Fri, 8 Oct 2021 16:44:53 +0300 Subject: [PATCH 038/159] Fix EventHub build problem --- src/EventHub.Admin.Web/Pages/EventManagement.razor.cs | 6 +----- .../Pages/OrganizationManagement.razor.cs | 6 +----- src/EventHub.Web/Pages/Events/Edit.cshtml.cs | 7 ++----- src/EventHub.Web/Pages/Events/New.cshtml.cs | 6 +----- src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs | 7 ++----- src/EventHub.Web/Pages/Organizations/New.cshtml.cs | 6 +----- 6 files changed, 8 insertions(+), 30 deletions(-) diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs index 8240e2c..8f2cb29 100644 --- a/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor.cs @@ -159,11 +159,7 @@ namespace EventHub.Admin.Web.Pages await FileEntry.WriteToStreamAsync(stream); stream.Seek(0, SeekOrigin.Begin); - EditingEvent.CoverImageStreamContent = new RemoteStreamContent(stream) - { - ContentType = FileEntry.Type, - FileName = FileEntry.Name - }; + EditingEvent.CoverImageStreamContent = new RemoteStreamContent(stream, fileName: FileEntry.Name, contentType: FileEntry.Type); void SetCoverImageUrl(string contentType, byte[] content) { diff --git a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs index de5936a..7e77881 100644 --- a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs +++ b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor.cs @@ -122,11 +122,7 @@ namespace EventHub.Admin.Web.Pages await FileEntry.WriteToStreamAsync(stream); stream.Seek(0, SeekOrigin.Begin); - EditingOrganization.ProfilePictureStreamContent = new RemoteStreamContent(stream) - { - ContentType = FileEntry.Type, - FileName = FileEntry.Name - }; + EditingOrganization.ProfilePictureStreamContent = new RemoteStreamContent(stream, fileName: FileEntry.Name, contentType: FileEntry.Type); void SetProfileImageUrl(string contentType, byte[] content) { diff --git a/src/EventHub.Web/Pages/Events/Edit.cshtml.cs b/src/EventHub.Web/Pages/Events/Edit.cshtml.cs index 53420dd..a226659 100644 --- a/src/EventHub.Web/Pages/Events/Edit.cshtml.cs +++ b/src/EventHub.Web/Pages/Events/Edit.cshtml.cs @@ -66,11 +66,8 @@ namespace EventHub.Web.Pages.Events if (Event.CoverImageFile != null && Event.CoverImageFile.Length > 0) { await Event.CoverImageFile.CopyToAsync(memoryStream); - updateEventDto.CoverImageStreamContent = new RemoteStreamContent(memoryStream) - { - ContentType = Event.CoverImageFile.ContentType, - FileName = Event.CoverImageFile.FileName, - }; + + updateEventDto.CoverImageStreamContent = new RemoteStreamContent(memoryStream, fileName: Event.CoverImageFile.FileName, contentType: Event.CoverImageFile.ContentType); } await _eventAppService.UpdateAsync(Event.Id, updateEventDto); diff --git a/src/EventHub.Web/Pages/Events/New.cshtml.cs b/src/EventHub.Web/Pages/Events/New.cshtml.cs index 98e2e37..eea9cd9 100644 --- a/src/EventHub.Web/Pages/Events/New.cshtml.cs +++ b/src/EventHub.Web/Pages/Events/New.cshtml.cs @@ -65,11 +65,7 @@ namespace EventHub.Web.Pages.Events { await Event.CoverImageFile.CopyToAsync(memoryStream); - createEventDto.CoverImageStreamContent = new RemoteStreamContent(memoryStream) - { - ContentType = Event.CoverImageFile.ContentType, - FileName = Event.CoverImageFile.FileName - }; + createEventDto.CoverImageStreamContent = new RemoteStreamContent(memoryStream, fileName: Event.CoverImageFile.FileName, contentType: Event.CoverImageFile.ContentType); } var eventDto = await _eventAppService.CreateAsync(createEventDto); diff --git a/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs b/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs index b2f7c36..caaca2c 100644 --- a/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs +++ b/src/EventHub.Web/Pages/Organizations/Edit.cshtml.cs @@ -48,11 +48,8 @@ namespace EventHub.Web.Pages.Organizations if (Organization.ProfilePictureFile != null && Organization.ProfilePictureFile.Length > 0) { await Organization.ProfilePictureFile.CopyToAsync(memoryStream); - updateOrganizationDto.ProfilePictureStreamContent = new RemoteStreamContent(memoryStream) - { - ContentType = Organization.ProfilePictureFile.ContentType, - FileName = Organization.ProfilePictureFile.FileName, - }; + + updateOrganizationDto.ProfilePictureStreamContent = new RemoteStreamContent(memoryStream, fileName: Organization.ProfilePictureFile.FileName, contentType: Organization.ProfilePictureFile.ContentType); } await _organizationAppService.UpdateAsync(Organization.Id, updateOrganizationDto); diff --git a/src/EventHub.Web/Pages/Organizations/New.cshtml.cs b/src/EventHub.Web/Pages/Organizations/New.cshtml.cs index e7edcf6..e3bd8a0 100644 --- a/src/EventHub.Web/Pages/Organizations/New.cshtml.cs +++ b/src/EventHub.Web/Pages/Organizations/New.cshtml.cs @@ -44,11 +44,7 @@ namespace EventHub.Web.Pages.Organizations { await Organization.ProfilePictureFile.CopyToAsync(memoryStream); - createOrganizationDto.ProfilePictureStreamContent = new RemoteStreamContent(memoryStream) - { - ContentType = Organization.ProfilePictureFile.ContentType, - FileName = Organization.ProfilePictureFile.FileName - }; + createOrganizationDto.ProfilePictureStreamContent = new RemoteStreamContent(memoryStream, fileName: Organization.ProfilePictureFile.FileName, contentType: Organization.ProfilePictureFile.ContentType); } await _organizationAppService.CreateAsync(createOrganizationDto); From 566a4797eab8590f0cec0ffcb035a8b6c0fdd85c Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Mon, 11 Oct 2021 18:36:33 +0300 Subject: [PATCH 039/159] fix minor problems and enhance UX --- .../Organizations/IOrganizationAppService.cs | 2 +- .../Organizations/OrganizationDto.cs | 12 + .../EventHubApplicationAutoMapperProfile.cs | 3 +- .../Organizations/OrganizationAppService.cs | 4 +- src/EventHub.Domain/Events/EventUrlHelper.cs | 10 +- .../Organizations/OrganizationManager.cs | 2 + .../Organizations/OrganizationController.cs | 4 +- .../EventHub/Components/Footer/Default.cshtml | 36 +- .../Components/MainNavbar/Default.cshtml | 18 +- .../Themes/EventHub/Layouts/Account.cshtml | 4 +- .../EventHub/Layouts/Application.cshtml | 4 +- .../Themes/EventHub/Layouts/Empty.cshtml | 4 +- .../wwwroot/themes/eventhub/style.css | 548 +++++++++++------- src/EventHub.Web/Pages/Events/Edit.cshtml | 5 +- src/EventHub.Web/Pages/Events/Edit.js | 4 + src/EventHub.Web/Pages/Events/New.cshtml | 7 +- src/EventHub.Web/Pages/Events/New.js | 4 + src/EventHub.Web/Pages/Index.cshtml | 200 +++---- src/EventHub.Web/Pages/Index.js | 52 +- .../Pages/Organizations/Edit.cshtml | 5 +- .../Pages/Organizations/New.cshtml | 2 +- .../Pages/Organizations/New.cshtml.cs | 4 +- .../Pages/Organizations/Profile.cshtml | 2 +- src/EventHub.Web/Pages/User.cshtml | 11 - 24 files changed, 537 insertions(+), 410 deletions(-) create mode 100644 src/EventHub.Application.Contracts/Organizations/OrganizationDto.cs diff --git a/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs b/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs index 55fa1a7..ce98bbb 100644 --- a/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs +++ b/src/EventHub.Application.Contracts/Organizations/IOrganizationAppService.cs @@ -8,7 +8,7 @@ namespace EventHub.Organizations { public interface IOrganizationAppService : IApplicationService { - Task CreateAsync(CreateOrganizationDto input); + Task CreateAsync(CreateOrganizationDto input); Task> GetListAsync(OrganizationListFilterDto input); diff --git a/src/EventHub.Application.Contracts/Organizations/OrganizationDto.cs b/src/EventHub.Application.Contracts/Organizations/OrganizationDto.cs new file mode 100644 index 0000000..21c5684 --- /dev/null +++ b/src/EventHub.Application.Contracts/Organizations/OrganizationDto.cs @@ -0,0 +1,12 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EventHub.Organizations +{ + public class OrganizationDto : EntityDto + { + public string Name { get; set; } + + public string DisplayName { get; set; } + } +} \ No newline at end of file diff --git a/src/EventHub.Application/EventHubApplicationAutoMapperProfile.cs b/src/EventHub.Application/EventHubApplicationAutoMapperProfile.cs index 64e9dc5..72e16f2 100644 --- a/src/EventHub.Application/EventHubApplicationAutoMapperProfile.cs +++ b/src/EventHub.Application/EventHubApplicationAutoMapperProfile.cs @@ -17,7 +17,8 @@ namespace EventHub { CreateMap(); CreateMap(); - + CreateMap(); + CreateMap(); CreateMap(); diff --git a/src/EventHub.Application/Organizations/OrganizationAppService.cs b/src/EventHub.Application/Organizations/OrganizationAppService.cs index f4dc8e7..6628c48 100644 --- a/src/EventHub.Application/Organizations/OrganizationAppService.cs +++ b/src/EventHub.Application/Organizations/OrganizationAppService.cs @@ -38,7 +38,7 @@ namespace EventHub.Organizations } [Authorize] - public async Task CreateAsync(CreateOrganizationDto input) + public async Task CreateAsync(CreateOrganizationDto input) { var organization = await _organizationManager.CreateAsync( CurrentUser.GetId(), @@ -60,6 +60,8 @@ namespace EventHub.Organizations { await SaveProfilePictureAsync(organization.Id, input.ProfilePictureStreamContent); } + + return ObjectMapper.Map(organization); } public async Task> GetListAsync(OrganizationListFilterDto input) diff --git a/src/EventHub.Domain/Events/EventUrlHelper.cs b/src/EventHub.Domain/Events/EventUrlHelper.cs index 0a95a91..031c228 100644 --- a/src/EventHub.Domain/Events/EventUrlHelper.cs +++ b/src/EventHub.Domain/Events/EventUrlHelper.cs @@ -5,21 +5,27 @@ namespace EventHub.Events { internal static class EventUrlHelper { - private static string AllowedUrlChars = "abcdefghijklmnopqrstuvwxyz0123456789"; + private static string AllowedUrlChars = "abcdefghijklmnopqrstuvwxyz0123456789-"; public static string ConvertTitleToUrlPart(string title) { var normalizedTitle = title + .Trim() .Replace(' ', '-') .ToKebabCase() .ToLowerInvariant(); var urlPartBuilder = new StringBuilder(); + char previousChar = ' '; foreach (var c in normalizedTitle) { if (AllowedUrlChars.Contains(c)) { + if (previousChar == '-' && c == '-') + { + continue; + } urlPartBuilder.Append(c); } @@ -27,6 +33,8 @@ namespace EventHub.Events { break; } + + previousChar = c; } return urlPartBuilder.ToString(); diff --git a/src/EventHub.Domain/Organizations/OrganizationManager.cs b/src/EventHub.Domain/Organizations/OrganizationManager.cs index 7ee6c9a..0cb5f9c 100644 --- a/src/EventHub.Domain/Organizations/OrganizationManager.cs +++ b/src/EventHub.Domain/Organizations/OrganizationManager.cs @@ -21,6 +21,8 @@ namespace EventHub.Organizations string displayName, string description) { + name = name.Trim().Replace(' ', '-').ToKebabCase().ToLowerInvariant();; + if (await _organizationRepository.AnyAsync(o => o.Name == name)) { throw new BusinessException(EventHubErrorCodes.OrganizationNameAlreadyExists) diff --git a/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs b/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs index 471657a..8b4a7b4 100644 --- a/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs +++ b/src/EventHub.HttpApi.Host/Controllers/Organizations/OrganizationController.cs @@ -28,9 +28,9 @@ namespace EventHub.Controllers.Organizations } [HttpPost] - public async Task CreateAsync([FromForm] CreateOrganizationDto input) + public async Task CreateAsync([FromForm] CreateOrganizationDto input) { - await _organizationAppService.CreateAsync(input); + return await _organizationAppService.CreateAsync(input); } [HttpGet] diff --git a/src/EventHub.Web.Theme/Themes/EventHub/Components/Footer/Default.cshtml b/src/EventHub.Web.Theme/Themes/EventHub/Components/Footer/Default.cshtml index a528740..ee71f3a 100644 --- a/src/EventHub.Web.Theme/Themes/EventHub/Components/Footer/Default.cshtml +++ b/src/EventHub.Web.Theme/Themes/EventHub/Components/Footer/Default.cshtml @@ -13,7 +13,7 @@ EventHub
                  - +
                  @if (!CurrentUser.IsAuthenticated) { @@ -45,23 +45,23 @@
                  - -