diff --git a/samples/KafkaFlow.Sample.BatchOperations/KafkaFlow.Sample.BatchOperations.csproj b/samples/KafkaFlow.Sample.BatchOperations/KafkaFlow.Sample.BatchOperations.csproj index 970ff0ec6..f51dbe58e 100644 --- a/samples/KafkaFlow.Sample.BatchOperations/KafkaFlow.Sample.BatchOperations.csproj +++ b/samples/KafkaFlow.Sample.BatchOperations/KafkaFlow.Sample.BatchOperations.csproj @@ -17,7 +17,7 @@ - + diff --git a/samples/KafkaFlow.Sample.BatchOperations/Program.cs b/samples/KafkaFlow.Sample.BatchOperations/Program.cs index a47f7a704..1515286ed 100644 --- a/samples/KafkaFlow.Sample.BatchOperations/Program.cs +++ b/samples/KafkaFlow.Sample.BatchOperations/Program.cs @@ -30,7 +30,7 @@ .AddConsumer( consumerBuilder => consumerBuilder .Topic(batchTestTopic) - .WithGroupId("kafka-flow-sample") + .WithGroupId("kafkaflow-sample") .WithBufferSize(10000) .WithWorkersCount(1) .AddMiddlewares( diff --git a/samples/KafkaFlow.Sample.Dashboard/README.md b/samples/KafkaFlow.Sample.Dashboard/README.md index 88ac8c9e7..a5c37c4e1 100644 --- a/samples/KafkaFlow.Sample.Dashboard/README.md +++ b/samples/KafkaFlow.Sample.Dashboard/README.md @@ -27,4 +27,4 @@ Using your terminal of choice, start the sample for the sample folder. dotnet run ``` -The dashboard UI will be available at `/kafka-flow`. +The dashboard UI will be available at `/kafkaflow`. diff --git a/samples/KafkaFlow.Sample.Dashboard/Startup.cs b/samples/KafkaFlow.Sample.Dashboard/Startup.cs index cd7090457..289b2bef6 100644 --- a/samples/KafkaFlow.Sample.Dashboard/Startup.cs +++ b/samples/KafkaFlow.Sample.Dashboard/Startup.cs @@ -20,8 +20,8 @@ public void ConfigureServices(IServiceCollection services) const string topicName = "topic-dashboard"; cluster .WithBrokers(new[] { "localhost:9092" }) - .EnableAdminMessages("kafka-flow.admin", "kafka-flow.admin.group.id") - .EnableTelemetry("kafka-flow.admin", "kafka-flow.telemetry.group.id") + .EnableAdminMessages("kafkaflow.admin", "kafkaflow.admin.group.id") + .EnableTelemetry("kafkaflow.admin", "kafkaflow.telemetry.group.id") .CreateTopicIfNotExists(topicName, 3, 1) .AddConsumer( consumer => diff --git a/samples/KafkaFlow.Sample.FlowControl/KafkaFlow.Sample.FlowControl.csproj b/samples/KafkaFlow.Sample.FlowControl/KafkaFlow.Sample.FlowControl.csproj index c0be1644d..e4a1914e1 100644 --- a/samples/KafkaFlow.Sample.FlowControl/KafkaFlow.Sample.FlowControl.csproj +++ b/samples/KafkaFlow.Sample.FlowControl/KafkaFlow.Sample.FlowControl.csproj @@ -5,7 +5,7 @@ net6.0 false false - 9 + 10 true @@ -18,7 +18,7 @@ - + diff --git a/samples/KafkaFlow.Sample.PauseConsumerOnError/KafkaFlow.Sample.PauseConsumerOnError.csproj b/samples/KafkaFlow.Sample.PauseConsumerOnError/KafkaFlow.Sample.PauseConsumerOnError.csproj index 1520146c4..f6f6d1e42 100644 --- a/samples/KafkaFlow.Sample.PauseConsumerOnError/KafkaFlow.Sample.PauseConsumerOnError.csproj +++ b/samples/KafkaFlow.Sample.PauseConsumerOnError/KafkaFlow.Sample.PauseConsumerOnError.csproj @@ -20,7 +20,7 @@ - + diff --git a/samples/KafkaFlow.Sample.PauseConsumerOnError/PauseConsumerOnExceptionMiddleware.cs b/samples/KafkaFlow.Sample.PauseConsumerOnError/PauseConsumerOnExceptionMiddleware.cs index d78811488..b45b0ec4b 100644 --- a/samples/KafkaFlow.Sample.PauseConsumerOnError/PauseConsumerOnExceptionMiddleware.cs +++ b/samples/KafkaFlow.Sample.PauseConsumerOnError/PauseConsumerOnExceptionMiddleware.cs @@ -21,7 +21,7 @@ public async Task Invoke(IMessageContext context, MiddlewareDelegate next) } catch (Exception exception) { - context.ConsumerContext.ShouldStoreOffset = false; + context.ConsumerContext.AutoMessageCompletion = false; this.logHandler.Error("Error handling message", exception, new { diff --git a/samples/KafkaFlow.Sample.SchemaRegistry/KafkaFlow.Sample.SchemaRegistry.csproj b/samples/KafkaFlow.Sample.SchemaRegistry/KafkaFlow.Sample.SchemaRegistry.csproj index d03e43ef4..220139cdf 100644 --- a/samples/KafkaFlow.Sample.SchemaRegistry/KafkaFlow.Sample.SchemaRegistry.csproj +++ b/samples/KafkaFlow.Sample.SchemaRegistry/KafkaFlow.Sample.SchemaRegistry.csproj @@ -30,7 +30,7 @@ - + diff --git a/samples/KafkaFlow.Sample.WebApi/Program.cs b/samples/KafkaFlow.Sample.WebApi/Program.cs index 62e03129a..d50287655 100644 --- a/samples/KafkaFlow.Sample.WebApi/Program.cs +++ b/samples/KafkaFlow.Sample.WebApi/Program.cs @@ -10,7 +10,7 @@ .AddCluster( cluster => cluster .WithBrokers(new[] { "localhost:9092" }) - .EnableAdminMessages("kafka-flow.admin") + .EnableAdminMessages("kafkaflow.admin") ) ); @@ -19,11 +19,11 @@ c => { c.SwaggerDoc( - "kafka-flow", + "kafkaflow", new OpenApiInfo { Title = "KafkaFlow Admin", - Version = "kafka-flow", + Version = "kafkaflow", }); }) .AddControllers(); @@ -37,7 +37,7 @@ app.UseSwagger(); app.UseSwaggerUI(c => { - c.SwaggerEndpoint("/swagger/kafka-flow/swagger.json", "KafkaFlow Admin"); + c.SwaggerEndpoint("/swagger/kafkaflow/swagger.json", "KafkaFlow Admin"); }); var kafkaBus = app.Services.CreateKafkaBus(); diff --git a/samples/KafkaFlow.Sample/KafkaFlow.Sample.csproj b/samples/KafkaFlow.Sample/KafkaFlow.Sample.csproj index 843c6fea2..1dfe8a114 100644 --- a/samples/KafkaFlow.Sample/KafkaFlow.Sample.csproj +++ b/samples/KafkaFlow.Sample/KafkaFlow.Sample.csproj @@ -30,7 +30,7 @@ - + diff --git a/src/Directory.Build.props b/src/Directory.Build.props index b50a98807..673cb04c4 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,6 +1,6 @@ - 9.0 + 10.0 true true snupkg diff --git a/src/KafkaFlow.Abstractions/Configuration/IConsumerConfigurationBuilder.cs b/src/KafkaFlow.Abstractions/Configuration/IConsumerConfigurationBuilder.cs index 0e85e8654..e20bf6258 100644 --- a/src/KafkaFlow.Abstractions/Configuration/IConsumerConfigurationBuilder.cs +++ b/src/KafkaFlow.Abstractions/Configuration/IConsumerConfigurationBuilder.cs @@ -2,6 +2,7 @@ namespace KafkaFlow.Configuration { using System; using System.Collections.Generic; + using System.Threading.Tasks; /// /// Used to build the consumer configuration @@ -91,6 +92,24 @@ public interface IConsumerConfigurationBuilder /// IConsumerConfigurationBuilder WithWorkersCount(int workersCount); + /// + /// Configures a custom function to dynamically calculate the number of workers. + /// + /// A function that takes a WorkersCountContext object and returns a Task yielding the new workers count + /// The interval that the calculator will be called + /// The IConsumerConfigurationBuilder instance for method chaining + IConsumerConfigurationBuilder WithWorkersCount( + Func> calculator, + TimeSpan evaluationInterval); + + /// + /// Configures a custom function to dynamically calculate the number of workers. + /// By default, this function is called every 5 minutes. + /// + /// A function that takes a WorkersCountContext object and returns a Task yielding the new workers count + /// The IConsumerConfigurationBuilder instance for method chaining + IConsumerConfigurationBuilder WithWorkersCount(Func> calculator); + /// /// Sets how many messages will be buffered for each worker /// @@ -132,16 +151,11 @@ IConsumerConfigurationBuilder WithWorkDistributionStrategy() where T : class, IDistributionStrategy; /// - /// Offsets will be stored after the execution of the handler and middlewares automatically, this is the default behaviour - /// - /// - IConsumerConfigurationBuilder WithAutoStoreOffsets(); - - /// - /// The client should call the + /// Configures the consumer for manual message completion. + /// The client should call the to mark the message processing as finished /// /// - IConsumerConfigurationBuilder WithManualStoreOffsets(); + IConsumerConfigurationBuilder WithManualMessageCompletion(); /// /// No offsets will be stored on Kafka diff --git a/src/KafkaFlow.Abstractions/Configuration/IGlobalEvents.cs b/src/KafkaFlow.Abstractions/Configuration/IGlobalEvents.cs new file mode 100644 index 000000000..e5daf6cbf --- /dev/null +++ b/src/KafkaFlow.Abstractions/Configuration/IGlobalEvents.cs @@ -0,0 +1,23 @@ +namespace KafkaFlow.Configuration +{ + /// + /// Provides access to events fired by the internals of the library + /// + public interface IGlobalEvents + { + /// + /// Gets the message consume started event + /// + IEvent MessageConsumeStarted { get; } + + /// + /// Gets the message consume ended event + /// + IEvent MessageConsumeEnded { get; } + + /// + /// Gets the message produce started event + /// + IEvent MessageProduceStarted { get; } + } +} diff --git a/src/KafkaFlow.Abstractions/Configuration/IKafkaConfigurationBuilder.cs b/src/KafkaFlow.Abstractions/Configuration/IKafkaConfigurationBuilder.cs index a29a6cfdb..865c96ff4 100644 --- a/src/KafkaFlow.Abstractions/Configuration/IKafkaConfigurationBuilder.cs +++ b/src/KafkaFlow.Abstractions/Configuration/IKafkaConfigurationBuilder.cs @@ -1,25 +1,31 @@ -namespace KafkaFlow.Configuration +namespace KafkaFlow.Configuration; + +using System; + +/// +/// A builder to configure KafkaFlow +/// +public interface IKafkaConfigurationBuilder { - using System; + /// + /// Adds a new Cluster + /// + /// A handle to configure the cluster + /// + IKafkaConfigurationBuilder AddCluster(Action cluster); /// - /// A builder to configure KafkaFlow + /// Set the log handler to be used by the Framework, if none is provided the will be used /// - public interface IKafkaConfigurationBuilder - { - /// - /// Adds a new Cluster - /// - /// A handle to configure the cluster - /// - IKafkaConfigurationBuilder AddCluster(Action cluster); + /// A class that implements the interface + /// + IKafkaConfigurationBuilder UseLogHandler() + where TLogHandler : ILogHandler; - /// - /// Set the log handler to be used by the Framework, if none is provided the will be used - /// - /// A class that implements the interface - /// - IKafkaConfigurationBuilder UseLogHandler() - where TLogHandler : ILogHandler; - } + /// + /// Subscribe the global events defined in + /// + /// A handle to subscribe the events + /// + IKafkaConfigurationBuilder SubscribeGlobalEvents(Action observers); } diff --git a/src/KafkaFlow.Abstractions/Configuration/WorkersCountContext.cs b/src/KafkaFlow.Abstractions/Configuration/WorkersCountContext.cs new file mode 100644 index 000000000..a54a4b82f --- /dev/null +++ b/src/KafkaFlow.Abstractions/Configuration/WorkersCountContext.cs @@ -0,0 +1,41 @@ +namespace KafkaFlow.Configuration +{ + using System.Collections.Generic; + + /// + /// A metadata class with some context information help to calculate the number of workers + /// + public class WorkersCountContext + { + /// + /// Initializes a new instance of the class. + /// + /// The consumer's name + /// The consumer's group id + /// The consumer's assigned partition + public WorkersCountContext( + string consumerName, + string consumerGroupId, + IReadOnlyCollection assignedTopicsPartitions) + { + this.ConsumerName = consumerName; + this.ConsumerGroupId = consumerGroupId; + this.AssignedTopicsPartitions = assignedTopicsPartitions; + } + + /// + /// Gets the consumer's name + /// + public string ConsumerName { get; } + + /// + /// Gets the consumer's group id + /// + public string ConsumerGroupId { get; } + + /// + /// Gets the assigned partitions to the consumer + /// + public IReadOnlyCollection AssignedTopicsPartitions { get; } + } +} diff --git a/src/KafkaFlow.Abstractions/Consumers/IWorker.cs b/src/KafkaFlow.Abstractions/Consumers/IWorker.cs new file mode 100644 index 000000000..f54a374ac --- /dev/null +++ b/src/KafkaFlow.Abstractions/Consumers/IWorker.cs @@ -0,0 +1,28 @@ +namespace KafkaFlow +{ + /// + /// Represents the interface of a internal worker + /// + public interface IWorker + { + /// + /// Gets worker's id + /// + int Id { get; } + + /// + /// Gets the subject for worker stopping events where observers can subscribe to receive notifications. + /// + IEvent WorkerStopping { get; } + + /// + /// Gets the subject for worker stopped events where observers can subscribe to receive notifications. + /// + IEvent WorkerStopped { get; } + + /// + /// Gets the subject for worker consumption completed events where observers can subscribe to receive notifications. + /// + IEvent WorkerProcessingEnded { get; } + } +} diff --git a/src/KafkaFlow.Abstractions/Extensions/DependencyConfiguratorExtensions.cs b/src/KafkaFlow.Abstractions/Extensions/DependencyConfiguratorExtensions.cs index 8059be30c..f2021fed2 100644 --- a/src/KafkaFlow.Abstractions/Extensions/DependencyConfiguratorExtensions.cs +++ b/src/KafkaFlow.Abstractions/Extensions/DependencyConfiguratorExtensions.cs @@ -65,6 +65,35 @@ public static IDependencyConfigurator AddSingleton( InstanceLifetime.Singleton); } + /// + /// Registers a scoped type mapping where the returned instance will be given by the provided factory + /// + /// The object that this method was called on + /// Type that will be created + /// + public static IDependencyConfigurator AddScoped(this IDependencyConfigurator configurator) + where TService : class + { + return configurator.Add(InstanceLifetime.Scoped); + } + + /// + /// Registers a scoped type mapping where the returned instance will be given by the provided factory + /// + /// The object that this method was called on + /// A factory to create new instances of the service implementation + /// Type that will be created + /// + public static IDependencyConfigurator AddScoped( + this IDependencyConfigurator configurator, + Func factory) + { + return configurator.Add( + typeof(TService), + factory, + InstanceLifetime.Scoped); + } + /// /// Registers a transient type mapping /// diff --git a/src/KafkaFlow.Abstractions/IConsumerContext.cs b/src/KafkaFlow.Abstractions/IConsumerContext.cs index 76733d147..f07b84042 100644 --- a/src/KafkaFlow.Abstractions/IConsumerContext.cs +++ b/src/KafkaFlow.Abstractions/IConsumerContext.cs @@ -2,6 +2,7 @@ namespace KafkaFlow { using System; using System.Threading; + using System.Threading.Tasks; /// /// Represents the message consumer @@ -38,6 +39,11 @@ public interface IConsumerContext /// long Offset { get; } + /// + /// Gets the object associated with the message + /// + TopicPartitionOffset TopicPartitionOffset { get; } + /// /// Gets the consumer group id from kafka consumer that received the message /// @@ -49,14 +55,43 @@ public interface IConsumerContext DateTime MessageTimestamp { get; } /// - /// Gets or sets a value indicating whether if the framework should store the current offset in the end when auto store offset is used + /// Gets or sets a value indicating whether if the framework should invoke the method after the message has been processed + /// + bool AutoMessageCompletion { get; set; } + + /// + /// Gets or sets a value indicating whether if the message offset must be stored when the message is marked as completed /// bool ShouldStoreOffset { get; set; } /// - /// Store the message offset when manual store option is used + /// Gets an instance of IDependencyResolver which provides methods to resolve dependencies. + /// This instance is tied to the consumer scope, meaning it is capable of resolving dependencies + /// that are scoped to the lifecycle of a single consumer. + /// + IDependencyResolver ConsumerDependencyResolver { get; } + + /// + /// Gets an instance of IDependencyResolver which provides methods to resolve dependencies. + /// This instance is tied to the worker scope, meaning it is capable of resolving dependencies + /// that are scoped to the lifecycle of a single worker. + /// + IDependencyResolver WorkerDependencyResolver { get; } + + /// + /// Gets a Task that completes when the method is invoked, + /// indicating the end of message processing. This allows async operations + /// to wait for the message to be fully processed and its offset stored. + /// + Task Completion { get; } + + /// + /// Signals the completion of message processing and stores the message offset to eventually be committed. + /// After this call, the framework marks the message processing as finished and releases resources associated with the message. + /// By default, this method is automatically invoked when message processing concludes, unless + /// the consumer is configured for manual message completion or the flag is set to false. /// - void StoreOffset(); + void Complete(IMessageContext context); /// /// Get offset watermark data diff --git a/src/KafkaFlow.Abstractions/IDateTimeProvider.cs b/src/KafkaFlow.Abstractions/IDateTimeProvider.cs index 8439703e4..b235eeb4a 100644 --- a/src/KafkaFlow.Abstractions/IDateTimeProvider.cs +++ b/src/KafkaFlow.Abstractions/IDateTimeProvider.cs @@ -7,8 +7,8 @@ namespace KafkaFlow /// public interface IDateTimeProvider { - /// - DateTime Now { get; } + /// + DateTime UtcNow { get; } /// DateTime MinValue { get; } diff --git a/src/KafkaFlow.Abstractions/IEvent.cs b/src/KafkaFlow.Abstractions/IEvent.cs new file mode 100644 index 000000000..f9a055b4f --- /dev/null +++ b/src/KafkaFlow.Abstractions/IEvent.cs @@ -0,0 +1,32 @@ +namespace KafkaFlow +{ + using System; + using System.Threading.Tasks; + + /// + /// Represents an Event to be subscribed. + /// + public interface IEvent + { + /// + /// Subscribes to the event. + /// + /// The handler to be called when the event is fired. + /// Event subscription reference + IEventSubscription Subscribe(Func handler); + } + + /// + /// Represents an Event to be subscribed. + /// + /// The argument expected by the event. + public interface IEvent + { + /// + /// Subscribes to the event. + /// + /// The handler to be called when the event is fired. + /// Event subscription reference + IEventSubscription Subscribe(Func handler); + } +} \ No newline at end of file diff --git a/src/KafkaFlow.Abstractions/IEventSubscription.cs b/src/KafkaFlow.Abstractions/IEventSubscription.cs new file mode 100644 index 000000000..a4e6fccd7 --- /dev/null +++ b/src/KafkaFlow.Abstractions/IEventSubscription.cs @@ -0,0 +1,12 @@ +namespace KafkaFlow; + +/// +/// Represents an Event subscription. +/// +public interface IEventSubscription +{ + /// + /// Cancels the subscription to the event. + /// + void Cancel(); +} diff --git a/src/KafkaFlow.Abstractions/IMessageContext.cs b/src/KafkaFlow.Abstractions/IMessageContext.cs index be95315a3..639b47dbf 100644 --- a/src/KafkaFlow.Abstractions/IMessageContext.cs +++ b/src/KafkaFlow.Abstractions/IMessageContext.cs @@ -1,7 +1,5 @@ namespace KafkaFlow { - using System; - /// /// A context that contains the message and metadata /// @@ -27,6 +25,13 @@ public interface IMessageContext /// IProducerContext ProducerContext { get; } + /// + /// Gets an instance of IDependencyResolver which provides methods to resolve dependencies. + /// This instance is tied to the message scope, meaning it is capable of resolving dependencies + /// that are scoped to the lifecycle of a single processed message. + /// + IDependencyResolver DependencyResolver { get; } + /// /// Creates a new with the new message /// @@ -34,13 +39,5 @@ public interface IMessageContext /// The new message value /// A new message context containing the new values IMessageContext SetMessage(object key, object value); - - /// - /// Deprecated - /// - /// key - /// - [Obsolete("This method should no longer be used, use the " + nameof(SetMessage) + "() instead.", true)] - IMessageContext TransformMessage(object message); } } diff --git a/src/KafkaFlow.Abstractions/IProducerContext.cs b/src/KafkaFlow.Abstractions/IProducerContext.cs index 886e856e4..1f63af400 100644 --- a/src/KafkaFlow.Abstractions/IProducerContext.cs +++ b/src/KafkaFlow.Abstractions/IProducerContext.cs @@ -1,23 +1,29 @@ -namespace KafkaFlow +namespace KafkaFlow; + +/// +/// Some producer metadata +/// +public interface IProducerContext { /// - /// Some producer metadata + /// Gets the topic associated with the message + /// + string Topic { get; } + + /// + /// Gets the partition associated with the message /// - public interface IProducerContext - { - /// - /// Gets the topic associated with the message - /// - string Topic { get; } + int? Partition { get; } - /// - /// Gets the partition associated with the message - /// - int? Partition { get; } + /// + /// Gets the partition offset associated with the message + /// + long? Offset { get; } - /// - /// Gets the partition offset associated with the message - /// - long? Offset { get; } - } + /// + /// Gets an instance of IDependencyResolver which provides methods to resolve dependencies. + /// This instance is tied to the producer scope, meaning it is capable of resolving dependencies + /// that are scoped to the lifecycle of a single producer. + /// + IDependencyResolver DependencyResolver { get; } } diff --git a/src/KafkaFlow.Abstractions/IWorker.cs b/src/KafkaFlow.Abstractions/IWorker.cs deleted file mode 100644 index bc2e086d2..000000000 --- a/src/KafkaFlow.Abstractions/IWorker.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace KafkaFlow -{ - using System; - - /// - /// Represents the interface of a internal worker - /// - public interface IWorker - { - /// - /// Gets worker's id - /// - int Id { get; } - - /// - /// This handler is called immediately after a worker completes the consumption of a message - /// - /// to be executed - void OnTaskCompleted(Action handler); - } -} diff --git a/src/KafkaFlow.Abstractions/MessageEventContext.cs b/src/KafkaFlow.Abstractions/MessageEventContext.cs new file mode 100644 index 000000000..5b85ef51c --- /dev/null +++ b/src/KafkaFlow.Abstractions/MessageEventContext.cs @@ -0,0 +1,41 @@ +namespace KafkaFlow +{ + /// + /// Represents a message context used in the events + /// + public class MessageEventContext + { + private readonly IMessageContext messageContext; + private readonly IDependencyResolver dependencyResolver; + + /// + /// Initializes a new instance of the class. + /// + /// The message context + /// The dependency resolver + public MessageEventContext(IMessageContext messageContext, IDependencyResolver dependencyResolver) + { + this.messageContext = messageContext; + this.dependencyResolver = dependencyResolver; + } + + /// + /// Initializes a new instance of the class. + /// + /// The message context + public MessageEventContext(IMessageContext messageContext) + : this(messageContext, null) + { + } + + /// + /// Gets the message context + /// + public IMessageContext MessageContext => this.messageContext; + + /// + /// Gets the dependency resolver + /// + public IDependencyResolver DependencyResolver => this.dependencyResolver; + } +} diff --git a/src/KafkaFlow.Abstractions/MiddlewareLifetime.cs b/src/KafkaFlow.Abstractions/MiddlewareLifetime.cs index 4a17301ff..0b3f28966 100644 --- a/src/KafkaFlow.Abstractions/MiddlewareLifetime.cs +++ b/src/KafkaFlow.Abstractions/MiddlewareLifetime.cs @@ -6,28 +6,32 @@ namespace KafkaFlow public enum MiddlewareLifetime { /// - /// Specifies that a single instance of the class will be created for the entire application + /// Denotes a single instance of the middleware to be maintained throughout the application's lifecycle. + /// This instance will not be disposed until the application is shut down. /// Singleton, /// - /// Specifies that a new instance of the class will be created for each scope + /// Indicates a new middleware instance is instantiated for each individual message scope, ensuring isolated processing. + /// This instance will be disposed when the message scope ends. /// - Scoped, + Message, /// - /// Specifies that a new instance of the class will be created every time it is requested + /// Signifies a new middleware instance is created every time a request is made, providing the highest level of isolation. + /// This instance will be disposed as soon as it goes out of scope. /// Transient, /// - /// Specifies that a new instance of the class will be created for each Consumer/Producer + /// Specifies a separate middleware instance for each Consumer/Producer, useful for maintaining context within the Consumer/Producer scope. + /// This instance will be disposed when the Consumer/Producer it belongs to is disposed. /// ConsumerOrProducer, /// - /// Specifies that a new instance of the class will be created for each Consumer Worker - /// For producers this setting will behave as + /// Specifies a unique middleware instance for each Consumer Worker. For Producers, this behaves as ConsumerOrProducer. This allows context preservation at a worker level. + /// This instance will be disposed when the Worker it belongs to is disposed. /// Worker, } diff --git a/src/KafkaFlow.Abstractions/TopicPartitionOffset.cs b/src/KafkaFlow.Abstractions/TopicPartitionOffset.cs new file mode 100644 index 000000000..5b17cb138 --- /dev/null +++ b/src/KafkaFlow.Abstractions/TopicPartitionOffset.cs @@ -0,0 +1,36 @@ +namespace KafkaFlow +{ + /// + /// Represents a Kafka topic along with its partition and offset information. + /// + public readonly struct TopicPartitionOffset + { + /// + /// Initializes a new instance of the struct with the specified topic name, partition number, and offset value. + /// + /// The name of the topic. + /// The id of the partition. + /// The offset value. + public TopicPartitionOffset(string topic, int partition, long offset) + { + this.Topic = topic; + this.Partition = partition; + this.Offset = offset; + } + + /// + /// Gets the name of the topic. + /// + public string Topic { get; } + + /// + /// Gets the id of the partition. + /// + public int Partition { get; } + + /// + /// Gets the offset value. + /// + public long Offset { get; } + } +} diff --git a/src/KafkaFlow.Admin.Dashboard/ApplicationBuilderExtensions.cs b/src/KafkaFlow.Admin.Dashboard/ApplicationBuilderExtensions.cs index 0eff65f3f..f525b9a1a 100644 --- a/src/KafkaFlow.Admin.Dashboard/ApplicationBuilderExtensions.cs +++ b/src/KafkaFlow.Admin.Dashboard/ApplicationBuilderExtensions.cs @@ -16,7 +16,7 @@ namespace KafkaFlow.Admin.Dashboard public static class ApplicationBuilderExtensions { /// - /// Enable the KafkaFlow dashboard. The path will be `/kafka-flow` + /// Enable the KafkaFlow dashboard. The path will be `/kafkaflow` /// /// Instance of /// diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/angular.json b/src/KafkaFlow.Admin.Dashboard/ClientApp/angular.json index 8546c530d..e0f737e14 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/angular.json +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/angular.json @@ -29,7 +29,7 @@ "customWebpackConfig": { "path": "./webpack.config.js" }, - "baseHref": "/kafka-flow/", + "baseHref": "/kafkaflow/", "outputPath": "dist", "index": "src/index.html", "main": "src/main.ts", @@ -143,4 +143,4 @@ } }, "defaultProject": "dashboard" -} \ No newline at end of file +} diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/index.html b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/index.html index a83bac539..3d6e39aba 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/index.html +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/index.html @@ -1,16 +1,15 @@ - - - + KafkaFlow - Dashboard - + - + - - + + + \ No newline at end of file diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/main.js b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/main.js index 60bad6258..5516a1654 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/main.js +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/main.js @@ -1,2031 +1 @@ -(self.webpackChunkdashboard=self.webpackChunkdashboard||[]).push([[179],{381:(gr,th,iu)=>{"use strict";function ye(e){return"function"==typeof e}function V(e){const t=e(i=>{Error.call(i),i.stack=(new Error).stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}const qa=V(e=>function(t){e(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((i,r)=>`${r+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t});function dn(e,n){if(e){const t=e.indexOf(n);0<=t&&e.splice(t,1)}}class Ct{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:t}=this;if(t)if(this._parentage=null,Array.isArray(t))for(const o of t)o.remove(this);else t.remove(this);const{initialTeardown:i}=this;if(ye(i))try{i()}catch(o){n=o instanceof qa?o.errors:[o]}const{_finalizers:r}=this;if(r){this._finalizers=null;for(const o of r)try{qt(o)}catch(s){n=n??[],s instanceof qa?n=[...n,...s.errors]:n.push(s)}}if(n)throw new qa(n)}}add(n){var t;if(n&&n!==this)if(this.closed)qt(n);else{if(n instanceof Ct){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(t=this._finalizers)&&void 0!==t?t:[]).push(n)}}_hasParent(n){const{_parentage:t}=this;return t===n||Array.isArray(t)&&t.includes(n)}_addParent(n){const{_parentage:t}=this;this._parentage=Array.isArray(t)?(t.push(n),t):t?[t,n]:n}_removeParent(n){const{_parentage:t}=this;t===n?this._parentage=null:Array.isArray(t)&&dn(t,n)}remove(n){const{_finalizers:t}=this;t&&dn(t,n),n instanceof Ct&&n._removeParent(this)}}Ct.EMPTY=(()=>{const e=new Ct;return e.closed=!0,e})();const we=Ct.EMPTY;function bs(e){return e instanceof Ct||e&&"closed"in e&&ye(e.remove)&&ye(e.add)&&ye(e.unsubscribe)}function qt(e){ye(e)?e():e.unsubscribe()}const Jt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Zi={setTimeout(e,n,...t){const{delegate:i}=Zi;return i?.setTimeout?i.setTimeout(e,n,...t):setTimeout(e,n,...t)},clearTimeout(e){const{delegate:n}=Zi;return(n?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Ja(e){Zi.setTimeout(()=>{const{onUnhandledError:n}=Jt;if(!n)throw e;n(e)})}function Dn(){}const ii=Mo("C",void 0,void 0);function Mo(e,n,t){return{kind:e,value:n,error:t}}let Ci=null;function mr(e){if(Jt.useDeprecatedSynchronousErrorHandling){const n=!Ci;if(n&&(Ci={errorThrown:!1,error:null}),e(),n){const{errorThrown:t,error:i}=Ci;if(Ci=null,t)throw i}}else e()}class No extends Ct{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,bs(n)&&n.add(this)):this.destination=ri}static create(n,t,i){return new vr(n,t,i)}next(n){this.isStopped?Ds(function le(e){return Mo("N",e,void 0)}(n),this):this._next(n)}error(n){this.isStopped?Ds(function nh(e){return Mo("E",void 0,e)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?Ds(ii,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const Za=Function.prototype.bind;function _r(e,n){return Za.call(e,n)}class Wn{constructor(n){this.partialObserver=n}next(n){const{partialObserver:t}=this;if(t.next)try{t.next(n)}catch(i){Zt(i)}}error(n){const{partialObserver:t}=this;if(t.error)try{t.error(n)}catch(i){Zt(i)}else Zt(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(t){Zt(t)}}}class vr extends No{constructor(n,t,i){let r;if(super(),ye(n)||!n)r={next:n??void 0,error:t??void 0,complete:i??void 0};else{let o;this&&Jt.useDeprecatedNextContext?(o=Object.create(n),o.unsubscribe=()=>this.unsubscribe(),r={next:n.next&&_r(n.next,o),error:n.error&&_r(n.error,o),complete:n.complete&&_r(n.complete,o)}):r=n}this.destination=new Wn(r)}}function Zt(e){Jt.useDeprecatedSynchronousErrorHandling?function ru(e){Jt.useDeprecatedSynchronousErrorHandling&&Ci&&(Ci.errorThrown=!0,Ci.error=e)}(e):Ja(e)}function Ds(e,n){const{onStoppedNotification:t}=Jt;t&&Zi.setTimeout(()=>t(e,n))}const ri={closed:!0,next:Dn,error:function ou(e){throw e},complete:Dn},Qa="function"==typeof Symbol&&Symbol.observable||"@@observable";function xn(e){return e}function Cs(e){return 0===e.length?xn:1===e.length?e[0]:function(t){return e.reduce((i,r)=>r(i),t)}}let je=(()=>{class e{constructor(t){t&&(this._subscribe=t)}lift(t){const i=new e;return i.source=this,i.operator=t,i}subscribe(t,i,r){const o=function el(e){return e&&e instanceof No||function oi(e){return e&&ye(e.next)&&ye(e.error)&&ye(e.complete)}(e)&&bs(e)}(t)?t:new vr(t,i,r);return mr(()=>{const{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(t){try{return this._subscribe(t)}catch(i){t.error(i)}}forEach(t,i){return new(i=su(i))((r,o)=>{const s=new vr({next:a=>{try{t(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:r});this.subscribe(s)})}_subscribe(t){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(t)}[Qa](){return this}pipe(...t){return Cs(t)(this)}toPromise(t){return new(t=su(t))((i,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>i(o))})}}return e.create=n=>new e(n),e})();function su(e){var n;return null!==(n=e??Jt.Promise)&&void 0!==n?n:Promise}const ws=V(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let Ue=(()=>{class e extends je{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){const i=new yr(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new ws}next(t){mr(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}})}error(t){mr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;const{observers:i}=this;for(;i.length;)i.shift().error(t)}})}complete(){mr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:t}=this;for(;t.length;)t.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){const{hasError:i,isStopped:r,observers:o}=this;return i||r?we:(this.currentObservers=null,o.push(t),new Ct(()=>{this.currentObservers=null,dn(o,t)}))}_checkFinalizedStatuses(t){const{hasError:i,thrownError:r,isStopped:o}=this;i?t.error(r):o&&t.complete()}asObservable(){const t=new je;return t.source=this,t}}return e.create=(n,t)=>new yr(n,t),e})();class yr extends Ue{constructor(n,t){super(),this.destination=n,this.source=t}next(n){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===i||i.call(t,n)}error(n){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===i||i.call(t,n)}complete(){var n,t;null===(t=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===t||t.call(n)}_subscribe(n){var t,i;return null!==(i=null===(t=this.source)||void 0===t?void 0:t.subscribe(n))&&void 0!==i?i:we}}function z(e){return ye(e?.lift)}function qe(e){return n=>{if(z(n))return n.lift(function(t){try{return e(t,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function ke(e,n,t,i,r){return new Ss(e,n,t,i,r)}class Ss extends No{constructor(n,t,i,r,o,s){super(n),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=t?function(a){try{t(a)}catch(l){n.error(l)}}:super._next,this._error=r?function(a){try{r(a)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:t}=this;super.unsubscribe(),!t&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function ne(e,n){return qe((t,i)=>{let r=0;t.subscribe(ke(i,o=>{i.next(e.call(n,o,r++))}))})}function br(e){return this instanceof br?(this.v=e,this):new br(e)}function Ms(e,n,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=t.apply(e,n||[]),o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(m){i[m]&&(r[m]=function(v){return new Promise(function(y,D){o.push([m,v,y,D])>1||a(m,v)})})}function a(m,v){try{!function l(m){m.value instanceof br?Promise.resolve(m.value.v).then(u,f):p(o[0][2],m)}(i[m](v))}catch(y){p(o[0][3],y)}}function u(m){a("next",m)}function f(m){a("throw",m)}function p(m,v){m(v),o.shift(),o.length&&a(o[0][0],o[0][1])}}function he(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=function Rt(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],i=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(o){t[o]=e[o]&&function(s){return new Promise(function(a,l){!function r(o,s,a,l){Promise.resolve(l).then(function(u){o({value:u,done:a})},s)}(a,l,(s=e[o](s)).done,s.value)})}}}const Ts=e=>e&&"number"==typeof e.length&&"function"!=typeof e;function As(e){return ye(e?.then)}function Ao(e){return ye(e[Qa])}function Ge(e){return Symbol.asyncIterator&&ye(e?.[Symbol.asyncIterator])}function nl(e){return new TypeError(`You provided ${null!==e&&"object"==typeof e?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const Io=function uu(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function Is(e){return ye(e?.[Io])}function Oo(e){return Ms(this,arguments,function*(){const t=e.getReader();try{for(;;){const{value:i,done:r}=yield br(t.read());if(r)return yield br(void 0);yield yield br(i)}}finally{t.releaseLock()}})}function Dr(e){return ye(e?.getReader)}function ut(e){if(e instanceof je)return e;if(null!=e){if(Ao(e))return function ah(e){return new je(n=>{const t=e[Qa]();if(ye(t.subscribe))return t.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(e);if(Ts(e))return function Os(e){return new je(n=>{for(let t=0;t{e.then(t=>{n.closed||(n.next(t),n.complete())},t=>n.error(t)).then(null,Ja)})}(e);if(Ge(e))return Ro(e);if(Is(e))return function ko(e){return new je(n=>{for(const t of e)if(n.next(t),n.closed)return;n.complete()})}(e);if(Dr(e))return function $(e){return Ro(Oo(e))}(e)}throw nl(e)}function Ro(e){return new je(n=>{(function ch(e,n){var t,i,r,o;return function ih(e,n,t,i){return new(t||(t=Promise))(function(o,s){function a(f){try{u(i.next(f))}catch(p){s(p)}}function l(f){try{u(i.throw(f))}catch(p){s(p)}}function u(f){f.done?o(f.value):function r(o){return o instanceof t?o:new t(function(s){s(o)})}(f.value).then(a,l)}u((i=i.apply(e,n||[])).next())})}(this,void 0,void 0,function*(){try{for(t=he(e);!(i=yield t.next()).done;)if(n.next(i.value),n.closed)return}catch(s){r={error:s}}finally{try{i&&!i.done&&(o=t.return)&&(yield o.call(t))}finally{if(r)throw r.error}}n.complete()})})(e,n).catch(t=>n.error(t))})}function wi(e,n,t,i=0,r=!1){const o=n.schedule(function(){t(),r?e.add(this.schedule(null,i)):this.unsubscribe()},i);if(e.add(o),!r)return o}function dt(e,n,t=1/0){return ye(n)?dt((i,r)=>ne((o,s)=>n(i,o,r,s))(ut(e(i,r))),t):("number"==typeof n&&(t=n),qe((i,r)=>function Cn(e,n,t,i,r,o,s,a){const l=[];let u=0,f=0,p=!1;const m=()=>{p&&!l.length&&!u&&n.complete()},v=D=>u{o&&n.next(D),u++;let w=!1;ut(t(D,f++)).subscribe(ke(n,M=>{r?.(M),o?v(M):n.next(M)},()=>{w=!0},void 0,()=>{if(w)try{for(u--;l.length&&uy(M)):y(M)}m()}catch(M){n.error(M)}}))};return e.subscribe(ke(n,v,()=>{p=!0,m()})),()=>{a?.()}}(i,r,e,t)))}function Se(e=1/0){return dt(xn,e)}const Xt=new je(e=>e.complete());function si(e){return e&&ye(e.schedule)}function Ln(e){return e[e.length-1]}function rt(e){return ye(Ln(e))?e.pop():void 0}function en(e){return si(Ln(e))?e.pop():void 0}function Qi(e,n=0){return qe((t,i)=>{t.subscribe(ke(i,r=>wi(i,e,()=>i.next(r),n),()=>wi(i,e,()=>i.complete(),n),r=>wi(i,e,()=>i.error(r),n)))})}function du(e,n=0){return qe((t,i)=>{i.add(e.schedule(()=>t.subscribe(i),n))})}function fu(e,n){if(!e)throw new Error("Iterable cannot be null");return new je(t=>{wi(t,n,()=>{const i=e[Symbol.asyncIterator]();wi(t,n,()=>{i.next().then(r=>{r.done?t.complete():t.next(r.value)})},0,!0)})})}function gt(e,n){return n?function pu(e,n){if(null!=e){if(Ao(e))return function uh(e,n){return ut(e).pipe(du(n),Qi(n))}(e,n);if(Ts(e))return function ft(e,n){return new je(t=>{let i=0;return n.schedule(function(){i===e.length?t.complete():(t.next(e[i++]),t.closed||this.schedule())})})}(e,n);if(As(e))return function dh(e,n){return ut(e).pipe(du(n),Qi(n))}(e,n);if(Ge(e))return fu(e,n);if(Is(e))return function ks(e,n){return new je(t=>{let i;return wi(t,n,()=>{i=e[Io](),wi(t,n,()=>{let r,o;try{({value:r,done:o}=i.next())}catch(s){return void t.error(s)}o?t.complete():t.next(r)},0,!0)}),()=>ye(i?.return)&&i.return()})}(e,n);if(Dr(e))return function hu(e,n){return fu(Oo(e),n)}(e,n)}throw nl(e)}(e,n):ut(e)}function il(e,n,...t){if(!0===n)return void e();if(!1===n)return;const i=new vr({next:()=>{i.unsubscribe(),e()}});return n(...t).subscribe(i)} -/** - * @license Angular v14.2.9 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function $e(e){for(let n in e)if(e[n]===$e)return n;throw Error("Could not find renamed property on target object.")}function rl(e,n){for(const t in n)n.hasOwnProperty(t)&&!e.hasOwnProperty(t)&&(e[t]=n[t])} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Ve(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(Ve).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const n=e.toString();if(null==n)return""+n;const t=n.indexOf("\n");return-1===t?n:n.substring(0,t)}function Rs(e,n){return null==e||""===e?null===n?"":n:null==n||""===n?e:e+" "+n} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const ph=$e({__forward_ref__:$e});function Te(e){return e.__forward_ref__=Te,e.toString=function(){return Ve(this())},e}function te(e){return xs(e)?e():e}function xs(e){return"function"==typeof e&&e.hasOwnProperty(ph)&&e.__forward_ref__===Te} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class P extends Error{constructor(n,t){super(function Ps(e,n){return`NG0${Math.abs(e)}${n?": "+n.trim():""}`} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(n,t)),this.code=n}}function oe(e){return"string"==typeof e?e:null==e?"":String(e)}function Vn(e,n){throw new P(-201,!1)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Sn(e,n){null==e&&function Oe(e,n,t,i){throw new Error(`ASSERTION ERROR: ${e}`+(null==i?"":` [Expected=> ${t} ${i} ${n} <=Actual]`))}(n,e,null,"!=")} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function G(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Me(e){return{providers:e.providers||[],imports:e.imports||[]}}function Vs(e){return mu(e,Jr)||mu(e,sl)}function mu(e,n){return e.hasOwnProperty(n)?e[n]:null}function Hs(e){return e&&(e.hasOwnProperty(ol)||e.hasOwnProperty(_u))?e[ol]:null}const Jr=$e({\u0275prov:$e}),ol=$e({\u0275inj:$e}),sl=$e({ngInjectableDef:$e}),_u=$e({ngInjectorDef:$e}); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */var X=(()=>((X=X||{})[X.Default=0]="Default",X[X.Host=1]="Host",X[X.Self=2]="Self",X[X.SkipSelf=4]="SkipSelf",X[X.Optional=8]="Optional",X))(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let al;function Hn(e){const n=al;return al=e,n}function ll(e,n,t){const i=Vs(e);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:t&X.Optional?null:void 0!==n?n:void Vn(Ve(e))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function Bn(e){return{toString:e}.toString()} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */var tn=(()=>((tn=tn||{})[tn.OnPush=0]="OnPush",tn[tn.Default=1]="Default",tn))(),ai=(()=>{return(e=ai||(ai={}))[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",ai;var e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const We=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),Xi={},Ae=[],jn=$e({\u0275cmp:$e}),ul=$e({\u0275dir:$e}),Fo=$e({\u0275pipe:$e}),vu=$e({\u0275mod:$e}),Mi=$e({\u0275fac:$e}),Po=$e({__NG_ELEMENT_ID__:$e}); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let Bs=0;function et(e){return Bn(()=>{const t=!0===e.standalone,i={},r={type:e.type,providersResolver:null,decls:e.decls,vars:e.vars,factory:null,template:e.template||null,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:i,inputs:null,outputs:null,exportAs:e.exportAs||null,onPush:e.changeDetection===tn.OnPush,directiveDefs:null,pipeDefs:null,standalone:t,dependencies:t&&e.dependencies||null,getStandaloneInjector:null,selectors:e.selectors||Ae,viewQuery:e.viewQuery||null,features:e.features||null,data:e.data||{},encapsulation:e.encapsulation||ai.Emulated,id:"c"+Bs++,styles:e.styles||Ae,_:null,setInput:null,schemas:e.schemas||null,tView:null},o=e.dependencies,s=e.features;return r.inputs=Du(e.inputs,i),r.outputs=Du(e.outputs),s&&s.forEach(a=>a(r)),r.directiveDefs=o?()=>("function"==typeof o?o():o).map(yu).filter(bu):null,r.pipeDefs=o?()=>("function"==typeof o?o():o).map(nn).filter(bu):null,r})}function yu(e){return Re(e)||Ut(e)}function bu(e){return null!==e}function Ne(e){return Bn(()=>({type:e.type,bootstrap:e.bootstrap||Ae,declarations:e.declarations||Ae,imports:e.imports||Ae,exports:e.exports||Ae,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Du(e,n){if(null==e)return Xi;const t={};for(const i in e)if(e.hasOwnProperty(i)){let r=e[i],o=r;Array.isArray(r)&&(o=r[1],r=r[0]),t[r]=i,n&&(n[r]=o)}return t}const H=et;function $t(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function Re(e){return e[jn]||null}function Ut(e){return e[ul]||null}function nn(e){return e[Fo]||null}function En(e,n){const t=e[vu]||null;if(!t&&!0===n)throw new Error(`Type ${Ve(e)} does not have '\u0275mod' property.`);return t} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function hn(e){return Array.isArray(e)&&"object"==typeof e[1]}function qn(e){return Array.isArray(e)&&!0===e[1]}function pl(e){return 0!=(8&e.flags)}function $s(e){return 2==(2&e.flags)}function Us(e){return 1==(1&e.flags)}function Jn(e){return null!==e.template}function Ah(e){return 0!=(256&e[2])} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function Nr(e,n){return e.hasOwnProperty(Mi)?e[Mi]:null} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class Fh{constructor(n,t,i){this.previousValue=n,this.currentValue=t,this.firstChange=i}isFirstChange(){return this.firstChange}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Kt(){return Su}function Su(e){return e.type.prototype.ngOnChanges&&(e.setInput=Gs),Ph}function Ph(){const e=Mu(this),n=e?.current;if(n){const t=e.previous;if(t===Xi)e.previous=n;else for(let i in n)t[i]=n[i];e.current=null,this.ngOnChanges(n)}}function Gs(e,n,t,i){const r=Mu(e)||function Lh(e,n){return e[Eu]=n} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(e,{previous:Xi,current:null}),o=r.current||(r.current={}),s=r.previous,a=this.declaredInputs[t],l=s[a];o[a]=new Fh(l&&l.currentValue,n,s===Xi),e[i]=n}Kt.ngInherit=!0;const Eu="__ngSimpleChanges__";function Mu(e){return e[Eu]||null} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function tt(e){for(;Array.isArray(e);)e=e[0];return e}function Ho(e,n){return tt(n[e])}function xt(e,n){return tt(n[e.index])}function Ks(e,n){return e.data[n]}function io(e,n){return e[n]}function Nn(e,n){const t=n[e];return hn(t)?t:t[0]}function zs(e){return 64==(64&e[2])}function tr(e,n){return null==n?null:e[n]}function Au(e){e[18]=0}function yl(e,n){e[5]+=n;let t=e,i=e[3];for(;null!==i&&(1===n&&1===t[5]||-1===n&&0===t[5]);)i[5]+=n,t=i,i=i[3] -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */}const re={lFrame:Pu(null),bindingsEnabled:!0};function Ou(){return re.bindingsEnabled}function k(){return re.lFrame.lView}function be(){return re.lFrame.tView}function mt(e){return re.lFrame.contextLView=e,e[8]}function _t(e){return re.lFrame.contextLView=null,e}function wt(){let e=Ys();for(;null!==e&&64===e.type;)e=e.parent;return e}function Ys(){return re.lFrame.currentTNode}function ci(e,n){const t=re.lFrame;t.currentTNode=e,t.isParent=n}function bl(){return re.lFrame.isParent}function jo(){re.lFrame.isParent=!1}function rn(){const e=re.lFrame;let n=e.bindingRootIndex;return-1===n&&(n=e.bindingRootIndex=e.tView.bindingStartIndex),n}function Tr(){return re.lFrame.bindingIndex++}function Ii(e){const n=re.lFrame,t=n.bindingIndex;return n.bindingIndex=n.bindingIndex+e,t}function Jh(e,n){const t=re.lFrame;t.bindingIndex=t.bindingRootIndex=e,wl(n)}function wl(e){re.lFrame.currentDirectiveIndex=e}function Sl(){return re.lFrame.currentQueryIndex}function El(e){re.lFrame.currentQueryIndex=e}function Qh(e){const n=e[1];return 2===n.type?n.declTNode:1===n.type?e[6]:null}function xu(e,n,t){if(t&X.SkipSelf){let r=n,o=e;for(;!(r=r.parent,null!==r||t&X.Host||(r=Qh(o),null===r||(o=o[15],10&r.type))););if(null===r)return!1;n=r,e=o}const i=re.lFrame=Fu();return i.currentTNode=n,i.lView=e,!0}function x(e){const n=Fu(),t=e[1];re.lFrame=n,n.currentTNode=t.firstChild,n.lView=e,n.tView=t,n.contextLView=e,n.bindingIndex=t.bindingStartIndex,n.inI18n=!1}function Fu(){const e=re.lFrame,n=null===e?null:e.child;return null===n?Pu(e):n}function Pu(e){const n={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=n),n}function Ml(){const e=re.lFrame;return re.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const Ee=Ml;function ro(){const e=Ml();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function on(){return re.lFrame.selectedIndex}function nr(e){re.lFrame.selectedIndex=e}function st(){const e=re.lFrame;return Ks(e.tView,e.selectedIndex)}function qs(e,n){for(let t=n.directiveStart,i=n.directiveEnd;t=i)break}else n[l]<0&&(e[18]+=65536),(a>11>16&&(3&e[2])===n){e[2]+=2048;try{o.call(a)}finally{}}}else try{o.call(a)}finally{}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class Tn{constructor(n,t,i){this.factory=n,this.resolving=!1,this.canSeeViewProviders=t,this.injectImpl=i}}function Xs(e,n,t){let i=0;for(;in){s=o-1;break}}}for(;o>16}(e),i=n;for(;t>0;)i=i[15],t--;return i} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let Al=!0;function ea(e){const n=Al;return Al=e,n}let cp=0;const hi={};function Go(e,n){const t=Wo(e,n);if(-1!==t)return t;const i=n[1];i.firstCreatePass&&(e.injectorIndex=n.length,Il(i.data,e),Il(n,null),Il(i.blueprint,null));const r=ki(e,n),o=e.injectorIndex;if($u(r)){const s=oo(r),a=so(r,n),l=a[1].data;for(let u=0;u<8;u++)n[o+u]=a[s+u]|l[s+u]}return n[o+8]=r,o}function Il(e,n){e.push(0,0,0,0,0,0,0,0,n)}function Wo(e,n){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===n[e.injectorIndex+8]?-1:e.injectorIndex}function ki(e,n){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let t=0,i=null,r=n;for(;null!==r;){if(i=dy(r),null===i)return-1;if(t++,r=r[15],-1!==i.injectorIndex)return i.injectorIndex|t<<16}return-1}function Ir(e,n,t){!function up(e,n,t){let i;"string"==typeof t?i=t.charCodeAt(0)||0:t.hasOwnProperty(Po)&&(i=t[Po]),null==i&&(i=t[Po]=cp++);const r=255&i;n.data[e+(r>>5)]|=1<=0?255&n:Ri:n}(t);if("function"==typeof o){if(!xu(n,e,i))return i&X.Host?c(r,0,i):d(n,t,i,r);try{const s=o(i);if(null!=s||i&X.Optional)return s;Vn()}finally{Ee()}}else if("number"==typeof o){let s=null,a=Wo(e,n),l=-1,u=i&X.Host?n[16][6]:null;for((-1===a||i&X.SkipSelf)&&(l=-1===a?ki(e,n):n[a+8],-1!==l&&Pe(i,!1)?(s=n[1],a=oo(l),n=so(l,n)):a=-1);-1!==a;){const f=n[1];if(ce(o,a,f.data)){const p=_(a,n,t,s,i,u);if(p!==hi)return p}l=n[a+8],-1!==l&&Pe(i,n[1].data[a+8]===u)&&ce(o,a,n)?(s=f,a=oo(l),n=so(l,n)):a=-1}}return r}function _(e,n,t,i,r,o){const s=n[1],a=s.data[e+8],f=b(a,s,t,null==i?$s(a)&&Al:i!=s&&0!=(3&a.type),r&X.Host&&o===a);return null!==f?N(n,s,f,a):hi}function b(e,n,t,i,r){const o=e.providerIndexes,s=n.data,a=1048575&o,l=e.directiveStart,f=o>>20,m=r?a+f:e.directiveEnd;for(let v=i?a:a+f;v=l&&y.type===t)return v}if(r){const v=s[l];if(v&&Jn(v)&&v.type===t)return l}return null}function N(e,n,t,i){let r=e[t];const o=n.data;if(function rp(e){return e instanceof Tn}(r)){const s=r;s.resolving&& -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function Ls(e,n){const t=n?`. Dependency path: ${n.join(" > ")} > ${e}`:"";throw new P(-200,`Circular dependency in DI detected for ${e}${t}`)}(function _e(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():oe(e)}(o[t]));const a=ea(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?Hn(s.injectImpl):null;xu(e,i,X.Default);try{r=e[t]=s.factory(void 0,o,e,i),n.firstCreatePass&&t>=i.directiveStart&& -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function np(e,n,t){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:o}=n.type.prototype;if(i){const s=Su(n);(t.preOrderHooks||(t.preOrderHooks=[])).push(e,s),(t.preOrderCheckHooks||(t.preOrderCheckHooks=[])).push(e,s)}r&&(t.preOrderHooks||(t.preOrderHooks=[])).push(0-e,r),o&&((t.preOrderHooks||(t.preOrderHooks=[])).push(e,o),(t.preOrderCheckHooks||(t.preOrderCheckHooks=[])).push(e,o))}(t,o[t],n)}finally{null!==l&&Hn(l),ea(a),s.resolving=!1,Ee()}}return r}function ce(e,n,t){return!!(t[n+(e>>5)]&1<{const n=e.prototype.constructor,t=n[Mi]||dp(n),i=Object.prototype;let r=Object.getPrototypeOf(e.prototype).constructor;for(;r&&r!==i;){const o=r[Mi]||dp(r);if(o&&o!==t)return o;r=Object.getPrototypeOf(r)}return o=>new o})}function dp(e){return xs(e)?()=>{const n=dp(te(e));return n&&n()}:Nr(e)}function dy(e){const n=e[1],t=n.type;return 2===t?n.declTNode:1===t?e[6]:null} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const na="__parameters__";function ra(e,n,t){return Bn(()=>{const i=function fp(e){return function(...t){if(e){const i=e(...t);for(const r in i)this[r]=i[r]}}}(n);function r(...o){if(this instanceof r)return i.apply(this,o),this;const s=new r(...o);return a.annotation=s,a;function a(l,u,f){const p=l.hasOwnProperty(na)?l[na]:Object.defineProperty(l,na,{value:[]})[na];for(;p.length<=f;)p.push(null);return(p[f]=p[f]||[]).push(s),l}}return t&&(r.prototype=Object.create(t.prototype)),r.prototype.ngMetadataName=e,r.annotationCls=r,r})} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class q{constructor(n,t){this._desc=n,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof t?this.__NG_ELEMENT_ID__=t:void 0!==t&&(this.\u0275prov=G({token:this,providedIn:t.providedIn||"root",factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Zn(e,n){void 0===n&&(n=e);for(let t=0;tArray.isArray(t)?Or(t,n):n(t))}function hy(e,n,t){n>=e.length?e.push(t):e.splice(n,0,t)}function Uu(e,n){return n>=e.length-1?e.pop():e.splice(n,1)[0]}function Rl(e,n){const t=[];for(let i=0;i=0?e[1|i]=t:(i=~i,function CN(e,n,t,i){let r=e.length;if(r==n)e.push(t,i);else if(1===r)e.push(i,e[0]),e[0]=t;else{for(r--,e.push(e[r-1],e[r]);r>n;)e[r]=e[r-2],r--;e[n]=t,e[n+1]=i}}(e,i,n,t)),i}function pp(e,n){const t=oa(e,n);if(t>=0)return e[1|t]}function oa(e,n){return function my(e,n,t){let i=0,r=e.length>>t;for(;r!==i;){const o=i+(r-i>>1),s=e[o<n?r=o:i=o+1}return~(r<{const s=o;Tp(s,t,[],i)&&(r||(r=[]),r.push(s))}),void 0!==r&&$y(r,t),t}function $y(e,n){for(let t=0;t{n.push(o)})}}function Tp(e,n,t,i){if(!(e=te(e)))return!1;let r=null,o=Hs(e);const s=!o&&Re(e);if(o||s){if(s&&!s.standalone)return!1;r=e}else{const l=e.ngModule;if(o=Hs(l),!o)return!1;r=l}const a=i.has(r);if(s){if(a)return!1;if(i.add(r),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const u of l)Tp(u,n,t,i)}}else{if(!o)return!1;{if(null!=o.imports&&!a){let u;i.add(r);try{Or(o.imports,f=>{Tp(f,n,t,i)&&(u||(u=[]),u.push(f))})}finally{}void 0!==u&&$y(u,n)}if(!a){const u=Nr(r)||(()=>new r);n.push({provide:r,useFactory:u,deps:Ae},{provide:Hy,useValue:r,multi:!0},{provide:Np,useValue:()=>L(r),multi:!0})}const l=o.providers;null==l||a||Or(l,f=>{n.push(f)})}}return r!==e&&void 0!==e.providers}const vT=$e({provide:String,useValue:$e});function Ap(e){return null!==e&&"object"==typeof e&&vT in e}function zo(e){return"function"==typeof e} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const Ip=new q("Set Injector scope."),Zu={},bT={}; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let Op;function Qu(){return void 0===Op&&(Op=new By),Op}class lo{}class Wy extends lo{constructor(n,t,i,r){super(),this.parent=t,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Rp(n,s=>this.processProvider(s)),this.records.set(Vy,ca(void 0,this)),r.has("environment")&&this.records.set(lo,ca(void 0,this));const o=this.records.get(Ip);null!=o&&"string"==typeof o.value&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(Hy.multi,Ae,X.Self))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const n of this._ngOnDestroyHooks)n.ngOnDestroy();for(const n of this._onDestroyHooks)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(n){this._onDestroyHooks.push(n)}runInContext(n){this.assertNotDestroyed();const t=sa(this),i=Hn(void 0);try{return n()}finally{sa(t),Hn(i)}}get(n,t=xl,i=X.Default){this.assertNotDestroyed();const r=sa(this),o=Hn(void 0);try{if(!(i&X.SkipSelf)){let a=this.records.get(n);if(void 0===a){const l=function ET(e){return"function"==typeof e||"object"==typeof e&&e instanceof q}(n)&&Vs(n);a=l&&this.injectableDefInScope(l)?ca(kp(n),Zu):null,this.records.set(n,a)}if(null!=a)return this.hydrate(n,a)}return(i&X.Self?Qu():this.parent).get(n,t=i&X.Optional&&t===xl?null:t)}catch(s){if("NullInjectorError"===s.name){if((s[Wu]=s[Wu]||[]).unshift(Ve(n)),r)throw s;return function xN(e,n,t,i){const r=e[Wu];throw n[_y]&&r.unshift(n[_y]),e.message=function FN(e,n,t,i=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let r=Ve(n);if(Array.isArray(n))r=n.map(Ve).join(" -> ");else if("object"==typeof n){let o=[];for(let s in n)if(n.hasOwnProperty(s)){let a=n[s];o.push(s+":"+("string"==typeof a?JSON.stringify(a):Ve(a)))}r=`{${o.join(", ")}}`}return`${t}${i?"("+i+")":""}[${r}]: ${e.replace(IN,"\n ")}`}("\n"+e.message,r,t,i),e.ngTokenPath=r,e[Wu]=null,e}(s,n,"R3InjectorError",this.source)}throw s}finally{Hn(o),sa(r)}}resolveInjectorInitializers(){const n=sa(this),t=Hn(void 0);try{const i=this.get(Np.multi,Ae,X.Self);for(const r of i)r()}finally{sa(n),Hn(t)}}toString(){const n=[],t=this.records;for(const i of t.keys())n.push(Ve(i));return`R3Injector[${n.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new P(205,!1)}processProvider(n){let t=zo(n=te(n))?n:te(n&&n.provide);const i=function CT(e){return Ap(e)?ca(void 0,e.useValue):ca(Ky(e),Zu)}(n);if(zo(n)||!0!==n.multi)this.records.get(t);else{let r=this.records.get(t);r||(r=ca(void 0,Zu,!0),r.factory=()=>_p(r.multi),this.records.set(t,r)),t=n,r.multi.push(n)}this.records.set(t,i)}hydrate(n,t){return t.value===Zu&&(t.value=bT,t.value=t.factory()),"object"==typeof t.value&&t.value&&function ST(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}injectableDefInScope(n){if(!n.providedIn)return!1;const t=te(n.providedIn);return"string"==typeof t?"any"===t||this.scopes.has(t):this.injectorDefTypes.has(t)}}function kp(e){const n=Vs(e),t=null!==n?n.factory:Nr(e);if(null!==t)return t;if(e instanceof q)throw new P(204,!1);if(e instanceof Function)return function DT(e){const n=e.length;if(n>0)throw Rl(n,"?"),new P(204,!1);const t=function Dh(e){const n=e&&(e[Jr]||e[sl]);if(n){const t=function Ch(e){if(e.hasOwnProperty("name"))return e.name;const n=(""+e).match(/^function\s*([^\s(]+)/);return null===n?"":n[1]}(e);return console.warn(`DEPRECATED: DI is instantiating a token "${t}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in a future version of Angular. Please add @Injectable() to the "${t}" class.`),n}return null}(e);return null!==t?()=>t.factory(e):()=>new e}(e);throw new P(204,!1)}function Ky(e,n,t){let i;if(zo(e)){const r=te(e);return Nr(r)||kp(r)}if(Ap(e))i=()=>te(e.useValue);else if(function Gy(e){return!(!e||!e.useFactory)}(e))i=()=>e.useFactory(..._p(e.deps||[]));else if(function Uy(e){return!(!e||!e.useExisting)}(e))i=()=>L(te(e.useExisting));else{const r=te(e&&(e.useClass||e.provide));if(!function wT(e){return!!e.deps}(e))return Nr(r)||kp(r);i=()=>new r(..._p(e.deps))}return i}function ca(e,n,t=!1){return{factory:e,value:n,multi:t?[]:void 0}}function MT(e){return!!e.\u0275providers}function Rp(e,n){for(const t of e)Array.isArray(t)?Rp(t,n):MT(t)?Rp(t.\u0275providers,n):n(t)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class zy{} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class AT{resolveComponentFactory(n){throw function TT(e){const n=Error(`No component factory found for ${Ve(e)}. Did you add it to @NgModule.entryComponents?`);return n.ngComponent=e,n}(n)}}let Gl=(()=>{class e{} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -return e.NULL=new AT,e})();function IT(){return ua(wt(),k())}function ua(e,n){return new Ze(xt(e,n))}let Ze=(()=>{class e{constructor(t){this.nativeElement=t}}return e.__NG_ELEMENT_ID__=IT,e})();function OT(e){return e instanceof Ze?e.nativeElement:e} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class xp{}let pi=(()=>{class e{}return e.__NG_ELEMENT_ID__=()=>function kT(){const e=k(),t=Nn(wt().index,e);return(hn(t)?t:e)[11]} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(),e})(),RT=(()=>{class e{} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -return e.\u0275prov=G({token:e,providedIn:"root",factory:()=>null}),e})();class Wl{constructor(n){this.full=n,this.major=n.split(".")[0],this.minor=n.split(".")[1],this.patch=n.split(".").slice(2).join(".")}}const xT=new Wl("14.2.9"),Fp={}; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Bp(e){return e.ngOriginalError} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class da{constructor(){this._console=console}handleError(n){const t=this._findOriginalError(n);this._console.error("ERROR",n),t&&this._console.error("ORIGINAL ERROR",t)}_findOriginalError(n){let t=n&&Bp(n);for(;t&&Bp(t);)t=Bp(t);return t||null}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const jp=new Map;let KT=0;const Up="__ngContext__";function pn(e,n){hn(n)?(e[Up]=n[20],function YT(e){jp.set(e[20],e)}(n)):e[Up]=n}function Rr(e){return e instanceof Function?e():e} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var Un=(()=>((Un=Un||{})[Un.Important=1]="Important",Un[Un.DashCase=2]="DashCase",Un))(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Wp(e,n){return undefined(e,n)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function zl(e){const n=e[3];return qn(n)?n[3]:n}function Kp(e){return c0(e[13])}function zp(e){return c0(e[4])}function c0(e){for(;null!==e&&!qn(e);)e=e[4];return e} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function ha(e,n,t,i,r){if(null!=i){let o,s=!1;qn(i)?o=i:hn(i)&&(s=!0,i=i[0]);const a=tt(i);0===e&&null!==t?null==r?g0(n,t,a):Yo(n,t,a,r||null,!0):1===e&&null!==t?Yo(n,t,a,r||null,!0):2===e?function C0(e,n,t){const i=Xu(e,n);i&&function DA(e,n,t,i){e.removeChild(n,t,i)}(e,i,n,t)}(n,a,s):3===e&&n.destroyNode(a),null!=o&&function SA(e,n,t,i,r){const o=t[7];o!==tt(t)&&ha(n,e,i,o,r);for(let a=10;a0&&(e[t-1][4]=i[4]);const o=Uu(e,10+n);!function hA(e,n){Yl(e,n,n[11],2,null,null),n[0]=null,n[6]=null}(i[1],i);const s=o[19];null!==s&&s.detachView(o[1]),i[3]=null,i[4]=null,i[2]&=-65}return i}function f0(e,n){if(!(128&n[2])){const t=n[11];t.destroyNode&&Yl(e,n,t,3,null,null),function mA(e){let n=e[13];if(!n)return Zp(e[1],e);for(;n;){let t=null;if(hn(n))t=n[13];else{const i=n[10];i&&(t=i)}if(!t){for(;n&&!n[4]&&n!==e;)hn(n)&&Zp(n[1],n),n=n[3];null===n&&(n=e),hn(n)&&Zp(n[1],n),t=n&&n[4]}n=t}}(n)}}function Zp(e,n){if(!(128&n[2])){n[2]&=-65,n[2]|=128,function bA(e,n){let t;if(null!=e&&null!=(t=e.destroyHooks))for(let i=0;i=0?i[r=u]():i[r=-u].unsubscribe(),o+=2}else{const s=i[r=t[o+1]];t[o].call(s)}if(null!==i){for(let o=r+1;oo?"":r[p+1].toLowerCase();const v=8&i?m:null;if(v&&-1!==E0(v,u,0)||2&i&&u!==m){if(xi(i))return!1;s=!0}}}}else{if(!s&&!xi(i)&&!xi(l))return!1;if(s&&xi(l))continue;s=!1,i=l|1&i}}return xi(i)||s}function xi(e){return 0==(1&e)}function AA(e,n,t,i){if(null===n)return-1;let r=0;if(i||!t){let o=!1;for(;r-1)for(t++;t0?'="'+a+'"':"")+"]"}else 8&i?r+="."+s:4&i&&(r+=" "+s);else""!==r&&!xi(s)&&(n+=A0(o,r),r=""),i=s,o=o||!xi(i);t++}return""!==r&&(n+=A0(o,r)),n} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const ae={}; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function F(e){I0(be(),k(),on()+e,!1)}function I0(e,n,t,i){if(!i)if(3==(3&n[2])){const o=e.preOrderCheckHooks;null!==o&&$o(n,o,t)}else{const o=e.preOrderHooks;null!==o&&Js(n,o,0,t)}nr(t)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function x0(e,n=null,t=null,i){const r=F0(e,n,t,i);return r.resolveInjectorInitializers(),r}function F0(e,n=null,t=null,i,r=new Set){const o=[t||Ae,_T(e)];return i=i||("object"==typeof e?void 0:Ve(e)),new Wy(o,n||Qu(),i||null,r) -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */}let gn=(()=>{class e{static create(t,i){if(Array.isArray(t))return x0({name:""},i,t,"");{const r=t.name??"";return x0({name:r},t.parent,t.providers,r)}}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -return e.THROW_IF_NOT_FOUND=xl,e.NULL=new By,e.\u0275prov=G({token:e,providedIn:"any",factory:()=>L(Vy)}),e.__NG_ELEMENT_ID__=-1,e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function C(e,n=X.Default){const t=k();return null===t?L(e,n):h(wt(),t,te(e),n)}function sg(){throw new Error("invalid")} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function id(e,n){return e<<17|n<<2}function Fi(e){return e>>17&32767}function ag(e){return 2|e}function xr(e){return(131068&e)>>2}function lg(e,n){return-131069&e|n<<2}function cg(e){return 1|e}function Q0(e,n){const t=e.contentQueries;if(null!==t)for(let i=0;i22&&I0(e,n,22,!1),t(i,r)}finally{nr(o)}}function yg(e,n,t){!Ou()||(function DI(e,n,t,i){const r=t.directiveStart,o=t.directiveEnd;e.firstCreatePass||Go(t,n),pn(i,n);const s=t.initialInputs;for(let a=r;a0;){const t=e[--n];if("number"==typeof t&&t<0)return t}return 0})(a)!=l&&a.push(l),a.push(i,r,s)}}function ab(e,n){null!==e.hostBindings&&e.hostBindings(1,n)}function lb(e,n){n.flags|=2,(e.components||(e.components=[])).push(n.index)}function EI(e,n,t){if(t){if(n.exportAs)for(let i=0;i0&&Sg(t)}}function Sg(e){for(let i=Kp(e);null!==i;i=zp(i))for(let r=10;r0&&Sg(o)}const t=e[1].components;if(null!==t)for(let i=0;i0&&Sg(r)}}function kI(e,n){const t=Nn(n,e),i=t[1];(function RI(e,n){for(let t=n.length;t-1&&(Jp(n,i),Uu(t,i))}this._attachedToViewContainer=!1}f0(this._lView[1],this._lView)}onDestroy(n){nb(this._lView[1],this._lView,null,n)}markForCheck(){Eg(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-65}reattach(){this._lView[2]|=64}detectChanges(){cd(this._lView[1],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new P(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function gA(e,n){Yl(e,n,n[11],2,null,null)}(this._lView[1],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new P(902,!1);this._appRef=n}}class xI extends ql{constructor(n){super(n),this._view=n}detectChanges(){const n=this._view;cd(n[1],n,n[8],!1)}checkNoChanges(){}get context(){return null}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class Tg extends Gl{constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){const t=Re(n);return new Jl(t,this.ngModule)}}function mb(e){const n=[];for(let t in e)e.hasOwnProperty(t)&&n.push({propName:e[t],templateName:t});return n}class PI{constructor(n,t){this.injector=n,this.parentInjector=t}get(n,t,i){const r=this.injector.get(n,Fp,i);return r!==Fp||t===Fp?r:this.parentInjector.get(n,t,i)}}class Jl extends zy{constructor(n,t){super(),this.componentDef=n,this.ngModule=t,this.componentType=n.type,this.selector=function FA(e){return e.map(xA).join(",")}(n.selectors),this.ngContentSelectors=n.ngContentSelectors?n.ngContentSelectors:[],this.isBoundToModule=!!t}get inputs(){return mb(this.componentDef.inputs)}get outputs(){return mb(this.componentDef.outputs)}create(n,t,i,r){let o=(r=r||this.ngModule)instanceof lo?r:r?.injector;o&&null!==this.componentDef.getStandaloneInjector&&(o=this.componentDef.getStandaloneInjector(o)||o);const s=o?new PI(n,o):n,a=s.get(xp,null);if(null===a)throw new P(407,!1);const l=s.get(RT,null),u=a.createRenderer(null,this.componentDef),f=this.componentDef.selectors[0][0]||"div",p=i?function gI(e,n,t){return e.selectRootElement(n,t===ai.ShadowDom)}(u,i,this.componentDef.encapsulation):qp(a.createRenderer(null,this.componentDef),f,function FI(e){const n=e.toLowerCase();return"svg"===n?"svg":"math"===n?"math":null}(f)),m=this.componentDef.onPush?288:272,v=Dg(0,null,null,1,0,null,null,null,null,null),y=sd(null,v,null,m,null,null,a,u,l,s,null);let D,w;x(y);try{const M=function HI(e,n,t,i,r,o){const s=t[1];t[22]=e;const l=ga(s,22,2,"#host",null),u=l.mergedAttrs=n.hostAttrs;null!==u&&(ud(l,u,!0),null!==e&&(Xs(r,e,u),null!==l.classes&&tg(r,e,l.classes),null!==l.styles&&S0(r,e,l.styles)));const f=i.createRenderer(e,n),p=sd(t,tb(n),null,n.onPush?32:16,t[22],l,i,f,o||null,null,null);return s.firstCreatePass&&(Ir(Go(l,t),s,n.type),lb(s,l),cb(l,t.length,1)),ld(t,p),t[22]=p}(p,this.componentDef,y,a,u);if(p)if(i)Xs(u,p,["ng-version",xT.full]);else{const{attrs:I,classes:S}=function PA(e){const n=[],t=[];let i=1,r=2;for(;i0&&tg(u,p,S.join(" "))}if(w=Ks(v,22),void 0!==t){const I=w.projection=[];for(let S=0;S=0;i--){const r=e[i];r.hostVars=n+=r.hostVars,r.hostAttrs=di(r.hostAttrs,t=di(t,r.hostAttrs))}}(i)}function Ag(e){return e===Xi?{}:e===Ae?[]:e}function UI(e,n){const t=e.viewQuery;e.viewQuery=t?(i,r)=>{n(i,r),t(i,r)}:n}function GI(e,n){const t=e.contentQueries;e.contentQueries=t?(i,r,o)=>{n(i,r,o),t(i,r,o)}:n}function WI(e,n){const t=e.hostBindings;e.hostBindings=t?(i,r)=>{n(i,r),t(i,r)}:n} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let fd=null;function qo(){if(!fd){const e=We.Symbol;if(e&&e.iterator)fd=e.iterator;else{const n=Object.getOwnPropertyNames(Map.prototype);for(let t=0;ta(tt(R[i.index])):i.index;let O=null;if(!a&&l&&(O=function iO(e,n,t,i){const r=e.cleanup;if(null!=r)for(let o=0;ol?a[l]:null}"string"==typeof s&&(o+=2)}return null}(e,n,r,i.index)),null!==O)(O.__ngLastListenerFn__||O).__ngNextListenerFn__=o,O.__ngLastListenerFn__=o,v=!1;else{o=kb(i,n,p,o,!1);const R=t.listen(M,r,o);m.push(o,R),f&&f.push(r,S,I,I+1)}}else o=kb(i,n,p,o,!1);const y=i.outputs;let D;if(v&&null!==y&&(D=y[r])){const w=D.length;if(w)for(let M=0;M0;)n=n[15],e--;return n}(e,re.lFrame.contextLView))[8]}(e)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function rO(e,n){let t=null;const i=function IA(e){const n=e.attrs;if(null!=n){const t=n.indexOf(5);if(0==(1&t))return n[t+1]}return null}(e);for(let r=0;r=0} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const Pt={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function $b(e){return e.substring(Pt.key,Pt.keyEnd)}function Ub(e,n){const t=Pt.textEnd;return t===n?-1:(n=Pt.keyEnd=function dO(e,n,t){for(;n32;)n++;return n}(e,Pt.key=n,t),Ma(e,n,t))}function Ma(e,n,t){for(;n=0;t=Ub(n,t))Qn(e,$b(n),!0)}function Yb(e,n){return n>=e.expandoStartIndex}function qb(e,n,t,i){const r=e.data;if(null===r[t+1]){const o=r[on()],s=Yb(e,t);Xb(o,i)&&null===n&&!s&&(n=!1),n=function gO(e,n,t,i){const r=function ui(e){const n=re.lFrame.currentDirectiveIndex;return-1===n?null:e[n]}(e);let o=i?n.residualClasses:n.residualStyles;if(null===r)0===(i?n.classBindings:n.styleBindings)&&(t=ec(t=Hg(null,e,n,t,i),n.attrs,i),o=null);else{const s=n.directiveStylingLast;if(-1===s||e[s]!==r)if(t=Hg(r,e,n,t,i),null===o){let l=function mO(e,n,t){const i=t?n.classBindings:n.styleBindings;if(0!==xr(i))return e[Fi(i)]}(e,n,i);void 0!==l&&Array.isArray(l)&&(l=Hg(null,e,n,l[1],i),l=ec(l,n.attrs,i),function _O(e,n,t,i){e[Fi(t?n.classBindings:n.styleBindings)]=i}(e,n,i,l))}else o=function vO(e,n,t){let i;const r=n.directiveEnd;for(let o=1+n.directiveStylingLast;o0)&&(u=!0)}else f=t;if(r)if(0!==l){const m=Fi(e[a+1]);e[i+1]=id(m,a),0!==m&&(e[m+1]=lg(e[m+1],i)),e[a+1]=function tI(e,n){return 131071&e|n<<17}(e[a+1],i)}else e[i+1]=id(a,0),0!==a&&(e[a+1]=lg(e[a+1],i)),a=i;else e[i+1]=id(l,0),0===a?a=i:e[l+1]=lg(e[l+1],i),l=i;u&&(e[i+1]=ag(e[i+1])),jb(e,f,i,!0),jb(e,f,i,!1),function sO(e,n,t,i,r){const o=r?e.residualClasses:e.residualStyles;null!=o&&"string"==typeof n&&oa(o,n)>=0&&(t[i+1]=cg(t[i+1]))}(n,f,e,i,o),s=id(a,l),o?n.classBindings=s:n.styleBindings=s}(r,o,n,t,s,i)}}function Hg(e,n,t,i,r){let o=null;const s=t.directiveEnd;let a=t.directiveStylingLast;for(-1===a?a=t.directiveStart:a++;a0;){const l=e[r],u=Array.isArray(l),f=u?l[1]:l,p=null===f;let m=t[r+1];m===ae&&(m=p?Ae:void 0);let v=p?pp(m,i):f===i?m:void 0;if(u&&!gd(v)&&(v=pp(l,i)),gd(v)&&(a=v,s))return a;const y=e[r+1];r=s?Fi(y):xr(y)}if(null!==n){let l=o?n.residualClasses:n.residualStyles;null!=l&&(a=pp(l,i))}return a}function gd(e){return void 0!==e}function Xb(e,n){return 0!=(e.flags&(n?16:32))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function A(e,n=""){const t=k(),i=be(),r=e+22,o=i.firstCreatePass?ga(i,r,1,n,null):i.data[r],s=t[r]=function Yp(e,n){return e.createText(n)}(t[11],n);ed(i,t,s,o),ci(o,!1)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function fo(e){return Be("",e,""),fo}function Be(e,n,t){const i=k(),r=function va(e,n,t,i){return mn(e,Tr(),t)?n+oe(t)+i:ae}(i,e,n,t);return r!==ae&&function Fr(e,n,t){const i=Ho(n,e);!function u0(e,n,t){e.setValue(n,t)}(e[11],i,t)}(i,on(),r),Be} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const Qo=void 0;var jO=["en",[["a","p"],["AM","PM"],Qo],[["AM","PM"],Qo,Qo],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Qo,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Qo,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Qo,"{1} 'at' {0}",Qo],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function BO(e){const t=Math.floor(Math.abs(e)),i=e.toString().replace(/^[^.]*\.?/,"").length;return 1===t&&0===i?1:5}]; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let Ta={};function In(e){const n=function $O(e){return e.toLowerCase().replace(/_/g,"-")} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(e);let t=yD(n);if(t)return t;const i=n.split("-")[0];if(t=yD(i),t)return t;if("en"===i)return jO;throw new P(701,!1)}function yD(e){return e in Ta||(Ta[e]=We.ng&&We.ng.common&&We.ng.common.locales&&We.ng.common.locales[e]),Ta[e]}var j=(()=>((j=j||{})[j.LocaleId=0]="LocaleId",j[j.DayPeriodsFormat=1]="DayPeriodsFormat",j[j.DayPeriodsStandalone=2]="DayPeriodsStandalone",j[j.DaysFormat=3]="DaysFormat",j[j.DaysStandalone=4]="DaysStandalone",j[j.MonthsFormat=5]="MonthsFormat",j[j.MonthsStandalone=6]="MonthsStandalone",j[j.Eras=7]="Eras",j[j.FirstDayOfWeek=8]="FirstDayOfWeek",j[j.WeekendRange=9]="WeekendRange",j[j.DateFormat=10]="DateFormat",j[j.TimeFormat=11]="TimeFormat",j[j.DateTimeFormat=12]="DateTimeFormat",j[j.NumberSymbols=13]="NumberSymbols",j[j.NumberFormats=14]="NumberFormats",j[j.CurrencyCode=15]="CurrencyCode",j[j.CurrencySymbol=16]="CurrencySymbol",j[j.CurrencyName=17]="CurrencyName",j[j.Currencies=18]="Currencies",j[j.Directionality=19]="Directionality",j[j.PluralCase=20]="PluralCase",j[j.ExtraData=21]="ExtraData",j))();const Aa="en-US"; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let bD=Aa;function Ug(e,n,t,i,r){if(e=te(e),Array.isArray(e))for(let o=0;o>20;if(zo(e)||!e.multi){const v=new Tn(l,r,C),y=Wg(a,n,r?f:f+m,p);-1===y?(Ir(Go(u,s),o,a),Gg(o,e,n.length),n.push(a),u.directiveStart++,u.directiveEnd++,r&&(u.providerIndexes+=1048576),t.push(v),s.push(v)):(t[y]=v,s[y]=v)}else{const v=Wg(a,n,f+m,p),y=Wg(a,n,f,f+m),D=v>=0&&t[v],w=y>=0&&t[y];if(r&&!w||!r&&!D){Ir(Go(u,s),o,a);const M=function Lk(e,n,t,i,r){const o=new Tn(e,t,C);return o.multi=[],o.index=n,o.componentProviders=0,WD(o,r,i&&!t),o}(r?Pk:Fk,t.length,r,i,l);!r&&w&&(t[y].providerFactory=M),Gg(o,e,n.length,0),n.push(a),u.directiveStart++,u.directiveEnd++,r&&(u.providerIndexes+=1048576),t.push(M),s.push(M)}else Gg(o,e,v>-1?v:y,WD(t[r?y:v],l,!r&&i));!r&&i&&w&&t[y].componentProviders++}}}function Gg(e,n,t,i){const r=zo(n),o=function yT(e){return!!e.useClass}(n);if(r||o){const l=(o?te(n.useClass):n).prototype.ngOnDestroy;if(l){const u=e.destroyHooks||(e.destroyHooks=[]);if(!r&&n.multi){const f=u.indexOf(t);-1===f?u.push(t,[i,l]):u[f+1].push(i,l)}else u.push(t,l)}}}function WD(e,n,t){return t&&e.componentProviders++,e.multi.push(n)-1}function Wg(e,n,t,i){for(let r=t;r{t.providersResolver=(i,r)=> -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function xk(e,n,t){const i=be();if(i.firstCreatePass){const r=Jn(e);Ug(t,i.data,i.blueprint,r,!0),Ug(n,i.data,i.blueprint,r,!1)}}(i,r?r(e):e,n)}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class Xo{}class KD{} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class zD extends Xo{constructor(n,t){super(),this._parent=t,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new Tg(this);const i=En(n);this._bootstrapComponents=Rr(i.bootstrap),this._r3Injector=F0(n,t,[{provide:Xo,useValue:this},{provide:Gl,useValue:this.componentFactoryResolver}],Ve(n),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(n)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class zg extends KD{constructor(n){super(),this.moduleType=n}create(n){return new zD(this.moduleType,n)}}class Hk extends Xo{constructor(n,t,i){super(),this.componentFactoryResolver=new Tg(this),this.instance=null;const r=new Wy([...n,{provide:Xo,useValue:this},{provide:Gl,useValue:this.componentFactoryResolver}],t||Qu(),i,new Set(["environment"]));this.injector=r,r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function bd(e,n,t=null){return new Hk(e,n,t).injector} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let Bk=(()=>{class e{constructor(t){this._injector=t,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(t){if(!t.standalone)return null;if(!this.cachedInjectors.has(t.id)){const i=jy(0,t.type),r=i.length>0?bd([i],this._injector,`Standalone[${t.type.name}]`):null;this.cachedInjectors.set(t.id,r)}return this.cachedInjectors.get(t.id)}ngOnDestroy(){try{for(const t of this.cachedInjectors.values())null!==t&&t.destroy()}finally{this.cachedInjectors.clear()}}}return e.\u0275prov=G({token:e,providedIn:"environment",factory:()=>new e(L(lo))}),e})();function YD(e){e.getStandaloneInjector=n=>n.get(Bk).getOrCreateStandaloneInjector(e)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Cd(e,n,t,i,r,o){return function r1(e,n,t,i,r,o,s,a){const l=n+t;return function hd(e,n,t,i,r){const o=Jo(e,n,t,i);return mn(e,n+2,r)||o}(e,l,r,o,s)?or(e,l+3,a?i.call(a,r,o,s):i(r,o,s)):ac(e,l+3)}(k(),rn(),e,n,t,i,r,o)}function ac(e,n){const t=e[n];return t===ae?void 0:t} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function wd(e,n){const t=be();let i;const r=e+22;t.firstCreatePass?(i=function tR(e,n){if(n)for(let t=n.length-1;t>=0;t--){const i=n[t];if(e===i.name)return i}}(n,t.pipeRegistry),t.data[r]=i,i.onDestroy&&(t.destroyHooks||(t.destroyHooks=[])).push(r,i.onDestroy)):i=t.data[r];const o=i.factory||(i.factory=Nr(i.type)),s=Hn(C);try{const a=ea(!1),l=o();return ea(a),function eO(e,n,t,i){t>=e.data.length&&(e.data[t]=null,e.blueprint[t]=null),n[t]=i}(t,k(),r,l),l}finally{Hn(s)}}function Sd(e,n,t,i){const r=e+22,o=k(),s=io(o,r);return function lc(e,n){return e[1].data[n].pure} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(o,r)?function i1(e,n,t,i,r,o,s){const a=n+t;return Jo(e,a,r,o)?or(e,a+2,s?i.call(s,r,o):i(r,o)):ac(e,a+2)}(o,rn(),n,s.transform,t,i,s):s.transform(t,i)}function qg(e){return n=>{setTimeout(e,void 0,n)}}const ue=class sR extends Ue{constructor(n=!1){super(),this.__isAsync=n}emit(n){super.next(n)}subscribe(n,t,i){let r=n,o=t||(()=>null),s=i;if(n&&"object"==typeof n){const l=n;r=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=qg(o),r&&(r=qg(r)),s&&(s=qg(s)));const a=super.subscribe({next:r,error:o,complete:s});return n instanceof Ct&&n.add(a),a}}; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function aR(){return this._results[qo()]()}class Jg{constructor(n=!1){this._emitDistinctChangesOnly=n,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const t=qo(),i=Jg.prototype;i[t]||(i[t]=aR)}get changes(){return this._changes||(this._changes=new ue)}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,t){return this._results.reduce(n,t)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,t){const i=this;i.dirty=!1;const r=Zn(n);(this._changesDetected=!function bN(e,n,t){if(e.length!==n.length)return!1;for(let i=0;i{class e{}return e.__NG_ELEMENT_ID__=uR,e})();const lR=bt,cR=class extends lR{constructor(n,t,i){super(),this._declarationLView=n,this._declarationTContainer=t,this.elementRef=i}createEmbeddedView(n,t){const i=this._declarationTContainer.tViews,r=sd(this._declarationLView,i,n,16,null,i.declTNode,null,null,null,null,t||null);r[17]=this._declarationLView[this._declarationTContainer.index];const s=this._declarationLView[19];return null!==s&&(r[19]=s.createEmbeddedView(i)),vg(i,r,n),new ql(r)}};function uR(){return Ed(wt(),k())}function Ed(e,n){return 4&e.type?new cR(n,e,ua(e,n)):null} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let Bi=(()=>{class e{}return e.__NG_ELEMENT_ID__=dR,e})();function dR(){return c1(wt(),k())}const fR=Bi,a1=class extends fR{constructor(n,t,i){super(),this._lContainer=n,this._hostTNode=t,this._hostLView=i}get element(){return ua(this._hostTNode,this._hostLView)}get injector(){return new vt(this._hostTNode,this._hostLView)}get parentInjector(){const n=ki(this._hostTNode,this._hostLView);if($u(n)){const t=so(n,this._hostLView),i=oo(n);return new vt(t[1].data[i+8],t)}return new vt(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const t=l1(this._lContainer);return null!==t&&t[n]||null}get length(){return this._lContainer.length-10}createEmbeddedView(n,t,i){let r,o;"number"==typeof i?r=i:null!=i&&(r=i.index,o=i.injector);const s=n.createEmbeddedView(t||{},o);return this.insert(s,r),s}createComponent(n,t,i,r,o){const s=n&&!function kl(e){return"function"==typeof e} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(n);let a;if(s)a=t;else{const p=t||{};a=p.index,i=p.injector,r=p.projectableNodes,o=p.environmentInjector||p.ngModuleRef}const l=s?n:new Jl(Re(n)),u=i||this.parentInjector;if(!o&&null==l.ngModule){const m=(s?u:this.parentInjector).get(lo,null);m&&(o=m)}const f=l.create(u,r,void 0,o);return this.insert(f.hostView,a),f}insert(n,t){const i=n._lView,r=i[1];if(function $h(e){return qn(e[3])}(i)){const f=this.indexOf(n);if(-1!==f)this.detach(f);else{const p=i[3],m=new a1(p,p[6],p[3]);m.detach(m.indexOf(n))}}const o=this._adjustIndex(t),s=this._lContainer;!function _A(e,n,t,i){const r=10+i,o=t.length;i>0&&(t[r-1][4]=n),i0)i.push(s[a/2]);else{const u=o[a+1],f=n[-l];for(let p=10;p{class e{constructor(t){this.appInits=t,this.resolve=Td,this.reject=Td,this.initialized=!1,this.done=!1,this.donePromise=new Promise((i,r)=>{this.resolve=i,this.reject=r})}runInitializers(){if(this.initialized)return;const t=[],i=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let r=0;r{o.subscribe({complete:a,error:l})});t.push(s)}}Promise.all(t).then(()=>{i()}).catch(r=>{this.reject(r)}),0===t.length&&i(),this.initialized=!0}}return e.\u0275fac=function(t){return new(t||e)(L(Ad,8))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const uc=new q("AppId",{providedIn:"root",factory:function R1(){return`${am()}${am()}${am()}`}});function am(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const x1=new q("Platform Initializer"),dc=new q("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),F1=new q("appBootstrapListener"); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let BR=(()=>{class e{log(t){console.log(t)}warn(t){console.warn(t)}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const Pr=new q("LocaleId",{providedIn:"root",factory:()=>St(Pr,X.Optional|X.SkipSelf)||function jR(){return typeof $localize<"u"&&$localize.locale||Aa}()}); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class UR{constructor(n,t){this.ngModuleFactory=n,this.componentFactories=t}}let lm=(()=>{class e{compileModuleSync(t){return new zg(t)}compileModuleAsync(t){return Promise.resolve(this.compileModuleSync(t))}compileModuleAndAllComponentsSync(t){const i=this.compileModuleSync(t),o=Rr(En(t).declarations).reduce((s,a)=>{const l=Re(a);return l&&s.push(new Jl(l)),s},[]);return new UR(i,o)}compileModuleAndAllComponentsAsync(t){return Promise.resolve(this.compileModuleAndAllComponentsSync(t))}clearCache(){}clearCacheFor(t){}getModuleId(t){}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const KR=(()=>Promise.resolve(0))();function cm(e){typeof Zone>"u"?KR.then(()=>{e&&e.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",e)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class ze{constructor({enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:t=!1,shouldCoalesceRunChangeDetection:i=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ue(!1),this.onMicrotaskEmpty=new ue(!1),this.onStable=new ue(!1),this.onError=new ue(!1),typeof Zone>"u")throw new P(908,!1);Zone.assertZonePatched();const r=this;if(r._nesting=0,r._outer=r._inner=Zone.current,Zone.AsyncStackTaggingZoneSpec){const o=Zone.AsyncStackTaggingZoneSpec;r._inner=r._inner.fork(new o("Angular"))}Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!i&&t,r.shouldCoalesceRunChangeDetection=i,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=function zR(){let e=We.requestAnimationFrame,n=We.cancelAnimationFrame;if(typeof Zone<"u"&&e&&n){const t=e[Zone.__symbol__("OriginalDelegate")];t&&(e=t);const i=n[Zone.__symbol__("OriginalDelegate")];i&&(n=i)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:n}}().nativeRequestAnimationFrame,function JR(e){const n=()=>{!function qR(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(We,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,dm(e),e.isCheckStableRunning=!0,um(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),dm(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(t,i,r,o,s,a)=>{try{return V1(e),t.invokeTask(r,o,s,a)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===o.type||e.shouldCoalesceRunChangeDetection)&&n(),H1(e)}},onInvoke:(t,i,r,o,s,a,l)=>{try{return V1(e),t.invoke(r,o,s,a,l)}finally{e.shouldCoalesceRunChangeDetection&&n(),H1(e)}},onHasTask:(t,i,r,o)=>{t.hasTask(r,o),i===r&&("microTask"==o.change?(e._hasPendingMicrotasks=o.microTask,dm(e),um(e)):"macroTask"==o.change&&(e.hasPendingMacrotasks=o.macroTask))},onHandleError:(t,i,r,o)=>(t.handleError(r,o),e.runOutsideAngular(()=>e.onError.emit(o)),!1)})}(r)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!ze.isInAngularZone())throw new P(909,!1)}static assertNotInAngularZone(){if(ze.isInAngularZone())throw new P(909,!1)}run(n,t,i){return this._inner.run(n,t,i)}runTask(n,t,i,r){const o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,n,YR,Td,Td);try{return o.runTask(s,t,i)}finally{o.cancelTask(s)}}runGuarded(n,t,i){return this._inner.runGuarded(n,t,i)}runOutsideAngular(n){return this._outer.run(n)}}const YR={};function um(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function dm(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function V1(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function H1(e){e._nesting--,um(e)}class ZR{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ue,this.onMicrotaskEmpty=new ue,this.onStable=new ue,this.onError=new ue}run(n,t,i){return n.apply(t,i)}runGuarded(n,t,i){return n.apply(t,i)}runOutsideAngular(n){return n()}runTask(n,t,i,r){return n.apply(t,i)}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const B1=new q(""),Od=new q("");let pm,fm=(()=>{class e{constructor(t,i,r){this._ngZone=t,this.registry=i,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,pm||(function QR(e){pm=e}(r),r.addToWindow(i)),this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{ze.assertNotInAngularZone(),cm(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())cm(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb(this._didWork)}this._didWork=!1});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(t)||(clearTimeout(i.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,i,r){let o=-1;i&&i>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),t(this._didWork,this.getPendingTasks())},i)),this._callbacks.push({doneCb:t,timeoutId:o,updateCb:r})}whenStable(t,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(t,i,r),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(t){this.registry.registerApplication(t,this)}unregisterApplication(t){this.registry.unregisterApplication(t)}findProviders(t,i,r){return[]}}return e.\u0275fac=function(t){return new(t||e)(L(ze),L(hm),L(Od))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(),hm=(()=>{class e{constructor(){this._applications=new Map}registerApplication(t,i){this._applications.set(t,i)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,i=!0){return pm?.findTestabilityInTree(this,t,i)??null}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})(),po=null;const j1=new q("AllowMultipleToken"),gm=new q("PlatformDestroyListeners");class $1{constructor(n,t){this.name=n,this.token=t}}function G1(e,n,t=[]){const i=`Platform: ${n}`,r=new q(i);return(o=[])=>{let s=mm();if(!s||s.injector.get(j1,!1)){const a=[...t,...o,{provide:r,useValue:!0}];e?e(a):function tx(e){if(po&&!po.get(j1,!1))throw new P(400,!1);po=e;const n=e.get(K1);(function U1(e){const n=e.get(x1,null);n&&n.forEach(t=>t())})(e)}(function W1(e=[],n){return gn.create({name:n,providers:[{provide:Ip,useValue:"platform"},{provide:gm,useValue:new Set([()=>po=null])},...e]})}(a,i))}return function ix(e){const n=mm();if(!n)throw new P(401,!1);return n}()}}function mm(){return po?.get(K1)??null}let K1=(()=>{class e{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,i){const r=function Y1(e,n){let t;return t="noop"===e?new ZR:("zone.js"===e?void 0:e)||new ze(n),t}(i?.ngZone,function z1(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!e||!e.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!e||!e.ngZoneRunCoalescing)||!1}}(i)),o=[{provide:ze,useValue:r}];return r.run(()=>{const s=gn.create({providers:o,parent:this.injector,name:t.moduleType.name}),a=t.create(s),l=a.injector.get(da,null);if(!l)throw new P(402,!1);return r.runOutsideAngular(()=>{const u=r.onError.subscribe({next:f=>{l.handleError(f)}});a.onDestroy(()=>{kd(this._modules,a),u.unsubscribe()})}),function q1(e,n,t){try{const i=t();return Xl(i)?i.catch(r=>{throw n.runOutsideAngular(()=>e.handleError(r)),r}):i}catch(i){throw n.runOutsideAngular(()=>e.handleError(i)),i}}(l,r,()=>{const u=a.injector.get(Id);return u.runInitializers(),u.donePromise.then(()=>(function DD(e){Sn(e,"Expected localeId to be defined"),"string"==typeof e&&(bD=e.toLowerCase().replace(/_/g,"-"))}(a.injector.get(Pr,Aa)||Aa),this._moduleDoBootstrap(a),a))})})}bootstrapModule(t,i=[]){const r=J1({},i);return function XR(e,n,t){const i=new zg(t);return Promise.resolve(i)}(0,0,t).then(o=>this.bootstrapModuleFactory(o,r))}_moduleDoBootstrap(t){const i=t.injector.get(fc);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(r=>i.bootstrap(r));else{if(!t.instance.ngDoBootstrap)throw new P(403,!1);t.instance.ngDoBootstrap(i)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new P(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const t=this._injector.get(gm,null);t&&(t.forEach(i=>i()),t.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return e.\u0275fac=function(t){return new(t||e)(L(gn))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();function J1(e,n){return Array.isArray(n)?n.reduce(J1,e):{...e,...n}}let fc=(()=>{class e{constructor(t,i,r){this._zone=t,this._injector=i,this._exceptionHandler=r,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const o=new je(a=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{a.next(this._stable),a.complete()})}),s=new je(a=>{let l;this._zone.runOutsideAngular(()=>{l=this._zone.onStable.subscribe(()=>{ze.assertNotInAngularZone(),cm(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,a.next(!0))})})});const u=this._zone.onUnstable.subscribe(()=>{ze.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{a.next(!1)}))});return()=>{l.unsubscribe(),u.unsubscribe()}});this.isStable=function fh(...e){const n=en(e),t=function Si(e,n){return"number"==typeof Ln(e)?e.pop():n}(e,1/0),i=e;return i.length?1===i.length?ut(i[0]):Se(t)(gt(i,n)):Xt}(o,s.pipe(function hh(e={}){const{connector:n=(()=>new Ue),resetOnError:t=!0,resetOnComplete:i=!0,resetOnRefCountZero:r=!0}=e;return o=>{let s,a,l,u=0,f=!1,p=!1;const m=()=>{a?.unsubscribe(),a=void 0},v=()=>{m(),s=l=void 0,f=p=!1},y=()=>{const D=s;v(),D?.unsubscribe()};return qe((D,w)=>{u++,!p&&!f&&m();const M=l=l??n();w.add(()=>{u--,0===u&&!p&&!f&&(a=il(y,r))}),M.subscribe(w),!s&&u>0&&(s=new vr({next:I=>M.next(I),error:I=>{p=!0,m(),a=il(v,t,I),M.error(I)},complete:()=>{f=!0,m(),a=il(v,i),M.complete()}}),ut(D).subscribe(s))})(o)}}()))}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(t,i){const r=t instanceof zy;if(!this._injector.get(Id).done)throw!r&&function zn(e){const n=Re(e)||Ut(e)||nn(e);return null!==n&&n.standalone}(t),new P(405,false);let s;s=r?t:this._injector.get(Gl).resolveComponentFactory(t),this.componentTypes.push(s.componentType);const a=function ex(e){return e.isBoundToModule}(s)?void 0:this._injector.get(Xo),u=s.create(gn.NULL,[],i||s.selector,a),f=u.location.nativeElement,p=u.injector.get(B1,null);return p?.registerApplication(f),u.onDestroy(()=>{this.detachView(u.hostView),kd(this.components,u),p?.unregisterApplication(f)}),this._loadComponent(u),u}tick(){if(this._runningTick)throw new P(101,!1);try{this._runningTick=!0;for(let t of this._views)t.detectChanges()}catch(t){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(t))}finally{this._runningTick=!1}}attachView(t){const i=t;this._views.push(i),i.attachToAppRef(this)}detachView(t){const i=t;kd(this._views,i),i.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(F1,[]).concat(this._bootstrapListeners).forEach(r=>r(t))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(t=>t()),this._views.slice().forEach(t=>t.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(t){return this._destroyListeners.push(t),()=>kd(this._destroyListeners,t)}destroy(){if(this._destroyed)throw new P(406,!1);const t=this._injector;t.destroy&&!t.destroyed&&t.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return e.\u0275fac=function(t){return new(t||e)(L(ze),L(lo),L(da))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();function kd(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let Q1=!0,Vr=(()=>{class e{}return e.__NG_ELEMENT_ID__=sx,e})();function sx(e){return function ax(e,n,t){if($s(e)&&!t){const i=Nn(e.index,n);return new ql(i,i)}return 47&e.type?new ql(n[16],n):null} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(wt(),k(),16==(16&e))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class iC{constructor(){}supports(n){return Zl(n)}create(n){return new hx(n)}}const fx=(e,n)=>n;class hx{constructor(n){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=n||fx}forEachItem(n){let t;for(t=this._itHead;null!==t;t=t._next)n(t)}forEachOperation(n){let t=this._itHead,i=this._removalsHead,r=0,o=null;for(;t||i;){const s=!i||t&&t.currentIndex{s=this._trackByFn(r,a),null!==t&&Object.is(t.trackById,s)?(i&&(t=this._verifyReinsertion(t,a,s,r)),Object.is(t.item,a)||this._addIdentityChange(t,a)):(t=this._mismatch(t,a,s,r),i=!0),t=t._next,r++}),this.length=r;return this._truncate(t),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,t,i,r){let o;return null===n?o=this._itTail:(o=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,t)||this._addIdentityChange(n,t),this._reinsertAfter(n,o,r)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(n.item,t)||this._addIdentityChange(n,t),this._moveAfter(n,o,r)):n=this._addAfter(new px(t,i),o,r),n}_verifyReinsertion(n,t,i,r){let o=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==o?n=this._reinsertAfter(o,n._prev,r):n.currentIndex!=r&&(n.currentIndex=r,this._addToMoves(n,r)),n}_truncate(n){for(;null!==n;){const t=n._next;this._addToRemovals(this._unlink(n)),n=t}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(n,t,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const r=n._prevRemoved,o=n._nextRemoved;return null===r?this._removalsHead=o:r._nextRemoved=o,null===o?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(n,t,i),this._addToMoves(n,i),n}_moveAfter(n,t,i){return this._unlink(n),this._insertAfter(n,t,i),this._addToMoves(n,i),n}_addAfter(n,t,i){return this._insertAfter(n,t,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,t,i){const r=null===t?this._itHead:t._next;return n._next=r,n._prev=t,null===r?this._itTail=n:r._prev=n,null===t?this._itHead=n:t._next=n,null===this._linkedRecords&&(this._linkedRecords=new rC),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const t=n._prev,i=n._next;return null===t?this._itHead=i:t._next=i,null===i?this._itTail=t:i._prev=t,n}_addToMoves(n,t){return n.previousIndex===t||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new rC),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,t){return n.item=t,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class px{constructor(n,t){this.item=n,this.trackById=t,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class gx{constructor(){this._head=null,this._tail=null}add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,t){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===t||t<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const t=n._prevDup,i=n._nextDup;return null===t?this._head=i:t._nextDup=i,null===i?this._tail=t:i._prevDup=t,null===this._head}}class rC{constructor(){this.map=new Map}put(n){const t=n.trackById;let i=this.map.get(t);i||(i=new gx,this.map.set(t,i)),i.add(n)}get(n,t){const r=this.map.get(n);return r?r.get(n,t):null}remove(n){const t=n.trackById;return this.map.get(t).remove(n)&&this.map.delete(t),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function oC(e,n,t){const i=e.previousIndex;if(null===i)return i;let r=0;return t&&i{if(t&&t.key===r)this._maybeAddToChanges(t,i),this._appendAfter=t,t=t._next;else{const o=this._getOrCreateRecordForKey(r,i);t=this._insertBeforeOrAppend(t,o)}}),t){t._prev&&(t._prev._next=null),this._removalsHead=t;for(let i=t;null!==i;i=i._nextRemoved)i===this._mapHead&&(this._mapHead=null),this._records.delete(i.key),i._nextRemoved=i._next,i.previousValue=i.currentValue,i.currentValue=null,i._prev=null,i._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(n,t){if(n){const i=n._prev;return t._next=n,t._prev=i,n._prev=t,i&&(i._next=t),n===this._mapHead&&(this._mapHead=t),this._appendAfter=n,n}return this._appendAfter?(this._appendAfter._next=t,t._prev=this._appendAfter):this._mapHead=t,this._appendAfter=t,null}_getOrCreateRecordForKey(n,t){if(this._records.has(n)){const r=this._records.get(n);this._maybeAddToChanges(r,t);const o=r._prev,s=r._next;return o&&(o._next=s),s&&(s._prev=o),r._next=null,r._prev=null,r}const i=new _x(n);return this._records.set(n,i),i.currentValue=t,this._addToAdditions(i),i}_reset(){if(this.isDirty){let n;for(this._previousMapHead=this._mapHead,n=this._previousMapHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._changesHead;null!==n;n=n._nextChanged)n.previousValue=n.currentValue;for(n=this._additionsHead;null!=n;n=n._nextAdded)n.previousValue=n.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(n,t){Object.is(t,n.currentValue)||(n.previousValue=n.currentValue,n.currentValue=t,this._addToChanges(n))}_addToAdditions(n){null===this._additionsHead?this._additionsHead=this._additionsTail=n:(this._additionsTail._nextAdded=n,this._additionsTail=n)}_addToChanges(n){null===this._changesHead?this._changesHead=this._changesTail=n:(this._changesTail._nextChanged=n,this._changesTail=n)}_forEach(n,t){n instanceof Map?n.forEach(t):Object.keys(n).forEach(i=>t(n[i],i))}}class _x{constructor(n){this.key=n,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function aC(){return new Fd([new iC])}let Fd=(()=>{class e{constructor(t){this.factories=t}static create(t,i){if(null!=i){const r=i.factories.slice();t=t.concat(r)}return new e(t)}static extend(t){return{provide:e,useFactory:i=>e.create(t,i||aC()),deps:[[e,new Vl,new Ll]]}}find(t){const i=this.factories.find(r=>r.supports(t));if(null!=i)return i;throw new P(901,!1)}}return e.\u0275prov=G({token:e,providedIn:"root",factory:aC}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function lC(){return new hc([new sC])}let hc=(()=>{class e{constructor(t){this.factories=t}static create(t,i){if(i){const r=i.factories.slice();t=t.concat(r)}return new e(t)}static extend(t){return{provide:e,useFactory:i=>e.create(t,i||lC()),deps:[[e,new Vl,new Ll]]}}find(t){const i=this.factories.find(r=>r.supports(t));if(i)return i;throw new P(901,!1)}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -return e.\u0275prov=G({token:e,providedIn:"root",factory:lC}),e})();const bx=G1(null,"core",[]); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let Dx=(()=>{class e{constructor(t){}}return e.\u0275fac=function(t){return new(t||e)(L(fc))},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function Dm(e,n){const t=Re(e),i=n.elementInjector||Qu();return new Jl(t).create(i,n.projectableNodes,n.hostElement,n.environmentInjector)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license Angular v14.2.9 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let Pd=null;function lr(){return Pd} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const Dt=new q("DocumentToken"); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let Cm=(()=>{class e{historyGo(t){throw new Error("Not implemented")}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:function(){return function Ex(){return L(cC)}()},providedIn:"platform"}),e})();const Mx=new q("Location Initialized");let cC=(()=>{class e extends Cm{constructor(t){super(),this._doc=t,this._init()}_init(){this.location=window.location,this._history=window.history}getBaseHrefFromDOM(){return lr().getBaseHref(this._doc)}onPopState(t){const i=lr().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",t,!1),()=>i.removeEventListener("popstate",t)}onHashChange(t){const i=lr().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",t,!1),()=>i.removeEventListener("hashchange",t)}get href(){return this.location.href}get protocol(){return this.location.protocol}get hostname(){return this.location.hostname}get port(){return this.location.port}get pathname(){return this.location.pathname}get search(){return this.location.search}get hash(){return this.location.hash}set pathname(t){this.location.pathname=t}pushState(t,i,r){uC()?this._history.pushState(t,i,r):this.location.hash=r}replaceState(t,i,r){uC()?this._history.replaceState(t,i,r):this.location.hash=r}forward(){this._history.forward()}back(){this._history.back()}historyGo(t=0){this._history.go(t)}getState(){return this._history.state}}return e.\u0275fac=function(t){return new(t||e)(L(Dt))},e.\u0275prov=G({token:e,factory:function(){return function Nx(){return new cC(L(Dt))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */()},providedIn:"platform"}),e})();function uC(){return!!window.history.pushState}function wm(e,n){if(0==e.length)return n;if(0==n.length)return e;let t=0;return e.endsWith("/")&&t++,n.startsWith("/")&&t++,2==t?e+n.substring(1):1==t?e+n:e+"/"+n}function dC(e){const n=e.match(/#|\?|$/),t=n&&n.index||e.length;return e.slice(0,t-("/"===e[t-1]?1:0))+e.slice(t)}function Br(e){return e&&"?"!==e[0]?"?"+e:e} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let ts=(()=>{class e{historyGo(t){throw new Error("Not implemented")}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:function(){return St(hC)},providedIn:"root"}),e})();const fC=new q("appBaseHref");let hC=(()=>{class e extends ts{constructor(t,i){super(),this._platformLocation=t,this._removeListenerFns=[],this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??St(Dt).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return wm(this._baseHref,t)}path(t=!1){const i=this._platformLocation.pathname+Br(this._platformLocation.search),r=this._platformLocation.hash;return r&&t?`${i}${r}`:i}pushState(t,i,r,o){const s=this.prepareExternalUrl(r+Br(o));this._platformLocation.pushState(t,i,s)}replaceState(t,i,r,o){const s=this.prepareExternalUrl(r+Br(o));this._platformLocation.replaceState(t,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}}return e.\u0275fac=function(t){return new(t||e)(L(Cm),L(fC,8))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),Tx=(()=>{class e extends ts{constructor(t,i){super(),this._platformLocation=t,this._baseHref="",this._removeListenerFns=[],null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}path(t=!1){let i=this._platformLocation.hash;return null==i&&(i="#"),i.length>0?i.substring(1):i}prepareExternalUrl(t){const i=wm(this._baseHref,t);return i.length>0?"#"+i:i}pushState(t,i,r,o){let s=this.prepareExternalUrl(r+Br(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(t,i,s)}replaceState(t,i,r,o){let s=this.prepareExternalUrl(r+Br(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(t,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}}return e.\u0275fac=function(t){return new(t||e)(L(Cm),L(fC,8))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(),Sm=(()=>{class e{constructor(t){this._subject=new ue,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=t;const i=this._locationStrategy.getBaseHref();this._baseHref=dC(pC(i)),this._locationStrategy.onPopState(r=>{this._subject.emit({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(t=!1){return this.normalize(this._locationStrategy.path(t))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(t,i=""){return this.path()==this.normalize(t+Br(i))}normalize(t){return e.stripTrailingSlash(function Ix(e,n){return e&&n.startsWith(e)?n.substring(e.length):n}(this._baseHref,pC(t)))}prepareExternalUrl(t){return t&&"/"!==t[0]&&(t="/"+t),this._locationStrategy.prepareExternalUrl(t)}go(t,i="",r=null){this._locationStrategy.pushState(r,"",t,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Br(i)),r)}replaceState(t,i="",r=null){this._locationStrategy.replaceState(r,"",t,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Br(i)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(t=0){this._locationStrategy.historyGo?.(t)}onUrlChange(t){return this._urlChangeListeners.push(t),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)})),()=>{const i=this._urlChangeListeners.indexOf(t);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(t="",i){this._urlChangeListeners.forEach(r=>r(t,i))}subscribe(t,i,r){return this._subject.subscribe({next:t,error:i,complete:r})}}return e.normalizeQueryParams=Br,e.joinWithSlash=wm,e.stripTrailingSlash=dC,e.\u0275fac=function(t){return new(t||e)(L(ts))},e.\u0275prov=G({token:e,factory:function(){return function Ax(){return new Sm(L(ts))}()},providedIn:"root"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function pC(e){return e.replace(/\/index.html$/,"")} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var Mt=(()=>((Mt=Mt||{})[Mt.Format=0]="Format",Mt[Mt.Standalone=1]="Standalone",Mt))(),ve=(()=>((ve=ve||{})[ve.Narrow=0]="Narrow",ve[ve.Abbreviated=1]="Abbreviated",ve[ve.Wide=2]="Wide",ve[ve.Short=3]="Short",ve))(),pt=(()=>((pt=pt||{})[pt.Short=0]="Short",pt[pt.Medium=1]="Medium",pt[pt.Long=2]="Long",pt[pt.Full=3]="Full",pt))(),ee=(()=>((ee=ee||{})[ee.Decimal=0]="Decimal",ee[ee.Group=1]="Group",ee[ee.List=2]="List",ee[ee.PercentSign=3]="PercentSign",ee[ee.PlusSign=4]="PlusSign",ee[ee.MinusSign=5]="MinusSign",ee[ee.Exponential=6]="Exponential",ee[ee.SuperscriptingExponent=7]="SuperscriptingExponent",ee[ee.PerMille=8]="PerMille",ee[ee.Infinity=9]="Infinity",ee[ee.NaN=10]="NaN",ee[ee.TimeSeparator=11]="TimeSeparator",ee[ee.CurrencyDecimal=12]="CurrencyDecimal",ee[ee.CurrencyGroup=13]="CurrencyGroup",ee))();function Ld(e,n){return _i(In(e)[j.DateFormat],n)}function Vd(e,n){return _i(In(e)[j.TimeFormat],n)}function Hd(e,n){return _i(In(e)[j.DateTimeFormat],n)}function mi(e,n){const t=In(e),i=t[j.NumberSymbols][n];if(typeof i>"u"){if(n===ee.CurrencyDecimal)return t[j.NumberSymbols][ee.Decimal];if(n===ee.CurrencyGroup)return t[j.NumberSymbols][ee.Group]}return i}function mC(e){if(!e[j.ExtraData])throw new Error(`Missing extra locale data for the locale "${e[j.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function _i(e,n){for(let t=n;t>-1;t--)if(typeof e[t]<"u")return e[t];throw new Error("Locale data API: locale data undefined")}function Mm(e){const[n,t]=e.split(":");return{hours:+n,minutes:+t}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const Ux=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,pc={},Gx=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;var Lt=(()=>((Lt=Lt||{})[Lt.Short=0]="Short",Lt[Lt.ShortGMT=1]="ShortGMT",Lt[Lt.Long=2]="Long",Lt[Lt.Extended=3]="Extended",Lt))(),ie=(()=>((ie=ie||{})[ie.FullYear=0]="FullYear",ie[ie.Month=1]="Month",ie[ie.Date=2]="Date",ie[ie.Hours=3]="Hours",ie[ie.Minutes=4]="Minutes",ie[ie.Seconds=5]="Seconds",ie[ie.FractionalSeconds=6]="FractionalSeconds",ie[ie.Day=7]="Day",ie))(),fe=(()=>((fe=fe||{})[fe.DayPeriods=0]="DayPeriods",fe[fe.Days=1]="Days",fe[fe.Months=2]="Months",fe[fe.Eras=3]="Eras",fe))();function Wx(e,n,t,i){let r=function eF(e){if(yC(e))return e;if("number"==typeof e&&!isNaN(e))return new Date(e);if("string"==typeof e){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){const[r,o=1,s=1]=e.split("-").map(a=>+a);return Bd(r,o-1,s)}const t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let i;if(i=e.match(Ux))return function tF(e){const n=new Date(0);let t=0,i=0;const r=e[8]?n.setUTCFullYear:n.setFullYear,o=e[8]?n.setUTCHours:n.setHours;e[9]&&(t=Number(e[9]+e[10]),i=Number(e[9]+e[11])),r.call(n,Number(e[1]),Number(e[2])-1,Number(e[3]));const s=Number(e[4]||0)-t,a=Number(e[5]||0)-i,l=Number(e[6]||0),u=Math.floor(1e3*parseFloat("0."+(e[7]||0)));return o.call(n,s,a,l,u),n}(i)}const n=new Date(e);if(!yC(n))throw new Error(`Unable to convert "${e}" into a date`);return n}(e);n=jr(t,n)||n;let a,s=[];for(;n;){if(a=Gx.exec(n),!a){s.push(n);break}{s=s.concat(a.slice(1));const f=s.pop();if(!f)break;n=f}}let l=r.getTimezoneOffset();i&&(l=vC(i,l),r=function Xx(e,n,t){const i=t?-1:1,r=e.getTimezoneOffset();return function Qx(e,n){return(e=new Date(e.getTime())).setMinutes(e.getMinutes()+n),e}(e,i*(vC(n,r)-r))}(r,i,!0));let u="";return s.forEach(f=>{const p=function Zx(e){if(Tm[e])return Tm[e];let n;switch(e){case"G":case"GG":case"GGG":n=Qe(fe.Eras,ve.Abbreviated);break;case"GGGG":n=Qe(fe.Eras,ve.Wide);break;case"GGGGG":n=Qe(fe.Eras,ve.Narrow);break;case"y":n=Ot(ie.FullYear,1,0,!1,!0);break;case"yy":n=Ot(ie.FullYear,2,0,!0,!0);break;case"yyy":n=Ot(ie.FullYear,3,0,!1,!0);break;case"yyyy":n=Ot(ie.FullYear,4,0,!1,!0);break;case"Y":n=Gd(1);break;case"YY":n=Gd(2,!0);break;case"YYY":n=Gd(3);break;case"YYYY":n=Gd(4);break;case"M":case"L":n=Ot(ie.Month,1,1);break;case"MM":case"LL":n=Ot(ie.Month,2,1);break;case"MMM":n=Qe(fe.Months,ve.Abbreviated);break;case"MMMM":n=Qe(fe.Months,ve.Wide);break;case"MMMMM":n=Qe(fe.Months,ve.Narrow);break;case"LLL":n=Qe(fe.Months,ve.Abbreviated,Mt.Standalone);break;case"LLLL":n=Qe(fe.Months,ve.Wide,Mt.Standalone);break;case"LLLLL":n=Qe(fe.Months,ve.Narrow,Mt.Standalone);break;case"w":n=Nm(1);break;case"ww":n=Nm(2);break;case"W":n=Nm(1,!0);break;case"d":n=Ot(ie.Date,1);break;case"dd":n=Ot(ie.Date,2);break;case"c":case"cc":n=Ot(ie.Day,1);break;case"ccc":n=Qe(fe.Days,ve.Abbreviated,Mt.Standalone);break;case"cccc":n=Qe(fe.Days,ve.Wide,Mt.Standalone);break;case"ccccc":n=Qe(fe.Days,ve.Narrow,Mt.Standalone);break;case"cccccc":n=Qe(fe.Days,ve.Short,Mt.Standalone);break;case"E":case"EE":case"EEE":n=Qe(fe.Days,ve.Abbreviated);break;case"EEEE":n=Qe(fe.Days,ve.Wide);break;case"EEEEE":n=Qe(fe.Days,ve.Narrow);break;case"EEEEEE":n=Qe(fe.Days,ve.Short);break;case"a":case"aa":case"aaa":n=Qe(fe.DayPeriods,ve.Abbreviated);break;case"aaaa":n=Qe(fe.DayPeriods,ve.Wide);break;case"aaaaa":n=Qe(fe.DayPeriods,ve.Narrow);break;case"b":case"bb":case"bbb":n=Qe(fe.DayPeriods,ve.Abbreviated,Mt.Standalone,!0);break;case"bbbb":n=Qe(fe.DayPeriods,ve.Wide,Mt.Standalone,!0);break;case"bbbbb":n=Qe(fe.DayPeriods,ve.Narrow,Mt.Standalone,!0);break;case"B":case"BB":case"BBB":n=Qe(fe.DayPeriods,ve.Abbreviated,Mt.Format,!0);break;case"BBBB":n=Qe(fe.DayPeriods,ve.Wide,Mt.Format,!0);break;case"BBBBB":n=Qe(fe.DayPeriods,ve.Narrow,Mt.Format,!0);break;case"h":n=Ot(ie.Hours,1,-12);break;case"hh":n=Ot(ie.Hours,2,-12);break;case"H":n=Ot(ie.Hours,1);break;case"HH":n=Ot(ie.Hours,2);break;case"m":n=Ot(ie.Minutes,1);break;case"mm":n=Ot(ie.Minutes,2);break;case"s":n=Ot(ie.Seconds,1);break;case"ss":n=Ot(ie.Seconds,2);break;case"S":n=Ot(ie.FractionalSeconds,1);break;case"SS":n=Ot(ie.FractionalSeconds,2);break;case"SSS":n=Ot(ie.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":n=$d(Lt.Short);break;case"ZZZZZ":n=$d(Lt.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":n=$d(Lt.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":n=$d(Lt.Long);break;default:return null}return Tm[e]=n,n}(f);u+=p?p(r,t,l):"''"===f?"'":f.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),u}function Bd(e,n,t){const i=new Date(0);return i.setFullYear(e,n,t),i.setHours(0,0,0),i}function jr(e,n){const t=function Ox(e){return In(e)[j.LocaleId]}(e);if(pc[t]=pc[t]||{},pc[t][n])return pc[t][n];let i="";switch(n){case"shortDate":i=Ld(e,pt.Short);break;case"mediumDate":i=Ld(e,pt.Medium);break;case"longDate":i=Ld(e,pt.Long);break;case"fullDate":i=Ld(e,pt.Full);break;case"shortTime":i=Vd(e,pt.Short);break;case"mediumTime":i=Vd(e,pt.Medium);break;case"longTime":i=Vd(e,pt.Long);break;case"fullTime":i=Vd(e,pt.Full);break;case"short":const r=jr(e,"shortTime"),o=jr(e,"shortDate");i=jd(Hd(e,pt.Short),[r,o]);break;case"medium":const s=jr(e,"mediumTime"),a=jr(e,"mediumDate");i=jd(Hd(e,pt.Medium),[s,a]);break;case"long":const l=jr(e,"longTime"),u=jr(e,"longDate");i=jd(Hd(e,pt.Long),[l,u]);break;case"full":const f=jr(e,"fullTime"),p=jr(e,"fullDate");i=jd(Hd(e,pt.Full),[f,p])}return i&&(pc[t][n]=i),i}function jd(e,n){return n&&(e=e.replace(/\{([^}]+)}/g,function(t,i){return null!=n&&i in n?n[i]:t})),e}function Ui(e,n,t="-",i,r){let o="";(e<0||r&&e<=0)&&(r?e=1-e:(e=-e,o=t));let s=String(e);for(;s.length0||a>-t)&&(a+=t),e===ie.Hours)0===a&&-12===t&&(a=12);else if(e===ie.FractionalSeconds)return function Kx(e,n){return Ui(e,3).substring(0,n)}(a,n);const l=mi(s,ee.MinusSign);return Ui(a,n,l,i,r)}}function Qe(e,n,t=Mt.Format,i=!1){return function(r,o){return function Yx(e,n,t,i,r,o){switch(t){case fe.Months:return function xx(e,n,t){const i=In(e),o=_i([i[j.MonthsFormat],i[j.MonthsStandalone]],n);return _i(o,t)}(n,r,i)[e.getMonth()];case fe.Days:return function Rx(e,n,t){const i=In(e),o=_i([i[j.DaysFormat],i[j.DaysStandalone]],n);return _i(o,t)}(n,r,i)[e.getDay()];case fe.DayPeriods:const s=e.getHours(),a=e.getMinutes();if(o){const u=function Vx(e){const n=In(e);return mC(n),(n[j.ExtraData][2]||[]).map(i=>"string"==typeof i?Mm(i):[Mm(i[0]),Mm(i[1])])}(n),f=function Hx(e,n,t){const i=In(e);mC(i);const o=_i([i[j.ExtraData][0],i[j.ExtraData][1]],n)||[];return _i(o,t)||[]}(n,r,i),p=u.findIndex(m=>{if(Array.isArray(m)){const[v,y]=m,D=s>=v.hours&&a>=v.minutes,w=s0?Math.floor(r/60):Math.ceil(r/60);switch(e){case Lt.Short:return(r>=0?"+":"")+Ui(s,2,o)+Ui(Math.abs(r%60),2,o);case Lt.ShortGMT:return"GMT"+(r>=0?"+":"")+Ui(s,1,o);case Lt.Long:return"GMT"+(r>=0?"+":"")+Ui(s,2,o)+":"+Ui(Math.abs(r%60),2,o);case Lt.Extended:return 0===i?"Z":(r>=0?"+":"")+Ui(s,2,o)+":"+Ui(Math.abs(r%60),2,o);default:throw new Error(`Unknown zone width "${e}"`)}}}function _C(e){return Bd(e.getFullYear(),e.getMonth(),e.getDate()+(4-e.getDay()))}function Nm(e,n=!1){return function(t,i){let r;if(n){const o=new Date(t.getFullYear(),t.getMonth(),1).getDay()-1,s=t.getDate();r=1+Math.floor((s+o)/7)}else{const o=_C(t),s=function Jx(e){const n=Bd(e,0,1).getDay();return Bd(e,0,1+(n<=4?4:11)-n)}(o.getFullYear()),a=o.getTime()-s.getTime();r=1+Math.round(a/6048e5)}return Ui(r,e,mi(i,ee.MinusSign))}}function Gd(e,n=!1){return function(t,i){return Ui(_C(t).getFullYear(),e,mi(i,ee.MinusSign),n)}}const Tm={};function vC(e,n){e=e.replace(/:/g,"");const t=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return isNaN(t)?n:t}function yC(e){return e instanceof Date&&!isNaN(e.valueOf())} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function wC(e,n){n=encodeURIComponent(n);for(const t of e.split(";")){const i=t.indexOf("="),[r,o]=-1==i?[t,""]:[t.slice(0,i),t.slice(i+1)];if(r.trim()===n)return decodeURIComponent(o)}return null} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let SC=(()=>{class e{constructor(t,i,r,o){this._iterableDiffers=t,this._keyValueDiffers=i,this._ngEl=r,this._renderer=o,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(Zl(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){const t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}}_applyKeyValueChanges(t){t.forEachAddedItem(i=>this._toggleClass(i.key,i.currentValue)),t.forEachChangedItem(i=>this._toggleClass(i.key,i.currentValue)),t.forEachRemovedItem(i=>{i.previousValue&&this._toggleClass(i.key,!1)})}_applyIterableChanges(t){t.forEachAddedItem(i=>{if("string"!=typeof i.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${Ve(i.item)}`);this._toggleClass(i.item,!0)}),t.forEachRemovedItem(i=>this._toggleClass(i.item,!1))}_applyClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(i=>this._toggleClass(i,!0)):Object.keys(t).forEach(i=>this._toggleClass(i,!!t[i])))}_removeClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(i=>this._toggleClass(i,!1)):Object.keys(t).forEach(i=>this._toggleClass(i,!1)))}_toggleClass(t,i){(t=t.trim())&&t.split(/\s+/g).forEach(r=>{i?this._renderer.addClass(this._ngEl.nativeElement,r):this._renderer.removeClass(this._ngEl.nativeElement,r)})}}return e.\u0275fac=function(t){return new(t||e)(C(Fd),C(hc),C(Ze),C(pi))},e.\u0275dir=H({type:e,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class pF{constructor(n,t,i,r){this.$implicit=n,this.ngForOf=t,this.index=i,this.count=r}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let ka=(()=>{class e{constructor(t,i,r){this._viewContainer=t,this._template=i,this._differs=r,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const t=this._ngForOf;!this._differ&&t&&(this._differ=this._differs.find(t).create(this.ngForTrackBy))}if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const i=this._viewContainer;t.forEachOperation((r,o,s)=>{if(null==r.previousIndex)i.createEmbeddedView(this._template,new pF(r.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===o?void 0:o);else if(null!==o){const a=i.get(o);i.move(a,s),NC(a,r)}});for(let r=0,o=i.length;r{NC(i.get(r.currentIndex),r)})}static ngTemplateContextGuard(t,i){return!0}}return e.\u0275fac=function(t){return new(t||e)(C(Bi),C(bt),C(Fd))},e.\u0275dir=H({type:e,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0}),e})();function NC(e,n){e.context.$implicit=n.item} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let ns=(()=>{class e{constructor(t,i){this._viewContainer=t,this._context=new mF,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=i}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){TC("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){TC("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(t,i){return!0}}return e.\u0275fac=function(t){return new(t||e)(C(Bi),C(bt))},e.\u0275dir=H({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),e})();class mF{constructor(){this.$implicit=null,this.ngIf=null}}function TC(e,n){if(n&&!n.createEmbeddedView)throw new Error(`${e} must be a TemplateRef, but received '${Ve(n)}'.`)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const IF=new q("DATE_PIPE_DEFAULT_TIMEZONE");let IC=(()=>{class e{constructor(t,i){this.locale=t,this.defaultTimezone=i}transform(t,i="mediumDate",r,o){if(null==t||""===t||t!=t)return null;try{return Wx(t,i,o||this.locale,r??this.defaultTimezone??void 0)}catch(s){ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -throw function Gi(e,n){return new P(2100,!1)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */()}}}return e.\u0275fac=function(t){return new(t||e)(C(Pr,16),C(IF,24))},e.\u0275pipe=$t({name:"date",type:e,pure:!0,standalone:!0}),e})(),ei=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const kC="browser"; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let GF=(()=>{class e{}return e.\u0275prov=G({token:e,providedIn:"root",factory:()=>new WF(L(Dt),window)}),e})();class WF{constructor(n,t){this.document=n,this.window=t,this.offset=()=>[0,0]}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(n){this.supportsScrolling()&&this.window.scrollTo(n[0],n[1])}scrollToAnchor(n){if(!this.supportsScrolling())return;const t=function KF(e,n){const t=e.getElementById(n)||e.getElementsByName(n)[0];if(t)return t;if("function"==typeof e.createTreeWalker&&e.body&&(e.body.createShadowRoot||e.body.attachShadow)){const i=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT);let r=i.currentNode;for(;r;){const o=r.shadowRoot;if(o){const s=o.getElementById(n)||o.querySelector(`[name="${n}"]`);if(s)return s}r=i.nextNode()}}return null}(this.document,n);t&&(this.scrollToElement(t),t.focus())}setHistoryScrollRestoration(n){if(this.supportScrollRestoration()){const t=this.window.history;t&&t.scrollRestoration&&(t.scrollRestoration=n)}}scrollToElement(n){const t=n.getBoundingClientRect(),i=t.left+this.window.pageXOffset,r=t.top+this.window.pageYOffset,o=this.offset();this.window.scrollTo(i-o[0],r-o[1])}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const n=xC(this.window.history)||xC(Object.getPrototypeOf(this.window.history));return!(!n||!n.writable&&!n.set)}catch{return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch{return!1}}}function xC(e){return Object.getOwnPropertyDescriptor(e,"scrollRestoration")} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class FC{} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class Bm extends -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license Angular v14.2.9 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class uP extends class Sx{}{constructor(){super(...arguments),this.supportsDOMEvents=!0}}{static makeCurrent(){!function wx(e){Pd||(Pd=e)}(new Bm)}onAndCancel(n,t,i){return n.addEventListener(t,i,!1),()=>{n.removeEventListener(t,i,!1)}}dispatchEvent(n,t){n.dispatchEvent(t)}remove(n){n.parentNode&&n.parentNode.removeChild(n)}createElement(n,t){return(t=t||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,t){return"window"===t?window:"document"===t?n:"body"===t?n.body:null}getBaseHref(n){const t=function dP(){return vc=vc||document.querySelector("base"),vc?vc.getAttribute("href"):null}();return null==t?null:function fP(e){zd=zd||document.createElement("a"),zd.setAttribute("href",e);const n=zd.pathname;return"/"===n.charAt(0)?n:`/${n}`} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(t)}resetBaseElement(){vc=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return wC(document.cookie,n)}}let zd,vc=null;const HC=new q("TRANSITION_ID"),pP=[{provide:Ad,useFactory:function hP(e,n,t){return()=>{t.get(Id).donePromise.then(()=>{const i=lr(),r=n.querySelectorAll(`style[ng-transition="${e}"]`);for(let o=0;o{class e{build(){return new XMLHttpRequest}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const Yd=new q("EventManagerPlugins");let qd=(()=>{class e{constructor(t,i){this._zone=i,this._eventNameToPlugin=new Map,t.forEach(r=>r.manager=this),this._plugins=t.slice().reverse()}addEventListener(t,i,r){return this._findPluginFor(i).addEventListener(t,i,r)}addGlobalEventListener(t,i,r){return this._findPluginFor(i).addGlobalEventListener(t,i,r)}getZone(){return this._zone}_findPluginFor(t){const i=this._eventNameToPlugin.get(t);if(i)return i;const r=this._plugins;for(let o=0;o{class e{constructor(){this._stylesSet=new Set}addStyles(t){const i=new Set;t.forEach(r=>{this._stylesSet.has(r)||(this._stylesSet.add(r),i.add(r))}),this.onStylesAdded(i)}onStylesAdded(t){}getAllStyles(){return Array.from(this._stylesSet)}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(),yc=(()=>{class e extends jC{constructor(t){super(),this._doc=t,this._hostNodes=new Map,this._hostNodes.set(t.head,[])}_addStylesToHost(t,i,r){t.forEach(o=>{const s=this._doc.createElement("style");s.textContent=o,r.push(i.appendChild(s))})}addHost(t){const i=[];this._addStylesToHost(this._stylesSet,t,i),this._hostNodes.set(t,i)}removeHost(t){const i=this._hostNodes.get(t);i&&i.forEach($C),this._hostNodes.delete(t)}onStylesAdded(t){this._hostNodes.forEach((i,r)=>{this._addStylesToHost(t,r,i)})}ngOnDestroy(){this._hostNodes.forEach(t=>t.forEach($C))}}return e.\u0275fac=function(t){return new(t||e)(L(Dt))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})();function $C(e){lr().remove(e)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const jm={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},$m=/%COMP%/g;function Jd(e,n,t){for(let i=0;i{if("__ngUnwrap__"===n)return e;!1===e(n)&&(n.preventDefault(),n.returnValue=!1)}}let Um=(()=>{class e{constructor(t,i,r){this.eventManager=t,this.sharedStylesHost=i,this.appId=r,this.rendererByCompId=new Map,this.defaultRenderer=new Gm(t)}createRenderer(t,i){if(!t||!i)return this.defaultRenderer;switch(i.encapsulation){case ai.Emulated:{let r=this.rendererByCompId.get(i.id);return r||(r=new CP(this.eventManager,this.sharedStylesHost,i,this.appId),this.rendererByCompId.set(i.id,r)),r.applyToHost(t),r}case 1:case ai.ShadowDom:return new wP(this.eventManager,this.sharedStylesHost,t,i);default:if(!this.rendererByCompId.has(i.id)){const r=Jd(i.id,i.styles,[]);this.sharedStylesHost.addStyles(r),this.rendererByCompId.set(i.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return e.\u0275fac=function(t){return new(t||e)(L(qd),L(yc),L(uc))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})();class Gm{constructor(n){this.eventManager=n,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(n,t){return t?document.createElementNS(jm[t]||t,n):document.createElement(n)}createComment(n){return document.createComment(n)}createText(n){return document.createTextNode(n)}appendChild(n,t){(zC(n)?n.content:n).appendChild(t)}insertBefore(n,t,i){n&&(zC(n)?n.content:n).insertBefore(t,i)}removeChild(n,t){n&&n.removeChild(t)}selectRootElement(n,t){let i="string"==typeof n?document.querySelector(n):n;if(!i)throw new Error(`The selector "${n}" did not match any elements`);return t||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,t,i,r){if(r){t=r+":"+t;const o=jm[r];o?n.setAttributeNS(o,t,i):n.setAttribute(t,i)}else n.setAttribute(t,i)}removeAttribute(n,t,i){if(i){const r=jm[i];r?n.removeAttributeNS(r,t):n.removeAttribute(`${i}:${t}`)}else n.removeAttribute(t)}addClass(n,t){n.classList.add(t)}removeClass(n,t){n.classList.remove(t)}setStyle(n,t,i,r){r&(Un.DashCase|Un.Important)?n.style.setProperty(t,i,r&Un.Important?"important":""):n.style[t]=i}removeStyle(n,t,i){i&Un.DashCase?n.style.removeProperty(t):n.style[t]=""}setProperty(n,t,i){n[t]=i}setValue(n,t){n.nodeValue=t}listen(n,t,i){return"string"==typeof n?this.eventManager.addGlobalEventListener(n,t,WC(i)):this.eventManager.addEventListener(n,t,WC(i))}}function zC(e){return"TEMPLATE"===e.tagName&&void 0!==e.content}class CP extends Gm{constructor(n,t,i,r){super(n),this.component=i;const o=Jd(r+"-"+i.id,i.styles,[]);t.addStyles(o),this.contentAttr=function yP(e){return"_ngcontent-%COMP%".replace($m,e)}(r+"-"+i.id),this.hostAttr=function bP(e){return"_nghost-%COMP%".replace($m,e)}(r+"-"+i.id)}applyToHost(n){super.setAttribute(n,this.hostAttr,"")}createElement(n,t){const i=super.createElement(n,t);return super.setAttribute(i,this.contentAttr,""),i}}class wP extends Gm{constructor(n,t,i,r){super(n),this.sharedStylesHost=t,this.hostEl=i,this.shadowRoot=i.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const o=Jd(r.id,r.styles,[]);for(let s=0;s{class e extends BC{constructor(t){super(t)}supports(t){return!0}addEventListener(t,i,r){return t.addEventListener(i,r,!1),()=>this.removeEventListener(t,i,r)}removeEventListener(t,i,r){return t.removeEventListener(i,r)}}return e.\u0275fac=function(t){return new(t||e)(L(Dt))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const YC=["alt","control","meta","shift"],EP={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},MP={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let NP=(()=>{class e extends BC{constructor(t){super(t)}supports(t){return null!=e.parseEventName(t)}addEventListener(t,i,r){const o=e.parseEventName(i),s=e.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>lr().onAndCancel(t,o.domEventName,s))}static parseEventName(t){const i=t.toLowerCase().split("."),r=i.shift();if(0===i.length||"keydown"!==r&&"keyup"!==r)return null;const o=e._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),YC.forEach(u=>{const f=i.indexOf(u);f>-1&&(i.splice(f,1),s+=u+".")}),s+=o,0!=i.length||0===o.length)return null;const l={};return l.domEventName=r,l.fullKey=s,l}static matchEventFullKeyCode(t,i){let r=EP[t.key]||t.key,o="";return i.indexOf("code.")>-1&&(r=t.code,o="code."),!(null==r||!r)&&(r=r.toLowerCase()," "===r?r="space":"."===r&&(r="dot"),YC.forEach(s=>{s!==r&&(0,MP[s])(t)&&(o+=s+".")}),o+=r,o===i)}static eventCallback(t,i,r){return o=>{e.matchEventFullKeyCode(o,t)&&r.runGuarded(()=>i(o))}}static _normalizeKey(t){return"esc"===t?"escape":t}}return e.\u0275fac=function(t){return new(t||e)(L(Dt))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const OP=G1(bx,"browser",[{provide:dc,useValue:kC},{provide:x1,useValue:function TP(){Bm.makeCurrent()},multi:!0},{provide:Dt,useFactory:function IP(){return function WN(e){yp=e}(document),document},deps:[]}]),ZC=new q(""),QC=[{provide:Od,useClass: -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class gP{addToWindow(n){We.getAngularTestability=(i,r=!0)=>{const o=n.findTestabilityInTree(i,r);if(null==o)throw new Error("Could not find testability for element.");return o},We.getAllAngularTestabilities=()=>n.getAllTestabilities(),We.getAllAngularRootElements=()=>n.getAllRootElements(),We.frameworkStabilizers||(We.frameworkStabilizers=[]),We.frameworkStabilizers.push(i=>{const r=We.getAllAngularTestabilities();let o=r.length,s=!1;const a=function(l){s=s||l,o--,0==o&&i(s)};r.forEach(function(l){l.whenStable(a)})})}findTestabilityInTree(n,t,i){return null==t?null:n.getTestability(t)??(i?lr().isShadowRoot(t)?this.findTestabilityInTree(n,t.host,!0):this.findTestabilityInTree(n,t.parentElement,!0):null)}},deps:[]},{provide:B1,useClass:fm,deps:[ze,hm,Od]},{provide:fm,useClass:fm,deps:[ze,hm,Od]}],XC=[{provide:Ip,useValue:"root"},{provide:da,useFactory:function AP(){return new da},deps:[]},{provide:Yd,useClass:SP,multi:!0,deps:[Dt,ze,dc]},{provide:Yd,useClass:NP,multi:!0,deps:[Dt]},{provide:Um,useClass:Um,deps:[qd,yc,uc]},{provide:xp,useExisting:Um},{provide:jC,useExisting:yc},{provide:yc,useClass:yc,deps:[Dt]},{provide:qd,useClass:qd,deps:[Yd,ze]},{provide:FC,useClass:mP,deps:[]},[]];let kP=(()=>{class e{constructor(t){}static withServerTransition(t){return{ngModule:e,providers:[{provide:uc,useValue:t.appId},{provide:HC,useExisting:uc},pP]}}}return e.\u0275fac=function(t){return new(t||e)(L(ZC,12))},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({providers:[...XC,...QC],imports:[ei,Dx]}),e})(),ew=(()=>{class e{constructor(t){this._doc=t}getTitle(){return this._doc.title}setTitle(t){this._doc.title=t||""}}return e.\u0275fac=function(t){return new(t||e)(L(Dt))},e.\u0275prov=G({token:e,factory:function(t){let i=null;return i=t?new t: -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function xP(){return new ew(L(Dt))}(),i},providedIn:"root"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function Z(...e){return gt(e,en(e))}typeof window<"u"&&window;class zt extends Ue{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const t=super._subscribe(n);return!t.closed&&n.next(this._value),t}getValue(){const{hasError:n,thrownError:t,_value:i}=this;if(n)throw t;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}const bc=V(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}),{isArray:$P}=Array,{getPrototypeOf:UP,prototype:GP,keys:WP}=Object;function iw(e){if(1===e.length){const n=e[0];if($P(n))return{args:n,keys:null};if(function KP(e){return e&&"object"==typeof e&&UP(e)===GP}(n)){const t=WP(n);return{args:t.map(i=>n[i]),keys:t}}}return{args:e,keys:null}}const{isArray:zP}=Array;function zm(e){return ne(n=>function YP(e,n){return zP(n)?e(...n):e(n)}(e,n))}function rw(e,n){return e.reduce((t,i,r)=>(t[i]=n[r],t),{})}function Zd(...e){const n=en(e),t=rt(e),{args:i,keys:r}=iw(e);if(0===i.length)return gt([],n);const o=new je(function qP(e,n,t=xn){return i=>{ow(n,()=>{const{length:r}=e,o=new Array(r);let s=r,a=r;for(let l=0;l{const u=gt(e[l],n);let f=!1;u.subscribe(ke(i,p=>{o[l]=p,f||(f=!0,a--),a||i.next(t(o.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,r?s=>rw(r,s):xn));return t?o.pipe(zm(t)):o}function ow(e,n,t){e?wi(t,e,n):n()}function Dc(...e){return function JP(){return Se(1)}()(gt(e,en(e)))}function sw(e){return new je(n=>{ut(e()).subscribe(n)})}function Ra(e,n){const t=ye(e)?e:()=>e,i=r=>r.error(t());return new je(n?r=>n.schedule(i,0,r):i)}function Ym(){return qe((e,n)=>{let t=null;e._refCount++;const i=ke(n,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount)return void(t=null);const r=e._connection,o=t;t=null,r&&(!o||r===o)&&r.unsubscribe(),n.unsubscribe()});e.subscribe(i),i.closed||(t=e.connect())})}class aw extends je{constructor(n,t){super(),this.source=n,this.subjectFactory=t,this._subject=null,this._refCount=0,this._connection=null,z(n)&&(this.lift=n.lift)}_subscribe(n){return this.getSubject().subscribe(n)}getSubject(){const n=this._subject;return(!n||n.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:n}=this;this._subject=this._connection=null,n?.unsubscribe()}connect(){let n=this._connection;if(!n){n=this._connection=new Ct;const t=this.getSubject();n.add(this.source.subscribe(ke(t,void 0,()=>{this._teardown(),t.complete()},i=>{this._teardown(),t.error(i)},()=>this._teardown()))),n.closed&&(this._connection=null,n=Ct.EMPTY)}return n}refCount(){return Ym()(this)}}function vi(e,n){return qe((t,i)=>{let r=null,o=0,s=!1;const a=()=>s&&!r&&i.complete();t.subscribe(ke(i,l=>{r?.unsubscribe();let u=0;const f=o++;ut(e(l,f)).subscribe(r=ke(i,p=>i.next(n?n(l,p,f,u++):p),()=>{r=null,a()}))},()=>{s=!0,a()}))})}function sn(e){return e<=0?()=>Xt:qe((n,t)=>{let i=0;n.subscribe(ke(t,r=>{++i<=e&&(t.next(r),e<=i&&t.complete())}))})}function vn(e,n){return qe((t,i)=>{let r=0;t.subscribe(ke(i,o=>e.call(n,o,r++)&&i.next(o)))})}function Xd(e){return qe((n,t)=>{let i=!1;n.subscribe(ke(t,r=>{i=!0,t.next(r)},()=>{i||t.next(e),t.complete()}))})}function lw(e=ZP){return qe((n,t)=>{let i=!1;n.subscribe(ke(t,r=>{i=!0,t.next(r)},()=>i?t.complete():t.error(e())))})}function ZP(){return new bc}function mo(e,n){const t=arguments.length>=2;return i=>i.pipe(e?vn((r,o)=>e(r,o,i)):xn,sn(1),t?Xd(n):lw(()=>new bc))}function _o(e,n){return ye(n)?dt(e,n,1):dt(e,1)}function Yt(e,n,t){const i=ye(e)||n||t?{next:e,error:n,complete:t}:e;return i?qe((r,o)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;r.subscribe(ke(o,l=>{var u;null===(u=i.next)||void 0===u||u.call(i,l),o.next(l)},()=>{var l;a=!1,null===(l=i.complete)||void 0===l||l.call(i),o.complete()},l=>{var u;a=!1,null===(u=i.error)||void 0===u||u.call(i,l),o.error(l)},()=>{var l,u;a&&(null===(l=i.unsubscribe)||void 0===l||l.call(i)),null===(u=i.finalize)||void 0===u||u.call(i)}))}):xn}function $r(e){return qe((n,t)=>{let o,i=null,r=!1;i=n.subscribe(ke(t,void 0,void 0,s=>{o=ut(e(s,$r(e)(n))),i?(i.unsubscribe(),i=null,o.subscribe(t)):r=!0})),r&&(i.unsubscribe(),i=null,o.subscribe(t))})}function QP(e,n,t,i,r){return(o,s)=>{let a=t,l=n,u=0;o.subscribe(ke(s,f=>{const p=u++;l=a?e(l,f,p):(a=!0,f),i&&s.next(l)},r&&(()=>{a&&s.next(l),s.complete()})))}}function cw(e,n){return qe(QP(e,n,arguments.length>=2,!0))}function qm(e){return e<=0?()=>Xt:qe((n,t)=>{let i=[];n.subscribe(ke(t,r=>{i.push(r),e{for(const r of i)t.next(r);t.complete()},void 0,()=>{i=null}))})}function uw(e,n){const t=arguments.length>=2;return i=>i.pipe(e?vn((r,o)=>e(r,o,i)):xn,qm(1),t?Xd(n):lw(()=>new bc))}function Jm(e){return qe((n,t)=>{try{n.subscribe(t)}finally{t.add(e)}})} -/** - * @license Angular v14.2.9 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const pe="primary",Cc=Symbol("RouteTitle");class eL{constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const t=this.params[n];return Array.isArray(t)?t[0]:t}return null}getAll(n){if(this.has(n)){const t=this.params[n];return Array.isArray(t)?t:[t]}return[]}get keys(){return Object.keys(this.params)}}function xa(e){return new eL(e)}function tL(e,n,t){const i=t.path.split("/");if(i.length>e.length||"full"===t.pathMatch&&(n.hasChildren()||i.lengthi[o]===r)}return e===n}function hw(e){return Array.prototype.concat.apply([],e)}function pw(e){return e.length>0?e[e.length-1]:null}function an(e,n){for(const t in e)e.hasOwnProperty(t)&&n(e[t],t)}function vo(e){return xg(e)?e:Xl(e)?gt(Promise.resolve(e)):Z(e)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const rL={exact:function _w(e,n,t){if(!rs(e.segments,n.segments)||!ef(e.segments,n.segments,t)||e.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!e.children[i]||!_w(e.children[i],n.children[i],t))return!1;return!0},subset:vw},gw={exact:function oL(e,n){return cr(e,n)},subset:function sL(e,n){return Object.keys(n).length<=Object.keys(e).length&&Object.keys(n).every(t=>fw(e[t],n[t]))},ignored:()=>!0};function mw(e,n,t){return rL[t.paths](e.root,n.root,t.matrixParams)&&gw[t.queryParams](e.queryParams,n.queryParams)&&!("exact"===t.fragment&&e.fragment!==n.fragment)}function vw(e,n,t){return yw(e,n,n.segments,t)}function yw(e,n,t,i){if(e.segments.length>t.length){const r=e.segments.slice(0,t.length);return!(!rs(r,t)||n.hasChildren()||!ef(r,t,i))}if(e.segments.length===t.length){if(!rs(e.segments,t)||!ef(e.segments,t,i))return!1;for(const r in n.children)if(!e.children[r]||!vw(e.children[r],n.children[r],i))return!1;return!0}{const r=t.slice(0,e.segments.length),o=t.slice(e.segments.length);return!!(rs(e.segments,r)&&ef(e.segments,r,i)&&e.children[pe])&&yw(e.children[pe],n,o,i)}}function ef(e,n,t){return n.every((i,r)=>gw[t](e[r].parameters,i.parameters))}class is{constructor(n,t,i){this.root=n,this.queryParams=t,this.fragment=i}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=xa(this.queryParams)),this._queryParamMap}toString(){return cL.serialize(this)}}class me{constructor(n,t){this.segments=n,this.children=t,this.parent=null,an(t,(i,r)=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return tf(this)}}class wc{constructor(n,t){this.path=n,this.parameters=t}get parameterMap(){return this._parameterMap||(this._parameterMap=xa(this.parameters)),this._parameterMap}toString(){return ww(this)}}function rs(e,n){return e.length===n.length&&e.every((t,i)=>t.path===n[i].path)}let bw=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:function(){return new Qm},providedIn:"root"}),e})();class Qm{parse(n){const t=new vL(n);return new is(t.parseRootSegment(),t.parseQueryParams(),t.parseFragment())}serialize(n){const t=`/${Sc(n.root,!0)}`,i=function fL(e){const n=Object.keys(e).map(t=>{const i=e[t];return Array.isArray(i)?i.map(r=>`${nf(t)}=${nf(r)}`).join("&"):`${nf(t)}=${nf(i)}`}).filter(t=>!!t);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${t}${i}${"string"==typeof n.fragment?`#${function uL(e){return encodeURI(e)}(n.fragment)}`:""}`}}const cL=new Qm;function tf(e){return e.segments.map(n=>ww(n)).join("/")}function Sc(e,n){if(!e.hasChildren())return tf(e);if(n){const t=e.children[pe]?Sc(e.children[pe],!1):"",i=[];return an(e.children,(r,o)=>{o!==pe&&i.push(`${o}:${Sc(r,!1)}`)}),i.length>0?`${t}(${i.join("//")})`:t}{const t=function lL(e,n){let t=[];return an(e.children,(i,r)=>{r===pe&&(t=t.concat(n(i,r)))}),an(e.children,(i,r)=>{r!==pe&&(t=t.concat(n(i,r)))}),t}(e,(i,r)=>r===pe?[Sc(e.children[pe],!1)]:[`${r}:${Sc(i,!1)}`]);return 1===Object.keys(e.children).length&&null!=e.children[pe]?`${tf(e)}/${t[0]}`:`${tf(e)}/(${t.join("//")})`}}function Dw(e){return encodeURIComponent(e).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function nf(e){return Dw(e).replace(/%3B/gi,";")}function Xm(e){return Dw(e).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function rf(e){return decodeURIComponent(e)}function Cw(e){return rf(e.replace(/\+/g,"%20"))}function ww(e){return`${Xm(e.path)}${function dL(e){return Object.keys(e).map(n=>`;${Xm(n)}=${Xm(e[n])}`).join("")}(e.parameters)}`}const hL=/^[^\/()?;=#]+/;function sf(e){const n=e.match(hL);return n?n[0]:""}const pL=/^[^=?&#]+/,mL=/^[^&#]+/;class vL{constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new me([],{}):new me([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let t={};this.peekStartsWith("/(")&&(this.capture("/"),t=this.parseParens(!0));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1)),(n.length>0||Object.keys(t).length>0)&&(i[pe]=new me(n,t)),i}parseSegment(){const n=sf(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new P(4009,!1);return this.capture(n),new wc(rf(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const t=sf(this.remaining);if(!t)return;this.capture(t);let i="";if(this.consumeOptional("=")){const r=sf(this.remaining);r&&(i=r,this.capture(i))}n[rf(t)]=rf(i)}parseQueryParam(n){const t=function gL(e){const n=e.match(pL);return n?n[0]:""}(this.remaining);if(!t)return;this.capture(t);let i="";if(this.consumeOptional("=")){const s=function _L(e){const n=e.match(mL);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const r=Cw(t),o=Cw(i);if(n.hasOwnProperty(r)){let s=n[r];Array.isArray(s)||(s=[s],n[r]=s),s.push(o)}else n[r]=o}parseParens(n){const t={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const i=sf(this.remaining),r=this.remaining[i.length];if("/"!==r&&")"!==r&&";"!==r)throw new P(4010,!1);let o;i.indexOf(":")>-1?(o=i.slice(0,i.indexOf(":")),this.capture(o),this.capture(":")):n&&(o=pe);const s=this.parseChildren();t[o]=1===Object.keys(s).length?s[pe]:new me([],s),this.consumeOptional("//")}return t}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new P(4011,!1)}}function e_(e){return e.segments.length>0?new me([],{[pe]:e}):e}function af(e){const n={};for(const i of Object.keys(e.children)){const o=af(e.children[i]);(o.segments.length>0||o.hasChildren())&&(n[i]=o)}return function yL(e){if(1===e.numberOfChildren&&e.children[pe]){const n=e.children[pe];return new me(e.segments.concat(n.segments),n.children)}return e}(new me(e.segments,n))}function os(e){return e instanceof is} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function CL(e,n,t,i,r){if(0===t.length)return Fa(n.root,n.root,n.root,i,r);const o=function Mw(e){if("string"==typeof e[0]&&1===e.length&&"/"===e[0])return new Ew(!0,0,e);let n=0,t=!1;const i=e.reduce((r,o,s)=>{if("object"==typeof o&&null!=o){if(o.outlets){const a={};return an(o.outlets,(l,u)=>{a[u]="string"==typeof l?l.split("/"):l}),[...r,{outlets:a}]}if(o.segmentPath)return[...r,o.segmentPath]}return"string"!=typeof o?[...r,o]:0===s?(o.split("/").forEach((a,l)=>{0==l&&"."===a||(0==l&&""===a?t=!0:".."===a?n++:""!=a&&r.push(a))}),r):[...r,o]},[]);return new Ew(t,n,i)}(t);return o.toRoot()?Fa(n.root,n.root,new me([],{}),i,r):function s(l){const u=function SL(e,n,t,i){if(e.isAbsolute)return new Pa(n.root,!0,0);if(-1===i)return new Pa(t,t===n.root,0);return function Nw(e,n,t){let i=e,r=n,o=t;for(;o>r;){if(o-=r,i=i.parent,!i)throw new P(4005,!1);r=i.segments.length}return new Pa(i,!1,r-o)}(t,i+(Ec(e.commands[0])?0:1),e.numberOfDoubleDots)}(o,n,e.snapshot?._urlSegment,l),f=u.processChildren?Nc(u.segmentGroup,u.index,o.commands):n_(u.segmentGroup,u.index,o.commands);return Fa(n.root,u.segmentGroup,f,i,r)}(e.snapshot?._lastPathIndex)}function Ec(e){return"object"==typeof e&&null!=e&&!e.outlets&&!e.segmentPath}function Mc(e){return"object"==typeof e&&null!=e&&e.outlets}function Fa(e,n,t,i,r){let s,o={};i&&an(i,(l,u)=>{o[u]=Array.isArray(l)?l.map(f=>`${f}`):`${l}`}),s=e===n?t:Sw(e,n,t);const a=e_(af(s));return new is(a,o,r)}function Sw(e,n,t){const i={};return an(e.children,(r,o)=>{i[o]=r===n?t:Sw(r,n,t)}),new me(e.segments,i)}class Ew{constructor(n,t,i){if(this.isAbsolute=n,this.numberOfDoubleDots=t,this.commands=i,n&&i.length>0&&Ec(i[0]))throw new P(4003,!1);const r=i.find(Mc);if(r&&r!==pw(i))throw new P(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Pa{constructor(n,t,i){this.segmentGroup=n,this.processChildren=t,this.index=i}}function n_(e,n,t){if(e||(e=new me([],{})),0===e.segments.length&&e.hasChildren())return Nc(e,n,t);const i=function ML(e,n,t){let i=0,r=n;const o={match:!1,pathIndex:0,commandIndex:0};for(;r=t.length)return o;const s=e.segments[r],a=t[i];if(Mc(a))break;const l=`${a}`,u=i0&&void 0===l)break;if(l&&u&&"object"==typeof u&&void 0===u.outlets){if(!Aw(l,u,s))return o;i+=2}else{if(!Aw(l,{},s))return o;i++}r++}return{match:!0,pathIndex:r,commandIndex:i}}(e,n,t),r=t.slice(i.commandIndex);if(i.match&&i.pathIndex{"string"==typeof o&&(o=[o]),null!==o&&(r[s]=n_(e.children[s],n,o))}),an(e.children,(o,s)=>{void 0===i[s]&&(r[s]=o)}),new me(e.segments,r)}}function i_(e,n,t){const i=e.segments.slice(0,n);let r=0;for(;r{"string"==typeof t&&(t=[t]),null!==t&&(n[i]=i_(new me([],{}),0,t))}),n}function Tw(e){const n={};return an(e,(t,i)=>n[i]=`${t}`),n}function Aw(e,n,t){return e==t.path&&cr(n,t.parameters)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class Ur{constructor(n,t){this.id=n,this.url=t}}class r_ extends Ur{constructor(n,t,i="imperative",r=null){super(n,t),this.type=0,this.navigationTrigger=i,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class ss extends Ur{constructor(n,t,i){super(n,t),this.urlAfterRedirects=i,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class lf extends Ur{constructor(n,t,i,r){super(n,t),this.reason=i,this.code=r,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Iw extends Ur{constructor(n,t,i,r){super(n,t),this.error=i,this.target=r,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class TL extends Ur{constructor(n,t,i,r){super(n,t),this.urlAfterRedirects=i,this.state=r,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class AL extends Ur{constructor(n,t,i,r){super(n,t),this.urlAfterRedirects=i,this.state=r,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class IL extends Ur{constructor(n,t,i,r,o){super(n,t),this.urlAfterRedirects=i,this.state=r,this.shouldActivate=o,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class OL extends Ur{constructor(n,t,i,r){super(n,t),this.urlAfterRedirects=i,this.state=r,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class kL extends Ur{constructor(n,t,i,r){super(n,t),this.urlAfterRedirects=i,this.state=r,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class RL{constructor(n){this.route=n,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class xL{constructor(n){this.route=n,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class FL{constructor(n){this.snapshot=n,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class PL{constructor(n){this.snapshot=n,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class LL{constructor(n){this.snapshot=n,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class VL{constructor(n){this.snapshot=n,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Ow{constructor(n,t,i){this.routerEvent=n,this.position=t,this.anchor=i,this.type=15}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class kw{constructor(n){this._root=n}get root(){return this._root.value}parent(n){const t=this.pathFromRoot(n);return t.length>1?t[t.length-2]:null}children(n){const t=o_(n,this._root);return t?t.children.map(i=>i.value):[]}firstChild(n){const t=o_(n,this._root);return t&&t.children.length>0?t.children[0].value:null}siblings(n){const t=s_(n,this._root);return t.length<2?[]:t[t.length-2].children.map(r=>r.value).filter(r=>r!==n)}pathFromRoot(n){return s_(n,this._root).map(t=>t.value)}}function o_(e,n){if(e===n.value)return n;for(const t of n.children){const i=o_(e,t);if(i)return i}return null}function s_(e,n){if(e===n.value)return[n];for(const t of n.children){const i=s_(e,t);if(i.length)return i.unshift(n),i}return[]}class Gr{constructor(n,t){this.value=n,this.children=t}toString(){return`TreeNode(${this.value})`}}function La(e){const n={};return e&&e.children.forEach(t=>n[t.value.outlet]=t),n -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */}class Rw extends kw{constructor(n,t){super(n),this.snapshot=t,a_(this,n)}toString(){return this.snapshot.toString()}}function xw(e,n){const t=function BL(e,n){const s=new cf([],{},{},"",{},pe,n,null,e.root,-1,{});return new Pw("",new Gr(s,[]))}(e,n),i=new zt([new wc("",{})]),r=new zt({}),o=new zt({}),s=new zt({}),a=new zt(""),l=new as(i,r,s,a,o,pe,n,t.root);return l.snapshot=t.root,new Rw(new Gr(l,[]),t)}class as{constructor(n,t,i,r,o,s,a,l){this.url=n,this.params=t,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.title=this.data?.pipe(ne(u=>u[Cc]))??Z(void 0),this._futureSnapshot=l}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(ne(n=>xa(n)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(ne(n=>xa(n)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Fw(e,n="emptyOnly"){const t=e.pathFromRoot;let i=0;if("always"!==n)for(i=t.length-1;i>=1;){const r=t[i],o=t[i-1];if(r.routeConfig&&""===r.routeConfig.path)i--;else{if(o.component)break;i--}}return function jL(e){return e.reduce((n,t)=>({params:{...n.params,...t.params},data:{...n.data,...t.data},resolve:{...t.data,...n.resolve,...t.routeConfig?.data,...t._resolvedData}}),{params:{},data:{},resolve:{}})}(t.slice(i))}class cf{constructor(n,t,i,r,o,s,a,l,u,f,p,m){this.url=n,this.params=t,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.title=this.data?.[Cc],this.routeConfig=l,this._urlSegment=u,this._lastPathIndex=f,this._correctedLastPathIndex=m??f,this._resolve=p}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=xa(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=xa(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Pw extends kw{constructor(n,t){super(t),this.url=n,a_(this,t)}toString(){return Lw(this._root)}}function a_(e,n){n.value._routerState=e,n.children.forEach(t=>a_(e,t))}function Lw(e){const n=e.children.length>0?` { ${e.children.map(Lw).join(", ")} } `:"";return`${e.value}${n}`}function l_(e){if(e.snapshot){const n=e.snapshot,t=e._futureSnapshot;e.snapshot=t,cr(n.queryParams,t.queryParams)||e.queryParams.next(t.queryParams),n.fragment!==t.fragment&&e.fragment.next(t.fragment),cr(n.params,t.params)||e.params.next(t.params),function nL(e,n){if(e.length!==n.length)return!1;for(let t=0;tcr(t.parameters,n[i].parameters))}(e.url,n.url);return t&&!(!e.parent!=!n.parent)&&(!e.parent||c_(e.parent,n.parent))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Tc(e,n,t){if(t&&e.shouldReuseRoute(n.value,t.value.snapshot)){const i=t.value;i._futureSnapshot=n.value;const r=function UL(e,n,t){return n.children.map(i=>{for(const r of t.children)if(e.shouldReuseRoute(i.value,r.value.snapshot))return Tc(e,i,r);return Tc(e,i)})}(e,n,t);return new Gr(i,r)}{if(e.shouldAttach(n.value)){const o=e.retrieve(n.value);if(null!==o){const s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Tc(e,a)),s}}const i=function GL(e){return new as(new zt(e.url),new zt(e.params),new zt(e.queryParams),new zt(e.fragment),new zt(e.data),e.outlet,e.component,e)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(n.value),r=n.children.map(o=>Tc(e,o));return new Gr(i,r)}}const u_="ngNavigationCancelingError";function Vw(e,n){const{redirectTo:t,navigationBehaviorOptions:i}=os(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,r=Hw(!1,0,n);return r.url=t,r.navigationBehaviorOptions=i,r}function Hw(e,n,t){const i=new Error("NavigationCancelingError: "+(e||""));return i[u_]=!0,i.cancellationCode=n,t&&(i.url=t),i}function Bw(e){return jw(e)&&os(e.url)}function jw(e){return e&&e[u_]} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class WL{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new Ac,this.attachRef=null}}let Ac=(()=>{class e{constructor(){this.contexts=new Map}onChildOutletCreated(t,i){const r=this.getOrCreateContext(t);r.outlet=i,this.contexts.set(t,r)}onChildOutletDestroyed(t){const i=this.getContext(t);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let i=this.getContext(t);return i||(i=new WL,this.contexts.set(t,i)),i}getContext(t){return this.contexts.get(t)||null}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const uf=!1;let d_=(()=>{class e{constructor(t,i,r,o,s){this.parentContexts=t,this.location=i,this.changeDetector=o,this.environmentInjector=s,this.activated=null,this._activatedRoute=null,this.activateEvents=new ue,this.deactivateEvents=new ue,this.attachEvents=new ue,this.detachEvents=new ue,this.name=r||pe,t.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.getContext(this.name)?.outlet===this&&this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.injector))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new P(4012,uf);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new P(4012,uf);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new P(4012,uf);this.location.detach();const t=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(t.instance),t}attach(t,i){this.activated=t,this._activatedRoute=i,this.location.insert(t.hostView),this.attachEvents.emit(t.instance)}deactivate(){if(this.activated){const t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,i){if(this.isActivated)throw new P(4013,uf);this._activatedRoute=t;const r=this.location,s=t._futureSnapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,l=new KL(t,a,r.injector);if(i&&function zL(e){return!!e.resolveComponentFactory} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(i)){const u=i.resolveComponentFactory(s);this.activated=r.createComponent(u,r.length,l)}else this.activated=r.createComponent(s,{index:r.length,injector:l,environmentInjector:i??this.environmentInjector});this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return e.\u0275fac=function(t){return new(t||e)(C(Ac),C(Bi),function Ko(e){return function De(e,n){if("class"===n)return e.classes;if("style"===n)return e.styles;const t=e.attrs;if(t){const i=t.length;let r=0;for(;r{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275cmp=et({type:e,selectors:[["ng-component"]],standalone:!0,features:[YD],decls:1,vars:0,template:function(t,i){1&t&&Li(0,"router-outlet")},dependencies:[d_],encapsulation:2}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function $w(e,n){return e.providers&&!e._injector&&(e._injector=bd(e.providers,n,`Route: ${e.path}`)),e._injector??n}function p_(e){const n=e.children&&e.children.map(p_),t=n?{...e,children:n}:{...e};return!t.component&&!t.loadComponent&&(n||t.loadChildren)&&t.outlet&&t.outlet!==pe&&(t.component=f_),t}function yi(e){return e.outlet||pe}function Uw(e,n){const t=e.filter(i=>yi(i)===n);return t.push(...e.filter(i=>yi(i)!==n)),t}function Ic(e){if(!e)return null;if(e.routeConfig?._injector)return e.routeConfig._injector;for(let n=e.parent;n;n=n.parent){const t=n.routeConfig;if(t?._loadedInjector)return t._loadedInjector;if(t?._injector)return t._injector}return null} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class QL{constructor(n,t,i,r){this.routeReuseStrategy=n,this.futureState=t,this.currState=i,this.forwardEvent=r}activate(n){const t=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(t,i,n),l_(this.futureState.root),this.activateChildRoutes(t,i,n)}deactivateChildRoutes(n,t,i){const r=La(t);n.children.forEach(o=>{const s=o.value.outlet;this.deactivateRoutes(o,r[s],i),delete r[s]}),an(r,(o,s)=>{this.deactivateRouteAndItsChildren(o,i)})}deactivateRoutes(n,t,i){const r=n.value,o=t?t.value:null;if(r===o)if(r.component){const s=i.getContext(r.outlet);s&&this.deactivateChildRoutes(n,t,s.children)}else this.deactivateChildRoutes(n,t,i);else o&&this.deactivateRouteAndItsChildren(t,i)}deactivateRouteAndItsChildren(n,t){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,t):this.deactivateRouteAndOutlet(n,t)}detachAndStoreRouteSubtree(n,t){const i=t.getContext(n.value.outlet),r=i&&n.value.component?i.children:t,o=La(n);for(const s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,t){const i=t.getContext(n.value.outlet),r=i&&n.value.component?i.children:t,o=La(n);for(const s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);i&&i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated(),i.attachRef=null,i.resolver=null,i.route=null)}activateChildRoutes(n,t,i){const r=La(t);n.children.forEach(o=>{this.activateRoutes(o,r[o.value.outlet],i),this.forwardEvent(new VL(o.value.snapshot))}),n.children.length&&this.forwardEvent(new PL(n.value.snapshot))}activateRoutes(n,t,i){const r=n.value,o=t?t.value:null;if(l_(r),r===o)if(r.component){const s=i.getOrCreateContext(r.outlet);this.activateChildRoutes(n,t,s.children)}else this.activateChildRoutes(n,t,i);else if(r.component){const s=i.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){const a=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),l_(a.route.value),this.activateChildRoutes(n,null,s.children)}else{const a=Ic(r.snapshot),l=a?.get(Gl)??null;s.attachRef=null,s.route=r,s.resolver=l,s.injector=a,s.outlet&&s.outlet.activateWith(r,s.injector),this.activateChildRoutes(n,null,s.children)}}else this.activateChildRoutes(n,null,i)}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class Gw{constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class df{constructor(n,t){this.component=n,this.route=t}}function XL(e,n,t){const i=e._root;return Oc(i,n?n._root:null,t,[i.value])}function Va(e,n){const t=Symbol(),i=n.get(e,t);return i===t?"function"!=typeof e||function bh(e){return null!==Vs(e)}(e)?n.get(e):e:i}function Oc(e,n,t,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=La(n);return e.children.forEach(s=>{(function t2(e,n,t,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=e.value,s=n?n.value:null,a=t?t.getContext(e.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){const l=function n2(e,n,t){if("function"==typeof t)return t(e,n);switch(t){case"pathParamsChange":return!rs(e.url,n.url);case"pathParamsOrQueryParamsChange":return!rs(e.url,n.url)||!cr(e.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!c_(e,n)||!cr(e.queryParams,n.queryParams);default:return!c_(e,n)}}(s,o,o.routeConfig.runGuardsAndResolvers);l?r.canActivateChecks.push(new Gw(i)):(o.data=s.data,o._resolvedData=s._resolvedData),Oc(e,n,o.component?a?a.children:null:t,i,r),l&&a&&a.outlet&&a.outlet.isActivated&&r.canDeactivateChecks.push(new df(a.outlet.component,s))}else s&&kc(n,a,r),r.canActivateChecks.push(new Gw(i)),Oc(e,null,o.component?a?a.children:null:t,i,r)})(s,o[s.value.outlet],t,i.concat([s.value]),r),delete o[s.value.outlet]}),an(o,(s,a)=>kc(s,t.getContext(a),r)),r}function kc(e,n,t){const i=La(e),r=e.value;an(i,(o,s)=>{kc(o,r.component?n?n.children.getContext(s):null:n,t)}),t.canDeactivateChecks.push(new df(r.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,r))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Rc(e){return"function"==typeof e}function g_(e){return e instanceof bc||"EmptyError"===e?.name} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const ff=Symbol("INITIAL_VALUE");function Ha(){return vi(e=>Zd(e.map(n=>n.pipe(sn(1),function Qd(...e){const n=en(e);return qe((t,i)=>{(n?Dc(e,t,n):Dc(e,t)).subscribe(i)})}(ff)))).pipe(ne(n=>{for(const t of n)if(!0!==t){if(t===ff)return ff;if(!1===t||t instanceof is)return t}return!0}),vn(n=>n!==ff),sn(1)))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Ww(e){return function Xa(...e){return Cs(e)}(Yt(n=>{if(os(n))throw Vw(0,n)}),ne(n=>!0===n))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const m_={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Kw(e,n,t,i,r){const o=__(e,n,t);return o.matched?function b2(e,n,t,i){const r=n.canMatch;return r&&0!==r.length?Z(r.map(s=>{const a=Va(s,e);return vo(function c2(e){return e&&Rc(e.canMatch)}(a)?a.canMatch(n,t):e.runInContext(()=>a(n,t)))})).pipe(Ha(),Ww()):Z(!0)}(i=$w(n,i),n,t).pipe(ne(s=>!0===s?o:{...m_})):Z(o)}function __(e,n,t){if(""===n.path)return"full"===n.pathMatch&&(e.hasChildren()||t.length>0)?{...m_}:{matched:!0,consumedSegments:[],remainingSegments:t,parameters:{},positionalParamSegments:{}};const r=(n.matcher||tL)(t,e,n);if(!r)return{...m_};const o={};an(r.posParams,(a,l)=>{o[l]=a.path});const s=r.consumed.length>0?{...o,...r.consumed[r.consumed.length-1].parameters}:o;return{matched:!0,consumedSegments:r.consumed,remainingSegments:t.slice(r.consumed.length),parameters:s,positionalParamSegments:r.posParams??{}}}function hf(e,n,t,i,r="corrected"){if(t.length>0&&function w2(e,n,t){return t.some(i=>pf(e,n,i)&&yi(i)!==pe)}(e,t,i)){const s=new me(n,function C2(e,n,t,i){const r={};r[pe]=i,i._sourceSegment=e,i._segmentIndexShift=n.length;for(const o of t)if(""===o.path&&yi(o)!==pe){const s=new me([],{});s._sourceSegment=e,s._segmentIndexShift=n.length,r[yi(o)]=s}return r}(e,n,i,new me(t,e.children)));return s._sourceSegment=e,s._segmentIndexShift=n.length,{segmentGroup:s,slicedSegments:[]}}if(0===t.length&&function S2(e,n,t){return t.some(i=>pf(e,n,i))}(e,t,i)){const s=new me(e.segments,function D2(e,n,t,i,r,o){const s={};for(const a of i)if(pf(e,t,a)&&!r[yi(a)]){const l=new me([],{});l._sourceSegment=e,l._segmentIndexShift="legacy"===o?e.segments.length:n.length,s[yi(a)]=l}return{...r,...s}}(e,n,t,i,e.children,r));return s._sourceSegment=e,s._segmentIndexShift=n.length,{segmentGroup:s,slicedSegments:t}}const o=new me(e.segments,e.children);return o._sourceSegment=e,o._segmentIndexShift=n.length,{segmentGroup:o,slicedSegments:t}}function pf(e,n,t){return(!(e.hasChildren()||n.length>0)||"full"!==t.pathMatch)&&""===t.path}function zw(e,n,t,i){return!!(yi(e)===i||i!==pe&&pf(n,t,e))&&("**"===e.path||__(n,e,t).matched)}function Yw(e,n,t){return 0===n.length&&!e.children[t]} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const gf=!1;class mf{constructor(n){this.segmentGroup=n||null}}class qw{constructor(n){this.urlTree=n}}function xc(e){return Ra(new mf(e))}function Jw(e){return Ra(new qw(e))}class T2{constructor(n,t,i,r,o){this.injector=n,this.configLoader=t,this.urlSerializer=i,this.urlTree=r,this.config=o,this.allowRedirects=!0}apply(){const n=hf(this.urlTree.root,[],[],this.config).segmentGroup,t=new me(n.segments,n.children);return this.expandSegmentGroup(this.injector,this.config,t,pe).pipe(ne(o=>this.createUrlTree(af(o),this.urlTree.queryParams,this.urlTree.fragment))).pipe($r(o=>{if(o instanceof qw)return this.allowRedirects=!1,this.match(o.urlTree);throw o instanceof mf?this.noMatchError(o):o}))}match(n){return this.expandSegmentGroup(this.injector,this.config,n.root,pe).pipe(ne(r=>this.createUrlTree(af(r),n.queryParams,n.fragment))).pipe($r(r=>{throw r instanceof mf?this.noMatchError(r):r}))}noMatchError(n){return new P(4002,gf)}createUrlTree(n,t,i){const r=e_(n);return new is(r,t,i)}expandSegmentGroup(n,t,i,r){return 0===i.segments.length&&i.hasChildren()?this.expandChildren(n,t,i).pipe(ne(o=>new me([],o))):this.expandSegment(n,i,t,i.segments,r,!0)}expandChildren(n,t,i){const r=[];for(const o of Object.keys(i.children))"primary"===o?r.unshift(o):r.push(o);return gt(r).pipe(_o(o=>{const s=i.children[o],a=Uw(t,o);return this.expandSegmentGroup(n,a,s,o).pipe(ne(l=>({segment:l,outlet:o})))}),cw((o,s)=>(o[s.outlet]=s.segment,o),{}),uw())}expandSegment(n,t,i,r,o,s){return gt(i).pipe(_o(a=>this.expandSegmentAgainstRoute(n,t,i,a,r,o,s).pipe($r(u=>{if(u instanceof mf)return Z(null);throw u}))),mo(a=>!!a),$r((a,l)=>{if(g_(a))return Yw(t,r,o)?Z(new me([],{})):xc(t);throw a}))}expandSegmentAgainstRoute(n,t,i,r,o,s,a){return zw(r,t,o,s)?void 0===r.redirectTo?this.matchSegmentAgainstRoute(n,t,r,o,s):a&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(n,t,i,r,o,s):xc(t):xc(t)}expandSegmentAgainstRouteUsingRedirect(n,t,i,r,o,s){return"**"===r.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(n,i,r,s):this.expandRegularSegmentAgainstRouteUsingRedirect(n,t,i,r,o,s)}expandWildCardWithParamsAgainstRouteUsingRedirect(n,t,i,r){const o=this.applyRedirectCommands([],i.redirectTo,{});return i.redirectTo.startsWith("/")?Jw(o):this.lineralizeSegments(i,o).pipe(dt(s=>{const a=new me(s,{});return this.expandSegment(n,a,t,s,r,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(n,t,i,r,o,s){const{matched:a,consumedSegments:l,remainingSegments:u,positionalParamSegments:f}=__(t,r,o);if(!a)return xc(t);const p=this.applyRedirectCommands(l,r.redirectTo,f);return r.redirectTo.startsWith("/")?Jw(p):this.lineralizeSegments(r,p).pipe(dt(m=>this.expandSegment(n,t,i,m.concat(u),s,!1)))}matchSegmentAgainstRoute(n,t,i,r,o){return"**"===i.path?(n=$w(i,n),i.loadChildren?(i._loadedRoutes?Z({routes:i._loadedRoutes,injector:i._loadedInjector}):this.configLoader.loadChildren(n,i)).pipe(ne(a=>(i._loadedRoutes=a.routes,i._loadedInjector=a.injector,new me(r,{})))):Z(new me(r,{}))):Kw(t,i,r,n).pipe(vi(({matched:s,consumedSegments:a,remainingSegments:l})=>s?this.getChildConfig(n=i._injector??n,i,r).pipe(dt(f=>{const p=f.injector??n,m=f.routes,{segmentGroup:v,slicedSegments:y}=hf(t,a,l,m),D=new me(v.segments,v.children);if(0===y.length&&D.hasChildren())return this.expandChildren(p,m,D).pipe(ne(S=>new me(a,S)));if(0===m.length&&0===y.length)return Z(new me(a,{}));const w=yi(i)===o;return this.expandSegment(p,D,m,y,w?pe:o,!0).pipe(ne(I=>new me(a.concat(I.segments),I.children)))})):xc(t)))}getChildConfig(n,t,i){return t.children?Z({routes:t.children,injector:n}):t.loadChildren?void 0!==t._loadedRoutes?Z({routes:t._loadedRoutes,injector:t._loadedInjector}):function y2(e,n,t,i){const r=n.canLoad;return void 0===r||0===r.length?Z(!0):Z(r.map(s=>{const a=Va(s,e);return vo(function o2(e){return e&&Rc(e.canLoad)}(a)?a.canLoad(n,t):e.runInContext(()=>a(n,t)))})).pipe(Ha(),Ww())}(n,t,i).pipe(dt(r=>r?this.configLoader.loadChildren(n,t).pipe(Yt(o=>{t._loadedRoutes=o.routes,t._loadedInjector=o.injector})):function M2(e){return Ra(Hw(gf,3))}())):Z({routes:[],injector:n})}lineralizeSegments(n,t){let i=[],r=t.root;for(;;){if(i=i.concat(r.segments),0===r.numberOfChildren)return Z(i);if(r.numberOfChildren>1||!r.children[pe])return Ra(new P(4e3,gf));r=r.children[pe]}}applyRedirectCommands(n,t,i){return this.applyRedirectCreateUrlTree(t,this.urlSerializer.parse(t),n,i)}applyRedirectCreateUrlTree(n,t,i,r){const o=this.createSegmentGroup(n,t.root,i,r);return new is(o,this.createQueryParams(t.queryParams,this.urlTree.queryParams),t.fragment)}createQueryParams(n,t){const i={};return an(n,(r,o)=>{if("string"==typeof r&&r.startsWith(":")){const a=r.substring(1);i[o]=t[a]}else i[o]=r}),i}createSegmentGroup(n,t,i,r){const o=this.createSegments(n,t.segments,i,r);let s={};return an(t.children,(a,l)=>{s[l]=this.createSegmentGroup(n,a,i,r)}),new me(o,s)}createSegments(n,t,i,r){return t.map(o=>o.path.startsWith(":")?this.findPosParam(n,o,r):this.findOrReturn(o,i))}findPosParam(n,t,i){const r=i[t.path.substring(1)];if(!r)throw new P(4001,gf);return r}findOrReturn(n,t){let i=0;for(const r of t){if(r.path===n.path)return t.splice(i),r;i++}return n}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class I2{}class R2{constructor(n,t,i,r,o,s,a,l){this.injector=n,this.rootComponentType=t,this.config=i,this.urlTree=r,this.url=o,this.paramsInheritanceStrategy=s,this.relativeLinkResolution=a,this.urlSerializer=l}recognize(){const n=hf(this.urlTree.root,[],[],this.config.filter(t=>void 0===t.redirectTo),this.relativeLinkResolution).segmentGroup;return this.processSegmentGroup(this.injector,this.config,n,pe).pipe(ne(t=>{if(null===t)return null;const i=new cf([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},pe,this.rootComponentType,null,this.urlTree.root,-1,{}),r=new Gr(i,t),o=new Pw(this.url,r);return this.inheritParamsAndData(o._root),o}))}inheritParamsAndData(n){const t=n.value,i=Fw(t,this.paramsInheritanceStrategy);t.params=Object.freeze(i.params),t.data=Object.freeze(i.data),n.children.forEach(r=>this.inheritParamsAndData(r))}processSegmentGroup(n,t,i,r){return 0===i.segments.length&&i.hasChildren()?this.processChildren(n,t,i):this.processSegment(n,t,i,i.segments,r)}processChildren(n,t,i){return gt(Object.keys(i.children)).pipe(_o(r=>{const o=i.children[r],s=Uw(t,r);return this.processSegmentGroup(n,s,o,r)}),cw((r,o)=>r&&o?(r.push(...o),r):null),function XP(e,n=!1){return qe((t,i)=>{let r=0;t.subscribe(ke(i,o=>{const s=e(o,r++);(s||n)&&i.next(o),!s&&i.complete()}))})}(r=>null!==r),Xd(null),uw(),ne(r=>{if(null===r)return null;const o=Zw(r);return function x2(e){e.sort((n,t)=>n.value.outlet===pe?-1:t.value.outlet===pe?1:n.value.outlet.localeCompare(t.value.outlet))}(o),o}))}processSegment(n,t,i,r,o){return gt(t).pipe(_o(s=>this.processSegmentAgainstRoute(s._injector??n,s,i,r,o)),mo(s=>!!s),$r(s=>{if(g_(s))return Yw(i,r,o)?Z([]):Z(null);throw s}))}processSegmentAgainstRoute(n,t,i,r,o){if(t.redirectTo||!zw(t,i,r,o))return Z(null);let s;if("**"===t.path){const a=r.length>0?pw(r).parameters:{},l=Xw(i)+r.length;s=Z({snapshot:new cf(r,a,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,tS(t),yi(t),t.component??t._loadedComponent??null,t,Qw(i),l,nS(t),l),consumedSegments:[],remainingSegments:[]})}else s=Kw(i,t,r,n).pipe(ne(({matched:a,consumedSegments:l,remainingSegments:u,parameters:f})=>{if(!a)return null;const p=Xw(i)+l.length;return{snapshot:new cf(l,f,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,tS(t),yi(t),t.component??t._loadedComponent??null,t,Qw(i),p,nS(t),p),consumedSegments:l,remainingSegments:u}}));return s.pipe(vi(a=>{if(null===a)return Z(null);const{snapshot:l,consumedSegments:u,remainingSegments:f}=a;n=t._injector??n;const p=t._loadedInjector??n,m=function F2(e){return e.children?e.children:e.loadChildren?e._loadedRoutes:[]}(t),{segmentGroup:v,slicedSegments:y}=hf(i,u,f,m.filter(w=>void 0===w.redirectTo),this.relativeLinkResolution);if(0===y.length&&v.hasChildren())return this.processChildren(p,m,v).pipe(ne(w=>null===w?null:[new Gr(l,w)]));if(0===m.length&&0===y.length)return Z([new Gr(l,[])]);const D=yi(t)===o;return this.processSegment(p,m,v,y,D?pe:o).pipe(ne(w=>null===w?null:[new Gr(l,w)]))}))}}function P2(e){const n=e.value.routeConfig;return n&&""===n.path&&void 0===n.redirectTo}function Zw(e){const n=[],t=new Set;for(const i of e){if(!P2(i)){n.push(i);continue}const r=n.find(o=>i.value.routeConfig===o.value.routeConfig);void 0!==r?(r.children.push(...i.children),t.add(r)):n.push(i)}for(const i of t){const r=Zw(i.children);n.push(new Gr(i.value,r))}return n.filter(i=>!t.has(i))}function Qw(e){let n=e;for(;n._sourceSegment;)n=n._sourceSegment;return n}function Xw(e){let n=e,t=n._segmentIndexShift??0;for(;n._sourceSegment;)n=n._sourceSegment,t+=n._segmentIndexShift??0;return t-1}function tS(e){return e.data||{}}function nS(e){return e.resolve||{}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function H2(e,n){return dt(t=>{const{targetSnapshot:i,guards:{canActivateChecks:r}}=t;if(!r.length)return Z(t);let o=0;return gt(r).pipe(_o(s=>function B2(e,n,t,i){const r=e.routeConfig,o=e._resolve;return void 0!==r?.title&&!iS(r)&&(o[Cc]=r.title),function j2(e,n,t,i){const r=function $2(e){return[...Object.keys(e),...Object.getOwnPropertySymbols(e)]}(e);if(0===r.length)return Z({});const o={};return gt(r).pipe(dt(s=>function U2(e,n,t,i){const r=Ic(n)??i,o=Va(e,r);return vo(o.resolve?o.resolve(n,t):r.runInContext(()=>o(n,t)))}(e[s],n,t,i).pipe(mo(),Yt(a=>{o[s]=a}))),qm(1),function dw(e){return ne(()=>e)}(o),$r(s=>g_(s)?Xt:Ra(s)))}(o,e,n,i).pipe(ne(s=>(e._resolvedData=s,e.data=Fw(e,t).resolve,r&&iS(r)&&(e.data[Cc]=r.title),null)))}(s.route,i,e,n)),Yt(()=>o++),qm(1),dt(s=>o===r.length?Z(t):Xt))})}function iS(e){return"string"==typeof e.title||null===e.title} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function v_(e){return vi(n=>{const t=e(n);return t?gt(t).pipe(ne(()=>n)):Z(n)})} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let rS=(()=>{class e{buildTitle(t){let i,r=t.root;for(;void 0!==r;)i=this.getResolvedTitleForRoute(r)??i,r=r.children.find(o=>o.outlet===pe);return i}getResolvedTitleForRoute(t){return t.data[Cc]}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:function(){return St(oS)},providedIn:"root"}),e})(),oS=(()=>{class e extends rS{constructor(t){super(),this.title=t}updateTitle(t){const i=this.buildTitle(t);void 0!==i&&this.title.setTitle(i)}}return e.\u0275fac=function(t){return new(t||e)(L(ew))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class G2{}class K2 extends class W2{shouldDetach(n){return!1}store(n,t){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,t){return n.routeConfig===t.routeConfig}}{} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const vf=new q("",{providedIn:"root",factory:()=>({})}),y_=new q("ROUTES"); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let b_=(()=>{class e{constructor(t,i){this.injector=t,this.compiler=i,this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap}loadComponent(t){if(this.componentLoaders.get(t))return this.componentLoaders.get(t);if(t._loadedComponent)return Z(t._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(t);const i=vo(t.loadComponent()).pipe(Yt(o=>{this.onLoadEndListener&&this.onLoadEndListener(t),t._loadedComponent=o}),Jm(()=>{this.componentLoaders.delete(t)})),r=new aw(i,()=>new Ue).pipe(Ym());return this.componentLoaders.set(t,r),r}loadChildren(t,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return Z({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const o=this.loadModuleFactoryOrRoutes(i.loadChildren).pipe(ne(a=>{this.onLoadEndListener&&this.onLoadEndListener(i);let l,u,f=!1;Array.isArray(a)?u=a:(l=a.create(t).injector,u=hw(l.get(y_,[],X.Self|X.Optional)));return{routes:u.map(p_),injector:l}}),Jm(()=>{this.childrenLoaders.delete(i)})),s=new aw(o,()=>new Ue).pipe(Ym());return this.childrenLoaders.set(i,s),s}loadModuleFactoryOrRoutes(t){return vo(t()).pipe(dt(i=>i instanceof KD||Array.isArray(i)?Z(i):gt(this.compiler.compileModuleAsync(i))))}}return e.\u0275fac=function(t){return new(t||e)(L(gn),L(lm))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class Y2{}class q2{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,t){return n}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function J2(e){throw e}function Z2(e,n,t){return n.parse("/")}const Q2={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},X2={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function aS(){const e=St(bw),n=St(Ac),t=St(Sm),i=St(gn),r=St(lm),o=St(y_,{optional:!0})??[],s=St(vf,{optional:!0})??{},a=St(oS),l=St(rS,{optional:!0}),u=St(Y2,{optional:!0}),f=St(G2,{optional:!0}),p=new ln(null,e,n,t,i,r,hw(o));return u&&(p.urlHandlingStrategy=u),f&&(p.routeReuseStrategy=f),p.titleStrategy=l??a,function eV(e,n){e.errorHandler&&(n.errorHandler=e.errorHandler),e.malformedUriErrorHandler&&(n.malformedUriErrorHandler=e.malformedUriErrorHandler),e.onSameUrlNavigation&&(n.onSameUrlNavigation=e.onSameUrlNavigation),e.paramsInheritanceStrategy&&(n.paramsInheritanceStrategy=e.paramsInheritanceStrategy),e.relativeLinkResolution&&(n.relativeLinkResolution=e.relativeLinkResolution),e.urlUpdateStrategy&&(n.urlUpdateStrategy=e.urlUpdateStrategy),e.canceledNavigationResolution&&(n.canceledNavigationResolution=e.canceledNavigationResolution)}(s,p),p}let ln=(()=>{class e{constructor(t,i,r,o,s,a,l){this.rootComponentType=t,this.urlSerializer=i,this.rootContexts=r,this.location=o,this.config=l,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.disposed=!1,this.navigationId=0,this.currentPageId=0,this.isNgZoneEnabled=!1,this.events=new Ue,this.errorHandler=J2,this.malformedUriErrorHandler=Z2,this.navigated=!1,this.lastSuccessfulId=-1,this.afterPreactivation=()=>Z(void 0),this.urlHandlingStrategy=new q2,this.routeReuseStrategy=new K2,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="corrected",this.canceledNavigationResolution="replace",this.configLoader=s.get(b_),this.configLoader.onLoadEndListener=m=>this.triggerEvent(new xL(m)),this.configLoader.onLoadStartListener=m=>this.triggerEvent(new RL(m)),this.ngModule=s.get(Xo),this.console=s.get(BR);const p=s.get(ze);this.isNgZoneEnabled=p instanceof ze&&ze.isInAngularZone(),this.resetConfig(l),this.currentUrlTree=function iL(){return new is(new me([],{}),{},null)}(),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=xw(this.currentUrlTree,this.rootComponentType),this.transitions=new zt({id:0,targetPageId:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}get browserPageId(){return this.location.getState()?.\u0275routerPageId}setupNavigations(t){const i=this.events;return t.pipe(vn(r=>0!==r.id),ne(r=>({...r,extractedUrl:this.urlHandlingStrategy.extract(r.rawUrl)})),vi(r=>{let o=!1,s=!1;return Z(r).pipe(Yt(a=>{this.currentNavigation={id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,trigger:a.source,extras:a.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}}),vi(a=>{const l=this.browserUrlTree.toString(),u=!this.navigated||a.extractedUrl.toString()!==l||l!==this.currentUrlTree.toString();if(("reload"===this.onSameUrlNavigation||u)&&this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return lS(a.source)&&(this.browserUrlTree=a.extractedUrl),Z(a).pipe(vi(p=>{const m=this.transitions.getValue();return i.next(new r_(p.id,this.serializeUrl(p.extractedUrl),p.source,p.restoredState)),m!==this.transitions.getValue()?Xt:Promise.resolve(p)}),function A2(e,n,t,i){return vi(r=>function N2(e,n,t,i,r){return new T2(e,n,t,i,r).apply()}(e,n,t,r.extractedUrl,i).pipe(ne(o=>({...r,urlAfterRedirects:o}))))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(this.ngModule.injector,this.configLoader,this.urlSerializer,this.config),Yt(p=>{this.currentNavigation={...this.currentNavigation,finalUrl:p.urlAfterRedirects},r.urlAfterRedirects=p.urlAfterRedirects}),function V2(e,n,t,i,r,o){return dt(s=>function k2(e,n,t,i,r,o,s="emptyOnly",a="legacy"){return new R2(e,n,t,i,r,s,a,o).recognize().pipe(vi(l=>null===l?function O2(e){return new je(n=>n.error(e))}(new I2):Z(l)))}(e,n,t,s.urlAfterRedirects,i.serialize(s.urlAfterRedirects),i,r,o).pipe(ne(a=>({...s,targetSnapshot:a}))))}(this.ngModule.injector,this.rootComponentType,this.config,this.urlSerializer,this.paramsInheritanceStrategy,this.relativeLinkResolution),Yt(p=>{if(r.targetSnapshot=p.targetSnapshot,"eager"===this.urlUpdateStrategy){if(!p.extras.skipLocationChange){const v=this.urlHandlingStrategy.merge(p.urlAfterRedirects,p.rawUrl);this.setBrowserUrl(v,p)}this.browserUrlTree=p.urlAfterRedirects}const m=new TL(p.id,this.serializeUrl(p.extractedUrl),this.serializeUrl(p.urlAfterRedirects),p.targetSnapshot);i.next(m)}));if(u&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:m,extractedUrl:v,source:y,restoredState:D,extras:w}=a,M=new r_(m,this.serializeUrl(v),y,D);i.next(M);const I=xw(v,this.rootComponentType).snapshot;return Z(r={...a,targetSnapshot:I,urlAfterRedirects:v,extras:{...w,skipLocationChange:!1,replaceUrl:!1}})}return this.rawUrlTree=a.rawUrl,a.resolve(null),Xt}),Yt(a=>{const l=new AL(a.id,this.serializeUrl(a.extractedUrl),this.serializeUrl(a.urlAfterRedirects),a.targetSnapshot);this.triggerEvent(l)}),ne(a=>r={...a,guards:XL(a.targetSnapshot,a.currentSnapshot,this.rootContexts)}),function d2(e,n){return dt(t=>{const{targetSnapshot:i,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:s}}=t;return 0===s.length&&0===o.length?Z({...t,guardsResult:!0}):function f2(e,n,t,i){return gt(e).pipe(dt(r=>function v2(e,n,t,i,r){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?Z(o.map(a=>{const l=Ic(n)??r,u=Va(a,l);return vo(function l2(e){return e&&Rc(e.canDeactivate)}(u)?u.canDeactivate(e,n,t,i):l.runInContext(()=>u(e,n,t,i))).pipe(mo())})).pipe(Ha()):Z(!0)}(r.component,r.route,t,n,i)),mo(r=>!0!==r,!0))}(s,i,r,e).pipe(dt(a=>a&&function r2(e){return"boolean"==typeof e}(a)?function h2(e,n,t,i){return gt(n).pipe(_o(r=>Dc(function g2(e,n){return null!==e&&n&&n(new FL(e)),Z(!0)}(r.route.parent,i),function p2(e,n){return null!==e&&n&&n(new LL(e)),Z(!0)}(r.route,i),function _2(e,n,t){const i=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(s=>function e2(e){const n=e.routeConfig?e.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:e,guards:n}:null}(s)).filter(s=>null!==s).map(s=>sw(()=>Z(s.guards.map(l=>{const u=Ic(s.node)??t,f=Va(l,u);return vo(function a2(e){return e&&Rc(e.canActivateChild)}(f)?f.canActivateChild(i,e):u.runInContext(()=>f(i,e))).pipe(mo())})).pipe(Ha())));return Z(o).pipe(Ha())}(e,r.path,t),function m2(e,n,t){const i=n.routeConfig?n.routeConfig.canActivate:null;if(!i||0===i.length)return Z(!0);const r=i.map(o=>sw(()=>{const s=Ic(n)??t,a=Va(o,s);return vo(function s2(e){return e&&Rc(e.canActivate)}(a)?a.canActivate(n,e):s.runInContext(()=>a(n,e))).pipe(mo())}));return Z(r).pipe(Ha())}(e,r.route,t))),mo(r=>!0!==r,!0))}(i,o,e,n):Z(a)),ne(a=>({...t,guardsResult:a})))})}(this.ngModule.injector,a=>this.triggerEvent(a)),Yt(a=>{if(r.guardsResult=a.guardsResult,os(a.guardsResult))throw Vw(0,a.guardsResult);const l=new IL(a.id,this.serializeUrl(a.extractedUrl),this.serializeUrl(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);this.triggerEvent(l)}),vn(a=>!!a.guardsResult||(this.restoreHistory(a),this.cancelNavigationTransition(a,"",3),!1)),v_(a=>{if(a.guards.canActivateChecks.length)return Z(a).pipe(Yt(l=>{const u=new OL(l.id,this.serializeUrl(l.extractedUrl),this.serializeUrl(l.urlAfterRedirects),l.targetSnapshot);this.triggerEvent(u)}),vi(l=>{let u=!1;return Z(l).pipe(H2(this.paramsInheritanceStrategy,this.ngModule.injector),Yt({next:()=>u=!0,complete:()=>{u||(this.restoreHistory(l),this.cancelNavigationTransition(l,"",2))}}))}),Yt(l=>{const u=new kL(l.id,this.serializeUrl(l.extractedUrl),this.serializeUrl(l.urlAfterRedirects),l.targetSnapshot);this.triggerEvent(u)}))}),v_(a=>{const l=u=>{const f=[];u.routeConfig?.loadComponent&&!u.routeConfig._loadedComponent&&f.push(this.configLoader.loadComponent(u.routeConfig).pipe(Yt(p=>{u.component=p}),ne(()=>{})));for(const p of u.children)f.push(...l(p));return f};return Zd(l(a.targetSnapshot.root)).pipe(Xd(),sn(1))}),v_(()=>this.afterPreactivation()),ne(a=>{const l=function $L(e,n,t){const i=Tc(e,n._root,t?t._root:void 0);return new Rw(i,n)}(this.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);return r={...a,targetRouterState:l}}),Yt(a=>{this.currentUrlTree=a.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(a.urlAfterRedirects,a.rawUrl),this.routerState=a.targetRouterState,"deferred"===this.urlUpdateStrategy&&(a.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,a),this.browserUrlTree=a.urlAfterRedirects)}),((e,n,t)=>ne(i=>(new QL(n,i.targetRouterState,i.currentRouterState,t).activate(e),i)))(this.rootContexts,this.routeReuseStrategy,a=>this.triggerEvent(a)),Yt({next(){o=!0},complete(){o=!0}}),Jm(()=>{o||s||this.cancelNavigationTransition(r,"",1),this.currentNavigation?.id===r.id&&(this.currentNavigation=null)}),$r(a=>{if(s=!0,jw(a)){Bw(a)||(this.navigated=!0,this.restoreHistory(r,!0));const l=new lf(r.id,this.serializeUrl(r.extractedUrl),a.message,a.cancellationCode);if(i.next(l),Bw(a)){const u=this.urlHandlingStrategy.merge(a.url,this.rawUrlTree),f={skipLocationChange:r.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy||lS(r.source)};this.scheduleNavigation(u,"imperative",null,f,{resolve:r.resolve,reject:r.reject,promise:r.promise})}else r.resolve(!1)}else{this.restoreHistory(r,!0);const l=new Iw(r.id,this.serializeUrl(r.extractedUrl),a,r.targetSnapshot??void 0);i.next(l);try{r.resolve(this.errorHandler(a))}catch(u){r.reject(u)}}return Xt}))}))}resetRootComponentType(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType}setTransition(t){this.transitions.next({...this.transitions.value,...t})}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(t=>{const i="popstate"===t.type?"popstate":"hashchange";"popstate"===i&&setTimeout(()=>{const r={replaceUrl:!0},o=t.state?.navigationId?t.state:null;if(o){const a={...o};delete a.navigationId,delete a.\u0275routerPageId,0!==Object.keys(a).length&&(r.state=a)}const s=this.parseUrl(t.url);this.scheduleNavigation(s,i,o,r)},0)}))}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(t){this.events.next(t)}resetConfig(t){this.config=t.map(p_),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.transitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(t,i={}){const{relativeTo:r,queryParams:o,fragment:s,queryParamsHandling:a,preserveFragment:l}=i,u=r||this.routerState.root,f=l?this.currentUrlTree.fragment:s;let p=null;switch(a){case"merge":p={...this.currentUrlTree.queryParams,...o};break;case"preserve":p=this.currentUrlTree.queryParams;break;default:p=o||null}return null!==p&&(p=this.removeEmptyProps(p)),CL(u,this.currentUrlTree,t,p,f??null)}navigateByUrl(t,i={skipLocationChange:!1}){const r=os(t)?t:this.parseUrl(t),o=this.urlHandlingStrategy.merge(r,this.rawUrlTree);return this.scheduleNavigation(o,"imperative",null,i)}navigate(t,i={skipLocationChange:!1}){return function tV(e){for(let n=0;n{const o=t[r];return null!=o&&(i[r]=o),i},{})}processNavigations(){this.navigations.subscribe(t=>{this.navigated=!0,this.lastSuccessfulId=t.id,this.currentPageId=t.targetPageId,this.events.next(new ss(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,this.titleStrategy?.updateTitle(this.routerState.snapshot),t.resolve(!0)},t=>{this.console.warn(`Unhandled Navigation Error: ${t}`)})}scheduleNavigation(t,i,r,o,s){if(this.disposed)return Promise.resolve(!1);let a,l,u;s?(a=s.resolve,l=s.reject,u=s.promise):u=new Promise((m,v)=>{a=m,l=v});const f=++this.navigationId;let p;return"computed"===this.canceledNavigationResolution?(0===this.currentPageId&&(r=this.location.getState()),p=r&&r.\u0275routerPageId?r.\u0275routerPageId:o.replaceUrl||o.skipLocationChange?this.browserPageId??0:(this.browserPageId??0)+1):p=0,this.setTransition({id:f,targetPageId:p,source:i,restoredState:r,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:o,resolve:a,reject:l,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(m=>Promise.reject(m))}setBrowserUrl(t,i){const r=this.urlSerializer.serialize(t),o={...i.extras.state,...this.generateNgRouterState(i.id,i.targetPageId)};this.location.isCurrentPathEqualTo(r)||i.extras.replaceUrl?this.location.replaceState(r,"",o):this.location.go(r,"",o)}restoreHistory(t,i=!1){if("computed"===this.canceledNavigationResolution){const r=this.currentPageId-t.targetPageId;"popstate"!==t.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==this.currentNavigation?.finalUrl||0===r?this.currentUrlTree===this.currentNavigation?.finalUrl&&0===r&&(this.resetState(t),this.browserUrlTree=t.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(r)}else"replace"===this.canceledNavigationResolution&&(i&&this.resetState(t),this.resetUrlToCurrentUrlTree())}resetState(t){this.routerState=t.currentRouterState,this.currentUrlTree=t.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}cancelNavigationTransition(t,i,r){const o=new lf(t.id,this.serializeUrl(t.extractedUrl),i,r);this.triggerEvent(o),t.resolve(!1)}generateNgRouterState(t,i){return"computed"===this.canceledNavigationResolution?{navigationId:t,\u0275routerPageId:i}:{navigationId:t}}}return e.\u0275fac=function(t){sg()},e.\u0275prov=G({token:e,factory:function(){return aS()},providedIn:"root"}),e})();function lS(e){return"imperative"!==e} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class cS{}let rV=(()=>{class e{constructor(t,i,r,o,s){this.router=t,this.injector=r,this.preloadingStrategy=o,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(vn(t=>t instanceof ss),_o(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(t,i){const r=[];for(const o of i){o.providers&&!o._injector&&(o._injector=bd(o.providers,t,`Route: ${o.path}`));const s=o._injector??t,a=o._loadedInjector??s;o.loadChildren&&!o._loadedRoutes&&void 0===o.canLoad||o.loadComponent&&!o._loadedComponent?r.push(this.preloadConfig(s,o)):(o.children||o._loadedRoutes)&&r.push(this.processRoutes(a,o.children??o._loadedRoutes))}return gt(r).pipe(Se())}preloadConfig(t,i){return this.preloadingStrategy.preload(i,()=>{let r;r=i.loadChildren&&void 0===i.canLoad?this.loader.loadChildren(t,i):Z(null);const o=r.pipe(dt(s=>null===s?Z(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,this.processRoutes(s.injector??t,s.routes))));return i.loadComponent&&!i._loadedComponent?gt([o,this.loader.loadComponent(i)]).pipe(Se()):o})}}return e.\u0275fac=function(t){return new(t||e)(L(ln),L(lm),L(lo),L(cS),L(b_))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const w_=new q("");let uS=(()=>{class e{constructor(t,i,r={}){this.router=t,this.viewportScroller=i,this.options=r,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},r.scrollPositionRestoration=r.scrollPositionRestoration||"disabled",r.anchorScrolling=r.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(t=>{t instanceof r_?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof ss&&(this.lastId=t.id,this.scheduleScrollEvent(t,this.router.parseUrl(t.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(t=>{t instanceof Ow&&(t.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(t.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,i){this.router.triggerEvent(new Ow(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,i))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}return e.\u0275fac=function(t){sg()},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function Ba(e,n){return{\u0275kind:e,\u0275providers:n}}function S_(e){return[{provide:y_,multi:!0,useValue:e}]}function fS(){const e=St(gn);return n=>{const t=e.get(fc);if(n!==t.components[0])return;const i=e.get(ln),r=e.get(hS);1===e.get(E_)&&i.initialNavigation(),e.get(pS,null,X.Optional)?.setUpPreloading(),e.get(w_,null,X.Optional)?.init(),i.resetRootComponentType(t.componentTypes[0]),r.next(),r.complete()}}const hS=new q("",{factory:()=>new Ue}),E_=new q("",{providedIn:"root",factory:()=>1});const pS=new q("");function lV(e){return Ba(0,[{provide:pS,useExisting:rV},{provide:cS,useExisting:e}])} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const gS=new q("ROUTER_FORROOT_GUARD"),cV=[Sm,{provide:bw,useClass:Qm},{provide:ln,useFactory:aS},Ac,{provide:as,useFactory:function dS(e){return e.routerState.root},deps:[ln]},b_];function uV(){return new $1("Router",ln)}let Cf=(()=>{class e{constructor(t){}static forRoot(t,i){return{ngModule:e,providers:[cV,[],S_(t),{provide:gS,useFactory:pV,deps:[[ln,new Ll,new Vl]]},{provide:vf,useValue:i||{}},i?.useHash?{provide:ts,useClass:Tx}:{provide:ts,useClass:hC},{provide:w_,useFactory:()=>{const e=St(ln),n=St(GF),t=St(vf);return t.scrollOffset&&n.setOffset(t.scrollOffset),new uS(e,n,t)}},i?.preloadingStrategy?lV(i.preloadingStrategy).\u0275providers:[],{provide:$1,multi:!0,useFactory:uV},i?.initialNavigation?gV(i):[],[{provide:mS,useFactory:fS},{provide:F1,multi:!0,useExisting:mS}]]}}static forChild(t){return{ngModule:e,providers:[S_(t)]}}}return e.\u0275fac=function(t){return new(t||e)(L(gS,8))},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[f_]}),e})();function pV(e){return"guarded"}function gV(e){return["disabled"===e.initialNavigation?Ba(3,[{provide:Ad,multi:!0,useFactory:()=>{const n=St(ln);return()=>{n.setUpLocationChangeListener()}}},{provide:E_,useValue:2}]).\u0275providers:[],"enabledBlocking"===e.initialNavigation?Ba(2,[{provide:E_,useValue:0},{provide:Ad,multi:!0,deps:[gn],useFactory:n=>{const t=n.get(Mx,Promise.resolve());let i=!1;return()=>t.then(()=>new Promise(o=>{const s=n.get(ln),a=n.get(hS);(function r(o){n.get(ln).events.pipe(vn(a=>a instanceof ss||a instanceof lf||a instanceof Iw),ne(a=>a instanceof ss||a instanceof lf&&(0===a.code||1===a.code)&&null),vn(a=>null!==a),sn(1)).subscribe(()=>{o()})})(()=>{o(!0),i=!0}),s.afterPreactivation=()=>(o(!0),i||a.closed?Z(void 0):a),s.initialNavigation()}))}}]).\u0275providers:[]]}const mS=new q(""); -/** - * @license Angular v14.2.9 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -let _S=(()=>{class e{constructor(t,i){this._renderer=t,this._elementRef=i,this.onChange=r=>{},this.onTouched=()=>{}}setProperty(t,i){this._renderer.setProperty(this._elementRef.nativeElement,t,i)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty("disabled",t)}}return e.\u0275fac=function(t){return new(t||e)(C(pi),C(Ze))},e.\u0275dir=H({type:e}),e})(),ls=(()=>{class e extends _S{}return e.\u0275fac=function(){let n;return function(i){return(n||(n=nt(e)))(i||e)}}(),e.\u0275dir=H({type:e,features:[He]}),e})();const ur=new q("NgValueAccessor"),yV={provide:ur,useExisting:Te(()=>Fc),multi:!0},DV=new q("CompositionEventMode"); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let Fc=(()=>{class e extends _S{constructor(t,i,r){super(t,i),this._compositionMode=r,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function bV(){const e=lr()?lr().getUserAgent():"";return/android (\d+)/.test(e.toLowerCase())}())}writeValue(t){this.setProperty("value",t??"")}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}return e.\u0275fac=function(t){return new(t||e)(C(pi),C(Ze),C(DV,8))},e.\u0275dir=H({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(t,i){1&t&&W("input",function(o){return i._handleInput(o.target.value)})("blur",function(){return i.onTouched()})("compositionstart",function(){return i._compositionStart()})("compositionend",function(o){return i._compositionEnd(o.target.value)})},features:[it([yV]),He]}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const yn=new q("NgValidators"),bo=new q("NgAsyncValidators");function TS(e){return null!=e}function AS(e){return Xl(e)?gt(e):e}function IS(e){let n={};return e.forEach(t=>{n=null!=t?{...n,...t}:n}),0===Object.keys(n).length?null:n}function OS(e,n){return n.map(t=>t(e))}function kS(e){return e.map(n=>function SV(e){return!e.validate}(n)?n:t=>n.validate(t))}function M_(e){return null!=e?function RS(e){if(!e)return null;const n=e.filter(TS);return 0==n.length?null:function(t){return IS(OS(t,n))}}(kS(e)):null}function N_(e){return null!=e?function xS(e){if(!e)return null;const n=e.filter(TS);return 0==n.length?null:function(t){ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -return function _V(...e){const n=rt(e),{args:t,keys:i}=iw(e),r=new je(o=>{const{length:s}=t;if(!s)return void o.complete();const a=new Array(s);let l=s,u=s;for(let f=0;f{p||(p=!0,u--),a[f]=m},()=>l--,void 0,()=>{(!l||!p)&&(u||o.next(i?rw(i,a):a),o.complete())}))}});return n?r.pipe(zm(n)):r}(OS(t,n).map(AS)).pipe(ne(IS))}}(kS(e)):null}function FS(e,n){return null===e?[n]:Array.isArray(e)?[...e,n]:[e,n]}function T_(e){return e?Array.isArray(e)?e:[e]:[]}function Sf(e,n){return Array.isArray(e)?e.includes(n):e===n}function VS(e,n){const t=T_(n);return T_(e).forEach(r=>{Sf(t,r)||t.push(r)}),t}function HS(e,n){return T_(n).filter(t=>!Sf(e,t))} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class BS{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=M_(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=N_(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n){this.control&&this.control.reset(n)}hasError(n,t){return!!this.control&&this.control.hasError(n,t)}getError(n,t){return this.control?this.control.getError(n,t):null}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class kn extends BS{get formDirective(){return null}get path(){return null}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class Do extends BS{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let A_=(()=>{class e extends class jS{constructor(n){this._cd=n}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}}{constructor(t){super(t)}}return e.\u0275fac=function(t){return new(t||e)(C(Do,2))},e.\u0275dir=H({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(t,i){2&t&&ht("ng-untouched",i.isUntouched)("ng-touched",i.isTouched)("ng-pristine",i.isPristine)("ng-dirty",i.isDirty)("ng-valid",i.isValid)("ng-invalid",i.isInvalid)("ng-pending",i.isPending)},features:[He]}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const Pc="VALID",Mf="INVALID",ja="PENDING",Lc="DISABLED";function US(e){return Array.isArray(e)?M_(e):e||null}function GS(e){return Array.isArray(e)?N_(e):e||null}function Nf(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}function Vc(e,n){(function P_(e,n){const t=function PS(e){return e._rawValidators}(e);null!==n.validator?e.setValidators(FS(t,n.validator)):"function"==typeof t&&e.setValidators([t]);const i=function LS(e){return e._rawAsyncValidators}(e);null!==n.asyncValidator?e.setAsyncValidators(FS(i,n.asyncValidator)):"function"==typeof i&&e.setAsyncValidators([i]);const r=()=>e.updateValueAndValidity();If(n._rawValidators,r),If(n._rawAsyncValidators,r)})(e,n),n.valueAccessor.writeValue(e.value),e.disabled&&n.valueAccessor.setDisabledState?.(!0),function xV(e,n){n.valueAccessor.registerOnChange(t=>{e._pendingValue=t,e._pendingChange=!0,e._pendingDirty=!0,"change"===e.updateOn&&YS(e,n)})}(e,n),function PV(e,n){const t=(i,r)=>{n.valueAccessor.writeValue(i),r&&n.viewToModelUpdate(i)};e.registerOnChange(t),n._registerOnDestroy(()=>{e._unregisterOnChange(t)})}(e,n),function FV(e,n){n.valueAccessor.registerOnTouched(()=>{e._pendingTouched=!0,"blur"===e.updateOn&&e._pendingChange&&YS(e,n),"submit"!==e.updateOn&&e.markAsTouched()})}(e,n),function RV(e,n){if(n.valueAccessor.setDisabledState){const t=i=>{n.valueAccessor.setDisabledState(i)};e.registerOnDisabledChange(t),n._registerOnDestroy(()=>{e._unregisterOnDisabledChange(t)})}}(e,n)}function If(e,n){e.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(n)})}function YS(e,n){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(e._pendingValue),e._pendingChange=!1} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function QS(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function XS(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e}const GV={provide:Do,useExisting:Te(()=>kf)},iE=(()=>Promise.resolve())(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let kf=(()=>{class e extends Do{constructor(t,i,r,o,s){super(),this._changeDetectorRef=s,this.control=new class extends class zS{constructor(n,t){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._rawValidators=n,this._rawAsyncValidators=t,this._composedValidatorFn=US(this._rawValidators),this._composedAsyncValidatorFn=GS(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get valid(){return this.status===Pc}get invalid(){return this.status===Mf}get pending(){return this.status==ja}get disabled(){return this.status===Lc}get enabled(){return this.status!==Lc}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._rawValidators=n,this._composedValidatorFn=US(n)}setAsyncValidators(n){this._rawAsyncValidators=n,this._composedAsyncValidatorFn=GS(n)}addValidators(n){this.setValidators(VS(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(VS(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(HS(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(HS(n,this._rawAsyncValidators))}hasValidator(n){return Sf(this._rawValidators,n)}hasAsyncValidator(n){return Sf(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){this.touched=!0,this._parent&&!n.onlySelf&&this._parent.markAsTouched(n)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(n=>n.markAllAsTouched())}markAsUntouched(n={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}markAsDirty(n={}){this.pristine=!1,this._parent&&!n.onlySelf&&this._parent.markAsDirty(n)}markAsPristine(n={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}markAsPending(n={}){this.status=ja,!1!==n.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!n.onlySelf&&this._parent.markAsPending(n)}disable(n={}){const t=this._parentMarkedDirty(n.onlySelf);this.status=Lc,this.errors=null,this._forEachChild(i=>{i.disable({...n,onlySelf:!0})}),this._updateValue(),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:t}),this._onDisabledChange.forEach(i=>i(!0))}enable(n={}){const t=this._parentMarkedDirty(n.onlySelf);this.status=Pc,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:t}),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Pc||this.status===ja)&&this._runAsyncValidator(n.emitEvent)),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity(n)}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Lc:Pc}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n){if(this.asyncValidator){this.status=ja,this._hasOwnPendingAsyncValidator=!0;const t=AS(this.asyncValidator(this));this._asyncValidationSubscription=t.subscribe(i=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(i,{emitEvent:n})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(n,t={}){this.errors=n,this._updateControlsErrors(!1!==t.emitEvent)}get(n){let t=n;return null==t||(Array.isArray(t)||(t=t.split(".")),0===t.length)?null:t.reduce((i,r)=>i&&i._find(r),this)}getError(n,t){const i=t?this.get(t):this;return i&&i.errors?i.errors[n]:null}hasError(n,t){return!!this.getError(n,t)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(n)}_initObservables(){this.valueChanges=new ue,this.statusChanges=new ue}_calculateStatus(){return this._allControlsDisabled()?Lc:this.errors?Mf:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(ja)?ja:this._anyControlsHaveStatus(Mf)?Mf:Pc}_anyControlsHaveStatus(n){return this._anyControls(t=>t.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n={}){this.pristine=!this._anyControlsDirty(),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}_updateTouched(n={}){this.touched=this._anyControlsTouched(),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){Nf(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(n){return null}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */{constructor(n=null,t,i){super(function R_(e){return(Nf(e)?e.validators:e)||null}(t),function x_(e,n){return(Nf(n)?n.asyncValidators:e)||null}(i,t)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),Nf(t)&&(t.nonNullable||t.initialValueIsDefault)&&(this.defaultValue=XS(n)?n.value:n)}setValue(n,t={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==t.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==t.emitViewToModelChange)),this.updateValueAndValidity(t)}patchValue(n,t={}){this.setValue(n,t)}reset(n=this.defaultValue,t={}){this._applyFormState(n),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){QS(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){QS(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(n){XS(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}},this._registered=!1,this.update=new ue,this._parent=t,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=function V_(e,n){if(!n)return null;let t,i,r;return Array.isArray(n),n.forEach(o=>{o.constructor===Fc?t=o:function HV(e){return Object.getPrototypeOf(e.constructor)===ls}(o)?i=o:r=o}),r||i||t||null}(0,o)}ngOnChanges(t){if(this._checkForErrors(),!this._registered||"name"in t){if(this._registered&&(this._checkName(),this.formDirective)){const i=t.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in t&&this._updateDisabled(t),function L_(e,n){if(!e.hasOwnProperty("model"))return!1;const t=e.model;return!!t.isFirstChange()||!Object.is(n,t.currentValue)}(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){Vc(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(t){iE.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){const i=t.isDisabled.currentValue,r=0!==i&&function Hr(e){return"boolean"==typeof e?e:null!=e&&"false"!==e} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */(i);iE.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent? -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function Tf(e,n){return[...n.path,e]}(t,this._parent):[t]}}return e.\u0275fac=function(t){return new(t||e)(C(kn,9),C(yn,10),C(bo,10),C(ur,10),C(Vr,8))},e.\u0275dir=H({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[it([GV]),He,Kt]}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const KV={provide:ur,useExisting:Te(()=>B_),multi:!0};let B_=(()=>{class e extends ls{writeValue(t){this.setProperty("value",t??"")}registerOnChange(t){this.onChange=i=>{t(""==i?null:parseFloat(i))}}}return e.\u0275fac=function(){let n;return function(i){return(n||(n=nt(e)))(i||e)}}(),e.\u0275dir=H({type:e,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(t,i){1&t&&W("input",function(o){return i.onChange(o.target.value)})("blur",function(){return i.onTouched()})},features:[it([KV]),He]}),e})(),rE=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({}),e})(),gH=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[rE]}),e})(),CE=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[gH]}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const wE=new q("ngx-mask config"),SE=new q("new ngx-mask config"),EE=new q("initial ngx-mask config"),_H={suffix:"",prefix:"",thousandSeparator:" ",decimalMarker:[".",","],clearIfNotMatch:!1,showTemplate:!1,showMaskTyped:!1,placeHolderCharacter:"_",dropSpecialCharacters:!0,hiddenInput:void 0,shownMaskExpression:"",separatorLimit:"",allowNegativeNumbers:!1,validation:!0,specialCharacters:["-","/","(",")",".",":"," ","+",",","@","[","]",'"',"'"],leadZeroDateTime:!1,triggerOnMaskChange:!1,maskFilled:new ue,patterns:{0:{pattern:new RegExp("\\d")},9:{pattern:new RegExp("\\d"),optional:!0},X:{pattern:new RegExp("\\d"),symbol:"*"},A:{pattern:new RegExp("[a-zA-Z0-9]")},S:{pattern:new RegExp("[a-zA-Z]")},U:{pattern:new RegExp("[A-Z]")},L:{pattern:new RegExp("[a-z]")},d:{pattern:new RegExp("\\d")},m:{pattern:new RegExp("\\d")},M:{pattern:new RegExp("\\d")},H:{pattern:new RegExp("\\d")},h:{pattern:new RegExp("\\d")},s:{pattern:new RegExp("\\d")}}}; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */let vH=(()=>{class e{constructor(t){this._config=t,this.maskExpression="",this.actualValue="",this.shownMaskExpression="",this._formatWithSeparators=(i,r,o,s)=>{let a=[],l="";if(Array.isArray(o)){const v=new RegExp(o.map(y=>"[\\^$.|?*+()".indexOf(y)>=0?`\\${y}`:y).join("|"));a=i.split(v),l=i.match(v)?.[0]??""}else a=i.split(o),l=o;const u=a.length>1?`${l}${a[1]}`:"";let f=a[0]??"";const p=this.separatorLimit.replace(/\s/g,"");p&&+p&&(f="-"===f[0]?`-${f.slice(1,f.length).slice(0,p.length)}`:f.slice(0,p.length));const m=/(\d+)(\d{3})/;for(;r&&m.test(f);)f=f.replace(m,"$1"+r+"$2");return void 0===s?f+u:0===s?f:f+u.substring(0,s+1)},this.percentage=i=>Number(i)>=0&&Number(i)<=100,this.getPrecision=i=>{const r=i.split(".");return r.length>1?Number(r[r.length-1]):1/0},this.checkAndRemoveSuffix=i=>{for(let r=this.suffix?.length-1;r>=0;r--){const o=this.suffix.substring(r,this.suffix?.length);if(i.includes(o)&&r!==this.suffix?.length-1&&(r-1<0||!i.includes(this.suffix.substring(r-1,this.suffix?.length))))return i.replace(o,"")}return i},this.checkInputPrecision=(i,r,o)=>{if(r<1/0){if(Array.isArray(o)){const u=o.find(f=>f!==this.thousandSeparator);o=u||o[0]}const s=new RegExp(this._charToRegExpExpression(o)+`\\d{${r}}.*$`),l=(i.match(s)??[])[0]?.length??0;l-1>r&&(i=i.substring(0,i.length-(l-1-r))),0===r&&this._compareOrIncludes(i[i.length-1],o,this.thousandSeparator)&&(i=i.substring(0,i.length-1))}return i},this._shift=new Set,this.clearIfNotMatch=this._config.clearIfNotMatch,this.dropSpecialCharacters=this._config.dropSpecialCharacters,this.maskSpecialCharacters=this._config.specialCharacters,this.maskAvailablePatterns=this._config.patterns,this.prefix=this._config.prefix,this.suffix=this._config.suffix,this.thousandSeparator=this._config.thousandSeparator,this.decimalMarker=this._config.decimalMarker,this.hiddenInput=this._config.hiddenInput,this.showMaskTyped=this._config.showMaskTyped,this.placeHolderCharacter=this._config.placeHolderCharacter,this.validation=this._config.validation,this.separatorLimit=this._config.separatorLimit,this.allowNegativeNumbers=this._config.allowNegativeNumbers,this.leadZeroDateTime=this._config.leadZeroDateTime}applyMaskWithPattern(t,i){const[r,o]=i;return this.customPattern=o,this.applyMask(t,r)}applyMask(t,i,r=0,o=!1,s=!1,a=(()=>{})){if(!i||"string"!=typeof t)return"";let l=0,u="",f=!1,p=!1,m=1,v=!1;t.slice(0,this.prefix.length)===this.prefix&&(t=t.slice(this.prefix.length,t.length)),this.suffix&&t?.length>0&&(t=this.checkAndRemoveSuffix(t));const y=t.toString().split("");if("IP"===i){const O=t.split(".");this.ipError=this._validIP(O),i="099.099.099.099"}const D=[];for(let O=0;O11?"00.000.000/0000-00":"000.000.000-00"),i.startsWith("percent")){if(t.match("[a-z]|[A-Z]")||t.match(/[-!$%^&*()_+|~=`{}\[\]:";'<>?,\/.]/)){t=this._stripToDecimal(t);const O=this.getPrecision(i);t=this.checkInputPrecision(t,O,this.decimalMarker)}t.indexOf(".")>0&&!this.percentage(t.substring(0,t.indexOf(".")))&&(t=`${t.substring(0,t.indexOf(".")-1)}${t.substring(t.indexOf("."),t.length)}`),u=this.percentage(t)?t:t.substring(0,t.length-1)}else if(i.startsWith("separator")){(t.match("[w\u0430-\u044f\u0410-\u042f]")||t.match("[\u0401\u0451\u0410-\u044f]")||t.match("[a-z]|[A-Z]")||t.match(/[-@#!$%\\^&*()_\xa3\xac'+|~=`{}\]:";<>.?/]/)||t.match("[^A-Za-z0-9,]"))&&(t=this._stripToDecimal(t)),t=t.length>1&&"0"===t[0]&&t[1]!==this.thousandSeparator&&!this._compareOrIncludes(t[1],this.decimalMarker,this.thousandSeparator)&&!s?t.slice(0,t.length-1):t,s&&(t=this._compareOrIncludes(t[t.length-1],this.decimalMarker,this.thousandSeparator)?t.slice(0,t.length-1):t);const O=this._charToRegExpExpression(this.thousandSeparator);let R='@#!$%^&*()_+|~=`{}\\[\\]:\\s,\\.";<>?\\/'.replace(O,"");if(Array.isArray(this.decimalMarker))for(const Ie of this.decimalMarker)R=R.replace(this._charToRegExpExpression(Ie),"");else R=R.replace(this._charToRegExpExpression(this.decimalMarker),"");const U=new RegExp("["+R+"]");(t.match(U)||1===t.length&&this._compareOrIncludes(t,this.decimalMarker,this.thousandSeparator))&&(t=t.substring(0,t.length-1));const ge=this.getPrecision(i),Ce=(t=this.checkInputPrecision(t,ge,this.decimalMarker)).replace(new RegExp(O,"g"),"");u=this._formatWithSeparators(Ce,this.thousandSeparator,this.decimalMarker,ge);const Ye=u.indexOf(",")-t.indexOf(","),Le=u.length-t.length;if(Le>0&&","!==u[r]){p=!0;let Ie=0;do{this._shift.add(r+Ie),Ie++}while(Ie0&&!(u.indexOf(",")>=r&&r>3)||!(u.indexOf(".")>=r&&r>3)&&Le<=0?(this._shift.clear(),p=!0,m=Le,this._shift.add(r+=Le)):this._shift.clear()}else for(let O=0,R=y[0];O2){l+=1,this._shiftStep(i,l,y.length),O--,this.leadZeroDateTime&&(u+="0");continue}if("h"===i[l]&&"2"===u&&Number(R)>3){l+=1,O--;continue}if("m"===i[l]&&Number(R)>5){l+=1,this._shiftStep(i,l,y.length),O--,this.leadZeroDateTime&&(u+="0");continue}if("s"===i[l]&&Number(R)>5){l+=1,this._shiftStep(i,l,y.length),O--,this.leadZeroDateTime&&(u+="0");continue}const U=31;if("d"===i[l]&&(Number(R)>3&&this.leadZeroDateTime||Number(t.slice(l,l+2))>U||"/"===t[l+1])){l+=1,this._shiftStep(i,l,y.length),O--,this.leadZeroDateTime&&(u+="0");continue}if("M"===i[l]){const Ce=0===l&&(Number(R)>2||Number(t.slice(l,l+2))>12||"/"===t[l+1]),Ye=t.slice(l-3,l-1).includes("/")&&("/"===t[l-2]&&Number(t.slice(l-1,l+1))>12&&"/"!==t[l]||"/"===t[l]||"/"===t[l-3]&&Number(t.slice(l-2,l))>12&&"/"!==t[l-1]||"/"===t[l-1]),Le=Number(t.slice(l-3,l-1))<=U&&!t.slice(l-3,l-1).includes("/")&&"/"===t[l-1]&&(Number(t.slice(l,l+2))>12||"/"===t[l+1]),Ie=Number(t.slice(l-3,l-1))>U&&!t.slice(l-3,l-1).includes("/")&&!t.slice(l-2,l).includes("/")&&Number(t.slice(l-2,l))>12,cn=Number(t.slice(l-3,l-1))<=U&&!t.slice(l-3,l-1).includes("/")&&"/"!==t[l-1]&&Number(t.slice(l-1,l+1))>12;if(Number(R)>1&&this.leadZeroDateTime||Ce||Ye||Le||Ie||cn){l+=1,this._shiftStep(i,l,y.length),O--,this.leadZeroDateTime&&(u+="0");continue}}u+=R,l++}else" "===R&&" "===i[l]?(u+=R,l++):-1!==this.maskSpecialCharacters.indexOf(i[l]??"")?(u+=i[l],l++,this._shiftStep(i,l,y.length),O--):this.maskSpecialCharacters.indexOf(R)>-1&&this.maskAvailablePatterns[i[l]??""]&&this.maskAvailablePatterns[i[l]??""]?.optional?(!!y[l]&&"099.099.099.099"!==i&&"000.000.000-00"!==i&&"00.000.000/0000-00"!==i&&!i.match(/^9+\.0+$/)&&(u+=y[l]),l++,O--):"*"===this.maskExpression[l+1]&&this._findSpecialChar(this.maskExpression[l+2]??"")&&this._findSpecialChar(R)===this.maskExpression[l+2]&&f||"?"===this.maskExpression[l+1]&&this._findSpecialChar(this.maskExpression[l+2]??"")&&this._findSpecialChar(R)===this.maskExpression[l+2]&&f?(l+=3,u+=R):this.showMaskTyped&&this.maskSpecialCharacters.indexOf(R)<0&&R!==this.placeHolderCharacter&&(v=!0);u.length+1===i.length&&-1!==this.maskSpecialCharacters.indexOf(i[i.length-1]??"")&&(u+=i[i.length-1]);let w=r+1;for(;this._shift.has(w);)m++,w++;let M=o&&!i.startsWith("separator")?l:this._shift.has(r)?m:0;v&&M--,a(M,p),m<0&&this._shift.clear();let I=!1;s&&(I=y.every(O=>this.maskSpecialCharacters.includes(O)));let S=`${this.prefix}${I?"":u}${this.suffix}`;return 0===u.length&&(S=`${this.prefix}${u}`),S}_findSpecialChar(t){return this.maskSpecialCharacters.find(i=>i===t)}_checkSymbolMask(t,i){return this.maskAvailablePatterns=this.customPattern?this.customPattern:this.maskAvailablePatterns,(this.maskAvailablePatterns[i]?.pattern&&this.maskAvailablePatterns[i]?.pattern.test(t))??!1}_stripToDecimal(t){return t.split("").filter((i,r)=>{const o="string"==typeof this.decimalMarker?i===this.decimalMarker:this.decimalMarker.includes(i);return i.match("^-?\\d")||i===this.thousandSeparator||o||"-"===i&&0===r&&this.allowNegativeNumbers}).join("")}_charToRegExpExpression(t){return t&&(" "===t?"\\s":"[\\^$.|?*+()".indexOf(t)>=0?`\\${t}`:t)}_shiftStep(t,i,r){const o=/[*?]/g.test(t.slice(0,i))?r:i;this._shift.add(o+this.prefix.length||0)}_compareOrIncludes(t,i,r){return Array.isArray(i)?i.filter(o=>o!==r).includes(t):t===i}_validIP(t){return!(4===t.length&&!t.some((i,r)=>t.length!==r+1?""===i||Number(i)>255:""===i||Number(i.substring(0,3))>255))}}return e.\u0275fac=function(t){return new(t||e)(L(wE))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})();function yH(e,n){return n instanceof Function?{...e,...n()}:{...e,...n}}let bH=(()=>{class e{static forRoot(t){return{ngModule:e,providers:[{provide:SE,useValue:t},{provide:EE,useValue:_H},{provide:wE,useFactory:yH,deps:[EE,SE]},vH]}}static forChild(){return{ngModule:e}}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({}),e})();const ME=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};ME.KeyboardEvent||(ME.KeyboardEvent=function(e,n){});let NE=(()=>{class e{constructor(t,i){this.document=t,this.platformId=i,this.documentIsAccessible=function RC(e){return e===kC}(this.platformId)}static getCookieRegExp(t){const i=t.replace(/([\[\]\{\}\(\)\|\=\;\+\?\,\.\*\^\$])/gi,"\\$1");return new RegExp("(?:^"+i+"|;\\s*"+i+")=(.*?)(?:;|$)","g")}static safeDecodeURIComponent(t){try{return decodeURIComponent(t)}catch{return t}}check(t){return!!this.documentIsAccessible&&(t=encodeURIComponent(t),e.getCookieRegExp(t).test(this.document.cookie))}get(t){if(this.documentIsAccessible&&this.check(t)){t=encodeURIComponent(t);const r=e.getCookieRegExp(t).exec(this.document.cookie);return r[1]?e.safeDecodeURIComponent(r[1]):""}return""}getAll(){if(!this.documentIsAccessible)return{};const t={},i=this.document;return i.cookie&&""!==i.cookie&&i.cookie.split(";").forEach(r=>{const[o,s]=r.split("=");t[e.safeDecodeURIComponent(o.replace(/^ /,""))]=e.safeDecodeURIComponent(s)}),t}set(t,i,r,o,s,a,l){if(!this.documentIsAccessible)return;if("number"==typeof r||r instanceof Date||o||s||a||l)return void this.set(t,i,{expires:r,path:o,domain:s,secure:a,sameSite:l||"Lax"});let u=encodeURIComponent(t)+"="+encodeURIComponent(i)+";";const f=r||{};f.expires&&(u+="number"==typeof f.expires?"expires="+new Date((new Date).getTime()+1e3*f.expires*60*60*24).toUTCString()+";":"expires="+f.expires.toUTCString()+";"),f.path&&(u+="path="+f.path+";"),f.domain&&(u+="domain="+f.domain+";"),!1===f.secure&&"None"===f.sameSite&&(f.secure=!0,console.warn(`[ngx-cookie-service] Cookie ${t} was forced with secure flag because sameSite=None.More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`)),f.secure&&(u+="secure;"),f.sameSite||(f.sameSite="Lax"),u+="sameSite="+f.sameSite+";",this.document.cookie=u}delete(t,i,r,o,s="Lax"){if(!this.documentIsAccessible)return;const a=new Date("Thu, 01 Jan 1970 00:00:01 GMT");this.set(t,"",{expires:a,path:i,domain:r,secure:o,sameSite:s})}deleteAll(t,i,r,o="Lax"){if(!this.documentIsAccessible)return;const s=this.getAll();for(const a in s)s.hasOwnProperty(a)&&this.delete(a,t,i,r,o)}}return e.\u0275fac=function(t){return new(t||e)(L(Dt),L(dc))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const DH=[];let CH=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[Cf.forRoot(DH),Cf]}),e})(),wH=(()=>{class e{constructor(){this.title="dashboard"}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275cmp=et({type:e,selectors:[["app-root"]],decls:1,vars:0,template:function(t,i){1&t&&Li(0,"router-outlet")},dependencies:[d_],encapsulation:2}),e})();const SH=["addListener","removeListener"],EH=["addEventListener","removeEventListener"],MH=["on","off"];function Rn(e,n,t,i){if(ye(t)&&(i=t,t=void 0),i)return Rn(e,n,t).pipe(zm(i));const[r,o]=function AH(e){return ye(e.addEventListener)&&ye(e.removeEventListener)}(e)?EH.map(s=>a=>e[s](n,a,t)):function NH(e){return ye(e.addListener)&&ye(e.removeListener)}(e)?SH.map(TE(e,n)):function TH(e){return ye(e.on)&&ye(e.off)}(e)?MH.map(TE(e,n)):[];if(!r&&Ts(e))return dt(s=>Rn(s,n,t))(ut(e));if(!r)throw new TypeError("Invalid event target");return new je(s=>{const a=(...l)=>s.next(1o(a)})}function TE(e,n){return t=>i=>e[t](n,i)}class IH extends Ct{constructor(n,t){super()}schedule(n,t=0){return this}}const Rf={setInterval(e,n,...t){const{delegate:i}=Rf;return i?.setInterval?i.setInterval(e,n,...t):setInterval(e,n,...t)},clearInterval(e){const{delegate:n}=Rf;return(n?.clearInterval||clearInterval)(e)},delegate:void 0},AE={now:()=>(AE.delegate||Date).now(),delegate:void 0};class Bc{constructor(n,t=Bc.now){this.schedulerActionCtor=n,this.now=t}schedule(n,t=0,i){return new this.schedulerActionCtor(this,n).schedule(i,t)}}Bc.now=AE.now;const xf=new class kH extends Bc{constructor(n,t=Bc.now){super(n,t),this.actions=[],this._active=!1}flush(n){const{actions:t}=this;if(this._active)return void t.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=t.shift());if(this._active=!1,i){for(;n=t.shift();)n.unsubscribe();throw i}}}(class OH extends IH{constructor(n,t){super(n,t),this.scheduler=n,this.work=t,this.pending=!1}schedule(n,t=0){var i;if(this.closed)return this;this.state=n;const r=this.id,o=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(o,r,t)),this.pending=!0,this.delay=t,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(o,this.id,t),this}requestAsyncId(n,t,i=0){return Rf.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,t,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return t;null!=t&&Rf.clearInterval(t)}execute(n,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,t);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,t){let r,i=!1;try{this.work(n)}catch(o){i=!0,r=o||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),r}unsubscribe(){if(!this.closed){const{id:n,scheduler:t}=this,{actions:i}=t;this.work=this.state=this.scheduler=null,this.pending=!1,dn(i,this),null!=n&&(this.id=this.recycleAsyncId(t,n,null)),this.delay=null,super.unsubscribe()}}}),RH=xf;function jc(e=0,n,t=RH){let i=-1;return null!=n&&(si(n)?t=n:i=n),new je(r=>{let o=function xH(e){return e instanceof Date&&!isNaN(e)}(e)?+e-t.now():e;o<0&&(o=0);let s=0;return t.schedule(function(){r.closed||(r.next(s++),0<=i?this.schedule(void 0,i):r.complete())},o)})}const{isArray:FH}=Array;function IE(e){return 1===e.length&&FH(e[0])?e[0]:e}function Ff(...e){const n=rt(e),t=IE(e);return t.length?new je(i=>{let r=t.map(()=>[]),o=t.map(()=>!1);i.add(()=>{r=o=null});for(let s=0;!i.closed&&s{if(r[s].push(a),r.every(l=>l.length)){const l=r.map(u=>u.shift());i.next(n?n(...l):l),r.some((u,f)=>!u.length&&o[f])&&i.complete()}},()=>{o[s]=!0,!r[s].length&&i.complete()}));return()=>{r=o=null}}):Xt}function Vt(e){return qe((n,t)=>{ut(e).subscribe(ke(t,()=>t.complete(),Dn)),!t.closed&&n.subscribe(t)})}function Y_(...e){const n=rt(e);return qe((t,i)=>{const r=e.length,o=new Array(r);let s=e.map(()=>!1),a=!1;for(let l=0;l{o[l]=u,!a&&!s[l]&&(s[l]=!0,(a=s.every(xn))&&(s=null))},Dn));t.subscribe(ke(i,l=>{if(a){const u=[l,...o];i.next(n?n(...u):u)}}))})}function QB(e,n){if(1&e){const t=At();E(0,"button",1),W("click",function(){return mt(t),_t(K().close())}),T()}}new je(Dn),Math,Math,Math;const JE=["*"],mj=["dialog"];function sv(e){return"string"==typeof e}function fs(e){return null!=e}function Ka(e){return(e||document.body).getBoundingClientRect()}const QE={animation:!0,transitionTimerDelayMs:5},u$=()=>{},{transitionTimerDelayMs:d$}=QE,Yc=new Map,bn=(e,n,t,i)=>{let r=i.context||{};const o=Yc.get(n);if(o)switch(i.runningTransition){case"continue":return Xt;case"stop":e.run(()=>o.transition$.complete()),r=Object.assign(o.context,r),Yc.delete(n)}const s=t(n,i.animation,r)||u$;if(!i.animation||"none"===window.getComputedStyle(n).transitionProperty)return e.run(()=>s()),Z(void 0).pipe(function l$(e){return n=>new je(t=>n.subscribe({next:s=>e.run(()=>t.next(s)),error:s=>e.run(()=>t.error(s)),complete:()=>e.run(()=>t.complete())}))}(e));const a=new Ue,l=new Ue,u=a.pipe(function LH(...e){return n=>Dc(n,Z(...e))}(!0));Yc.set(n,{transition$:a,complete:()=>{l.next(),l.complete()},context:r});const f=function c$(e){const{transitionDelay:n,transitionDuration:t}=window.getComputedStyle(e);return 1e3*(parseFloat(n)+parseFloat(t))}(n);return e.runOutsideAngular(()=>{const p=Rn(n,"transitionend").pipe(Vt(u),vn(({target:v})=>v===n));(function OE(...e){return 1===(e=IE(e)).length?ut(e[0]):new je(function PH(e){return n=>{let t=[];for(let i=0;t&&!n.closed&&i{if(t){for(let o=0;o{Yc.delete(n),e.run(()=>{s(),a.next(),a.complete()})})}),a.asObservable()};let qc=(()=>{class e{constructor(){this.animation=QE.animation}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),rM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})();const _$=({classList:e})=>{e.remove("show")};let v$=(()=>{class e{constructor(t){this._ngbConfig=t,this.dismissible=!0,this.type="warning"}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(t){this._animation=t}}return e.\u0275fac=function(t){return new(t||e)(L(qc))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),y$=(()=>{class e{constructor(t,i,r,o){this._renderer=i,this._element=r,this._zone=o,this.closed=new ue,this.dismissible=t.dismissible,this.type=t.type,this.animation=t.animation}close(){const t=bn(this._zone,this._element.nativeElement,_$,{animation:this.animation,runningTransition:"continue"});return t.subscribe(()=>this.closed.emit()),t}ngOnChanges(t){const i=t.type;i&&!i.firstChange&&(this._renderer.removeClass(this._element.nativeElement,`alert-${i.previousValue}`),this._renderer.addClass(this._element.nativeElement,`alert-${i.currentValue}`))}ngOnInit(){this._renderer.addClass(this._element.nativeElement,`alert-${this.type}`)}}return e.\u0275fac=function(t){return new(t||e)(C(v$),C(pi),C(Ze),C(ze))},e.\u0275cmp=et({type:e,selectors:[["ngb-alert"]],hostAttrs:["role","alert",1,"alert","show"],hostVars:4,hostBindings:function(t,i){2&t&&ht("fade",i.animation)("alert-dismissible",i.dismissible)},inputs:{animation:"animation",dismissible:"dismissible",type:"type"},outputs:{closed:"closed"},exportAs:["ngbAlert"],features:[Kt],ngContentSelectors:JE,decls:2,vars:1,consts:function(){let n;return n=$localize`:@@ngb.alert.close:Close`,[["type","button","class","btn-close","aria-label",n,3,"click",4,"ngIf"],["type","button","aria-label",n,1,"btn-close",3,"click"]]},template:function(t,i){1&t&&(Fg(),Pg(0),J(1,QB,1,0,"button",0)),2&t&&(F(1),Q("ngIf",i.dismissible))},dependencies:[ns],styles:["ngb-alert{display:block}\n"],encapsulation:2,changeDetection:0}),e})(),oM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),lM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),cM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({}),e})();var Ht=(()=>{return(e=Ht||(Ht={}))[e.Tab=9]="Tab",e[e.Enter=13]="Enter",e[e.Escape=27]="Escape",e[e.Space=32]="Space",e[e.PageUp=33]="PageUp",e[e.PageDown=34]="PageDown",e[e.End=35]="End",e[e.Home=36]="Home",e[e.ArrowLeft=37]="ArrowLeft",e[e.ArrowUp=38]="ArrowUp",e[e.ArrowRight=39]="ArrowRight",e[e.ArrowDown=40]="ArrowDown",Ht;var e})();typeof navigator<"u"&&navigator.userAgent&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||/Macintosh/.test(navigator.userAgent)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2||/Android/.test(navigator.userAgent));const dM=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","[contenteditable]",'[tabindex]:not([tabindex="-1"])'].join(", ");function fM(e){const n=Array.from(e.querySelectorAll(dM)).filter(t=>-1!==t.tabIndex);return[n[0],n[n.length-1]]}new Date(1882,10,12),new Date(2174,10,25);let bM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei,CE]}),e})(),hv=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275dir=H({type:e,selectors:[["",8,"navbar"]]}),e})(),wM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({}),e})();class ms{constructor(n,t,i){this.nodes=n,this.viewRef=t,this.componentRef=i}}let iU=(()=>{class e{constructor(t,i){this._el=t,this._zone=i}ngOnInit(){this._zone.onStable.asObservable().pipe(sn(1)).subscribe(()=>{bn(this._zone,this._el.nativeElement,(t,i)=>{i&&Ka(t),t.classList.add("show")},{animation:this.animation,runningTransition:"continue"})})}hide(){return bn(this._zone,this._el.nativeElement,({classList:t})=>t.remove("show"),{animation:this.animation,runningTransition:"stop"})}}return e.\u0275fac=function(t){return new(t||e)(C(Ze),C(ze))},e.\u0275cmp=et({type:e,selectors:[["ngb-modal-backdrop"]],hostAttrs:[2,"z-index","1055"],hostVars:6,hostBindings:function(t,i){2&t&&(Zo("modal-backdrop"+(i.backdropClass?" "+i.backdropClass:"")),ht("show",!i.animation)("fade",i.animation))},inputs:{animation:"animation",backdropClass:"backdropClass"},decls:0,vars:0,template:function(t,i){},encapsulation:2}),e})();class pr{close(n){}dismiss(n){}}class rU{constructor(n,t,i,r){this._windowCmptRef=n,this._contentRef=t,this._backdropCmptRef=i,this._beforeDismiss=r,this._closed=new Ue,this._dismissed=new Ue,this._hidden=new Ue,n.instance.dismissEvent.subscribe(o=>{this.dismiss(o)}),this.result=new Promise((o,s)=>{this._resolve=o,this._reject=s}),this.result.then(null,()=>{})}get componentInstance(){if(this._contentRef&&this._contentRef.componentRef)return this._contentRef.componentRef.instance}get closed(){return this._closed.asObservable().pipe(Vt(this._hidden))}get dismissed(){return this._dismissed.asObservable().pipe(Vt(this._hidden))}get hidden(){return this._hidden.asObservable()}get shown(){return this._windowCmptRef.instance.shown.asObservable()}close(n){this._windowCmptRef&&(this._closed.next(n),this._resolve(n),this._removeModalElements())}_dismiss(n){this._dismissed.next(n),this._reject(n),this._removeModalElements()}dismiss(n){if(this._windowCmptRef)if(this._beforeDismiss){const t=this._beforeDismiss();!function ZE(e){return e&&e.then}(t)?!1!==t&&this._dismiss(n):t.then(i=>{!1!==i&&this._dismiss(n)},()=>{})}else this._dismiss(n)}_removeModalElements(){const n=this._windowCmptRef.instance.hide(),t=this._backdropCmptRef?this._backdropCmptRef.instance.hide():Z(void 0);n.subscribe(()=>{const{nativeElement:i}=this._windowCmptRef.location;i.parentNode.removeChild(i),this._windowCmptRef.destroy(),this._contentRef&&this._contentRef.viewRef&&this._contentRef.viewRef.destroy(),this._windowCmptRef=null,this._contentRef=null}),t.subscribe(()=>{if(this._backdropCmptRef){const{nativeElement:i}=this._backdropCmptRef.location;i.parentNode.removeChild(i),this._backdropCmptRef.destroy(),this._backdropCmptRef=null}}),Ff(n,t).subscribe(()=>{this._hidden.next(),this._hidden.complete()})}}var Xc=(()=>{return(e=Xc||(Xc={}))[e.BACKDROP_CLICK=0]="BACKDROP_CLICK",e[e.ESC=1]="ESC",Xc;var e})();let oU=(()=>{class e{constructor(t,i,r){this._document=t,this._elRef=i,this._zone=r,this._closed$=new Ue,this._elWithFocus=null,this.backdrop=!0,this.keyboard=!0,this.dismissEvent=new ue,this.shown=new Ue,this.hidden=new Ue}get fullscreenClass(){return!0===this.fullscreen?" modal-fullscreen":sv(this.fullscreen)?` modal-fullscreen-${this.fullscreen}-down`:""}dismiss(t){this.dismissEvent.emit(t)}ngOnInit(){this._elWithFocus=this._document.activeElement,this._zone.onStable.asObservable().pipe(sn(1)).subscribe(()=>{this._show()})}ngOnDestroy(){this._disableEventHandling()}hide(){const{nativeElement:t}=this._elRef,i={animation:this.animation,runningTransition:"stop"},s=Ff(bn(this._zone,t,()=>t.classList.remove("show"),i),bn(this._zone,this._dialogEl.nativeElement,()=>{},i));return s.subscribe(()=>{this.hidden.next(),this.hidden.complete()}),this._disableEventHandling(),this._restoreFocus(),s}_show(){const t={animation:this.animation,runningTransition:"continue"};Ff(bn(this._zone,this._elRef.nativeElement,(o,s)=>{s&&Ka(o),o.classList.add("show")},t),bn(this._zone,this._dialogEl.nativeElement,()=>{},t)).subscribe(()=>{this.shown.next(),this.shown.complete()}),this._enableEventHandling(),this._setFocus()}_enableEventHandling(){const{nativeElement:t}=this._elRef;this._zone.runOutsideAngular(()=>{Rn(t,"keydown").pipe(Vt(this._closed$),vn(r=>r.which===Ht.Escape)).subscribe(r=>{this.keyboard?requestAnimationFrame(()=>{r.defaultPrevented||this._zone.run(()=>this.dismiss(Xc.ESC))}):"static"===this.backdrop&&this._bumpBackdrop()});let i=!1;Rn(this._dialogEl.nativeElement,"mousedown").pipe(Vt(this._closed$),Yt(()=>i=!1),vi(()=>Rn(t,"mouseup").pipe(Vt(this._closed$),sn(1))),vn(({target:r})=>t===r)).subscribe(()=>{i=!0}),Rn(t,"click").pipe(Vt(this._closed$)).subscribe(({target:r})=>{t===r&&("static"===this.backdrop?this._bumpBackdrop():!0===this.backdrop&&!i&&this._zone.run(()=>this.dismiss(Xc.BACKDROP_CLICK))),i=!1})})}_disableEventHandling(){this._closed$.next()}_setFocus(){const{nativeElement:t}=this._elRef;if(!t.contains(document.activeElement)){const i=t.querySelector("[ngbAutofocus]"),r=fM(t)[0];(i||r||t).focus()}}_restoreFocus(){const t=this._document.body,i=this._elWithFocus;let r;r=i&&i.focus&&t.contains(i)?i:t,this._zone.runOutsideAngular(()=>{setTimeout(()=>r.focus()),this._elWithFocus=null})}_bumpBackdrop(){"static"===this.backdrop&&bn(this._zone,this._elRef.nativeElement,({classList:t})=>(t.add("modal-static"),()=>t.remove("modal-static")),{animation:this.animation,runningTransition:"continue"})}}return e.\u0275fac=function(t){return new(t||e)(C(Dt),C(Ze),C(ze))},e.\u0275cmp=et({type:e,selectors:[["ngb-modal-window"]],viewQuery:function(t,i){if(1&t&&Md(mj,7),2&t){let r;at(r=lt())&&(i._dialogEl=r.first)}},hostAttrs:["role","dialog","tabindex","-1"],hostVars:7,hostBindings:function(t,i){2&t&&(Ke("aria-modal",!0)("aria-labelledby",i.ariaLabelledBy)("aria-describedby",i.ariaDescribedBy),Zo("modal d-block"+(i.windowClass?" "+i.windowClass:"")),ht("fade",i.animation))},inputs:{animation:"animation",ariaLabelledBy:"ariaLabelledBy",ariaDescribedBy:"ariaDescribedBy",backdrop:"backdrop",centered:"centered",fullscreen:"fullscreen",keyboard:"keyboard",scrollable:"scrollable",size:"size",windowClass:"windowClass",modalDialogClass:"modalDialogClass"},outputs:{dismissEvent:"dismiss"},ngContentSelectors:JE,decls:4,vars:2,consts:[["role","document"],["dialog",""],[1,"modal-content"]],template:function(t,i){1&t&&(Fg(),E(0,"div",0,1)(2,"div",2),Pg(3),T()()),2&t&&Zo("modal-dialog"+(i.size?" modal-"+i.size:"")+(i.centered?" modal-dialog-centered":"")+i.fullscreenClass+(i.scrollable?" modal-dialog-scrollable":"")+(i.modalDialogClass?" "+i.modalDialogClass:""))},styles:["ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\n"],encapsulation:2}),e})(),sU=(()=>{class e{constructor(t){this._document=t}hide(){const t=Math.abs(window.innerWidth-this._document.documentElement.clientWidth),i=this._document.body,r=i.style,{overflow:o,paddingRight:s}=r;if(t>0){const a=parseFloat(window.getComputedStyle(i).paddingRight);r.paddingRight=`${a+t}px`}return r.overflow="hidden",()=>{t>0&&(r.paddingRight=s),r.overflow=o}}}return e.\u0275fac=function(t){return new(t||e)(L(Dt))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),aU=(()=>{class e{constructor(t,i,r,o,s,a){this._applicationRef=t,this._injector=i,this._document=r,this._scrollBar=o,this._rendererFactory=s,this._ngZone=a,this._activeWindowCmptHasChanged=new Ue,this._ariaHiddenValues=new Map,this._scrollBarRestoreFn=null,this._backdropAttributes=["animation","backdropClass"],this._modalRefs=[],this._windowAttributes=["animation","ariaLabelledBy","ariaDescribedBy","backdrop","centered","fullscreen","keyboard","scrollable","size","windowClass","modalDialogClass"],this._windowCmpts=[],this._activeInstances=new ue,this._activeWindowCmptHasChanged.subscribe(()=>{if(this._windowCmpts.length){const l=this._windowCmpts[this._windowCmpts.length-1];((e,n,t,i=!1)=>{this._ngZone.runOutsideAngular(()=>{const r=Rn(n,"focusin").pipe(Vt(t),ne(o=>o.target));Rn(n,"keydown").pipe(Vt(t),vn(o=>o.which===Ht.Tab),Y_(r)).subscribe(([o,s])=>{const[a,l]=fM(n);(s===a||s===n)&&o.shiftKey&&(l.focus(),o.preventDefault()),s===l&&!o.shiftKey&&(a.focus(),o.preventDefault())}),i&&Rn(n,"click").pipe(Vt(t),Y_(r),ne(o=>o[1])).subscribe(o=>o.focus())})})(0,l.location.nativeElement,this._activeWindowCmptHasChanged),this._revertAriaHidden(),this._setAriaHidden(l.location.nativeElement)}})}_restoreScrollBar(){const t=this._scrollBarRestoreFn;t&&(this._scrollBarRestoreFn=null,t())}_hideScrollBar(){this._scrollBarRestoreFn||(this._scrollBarRestoreFn=this._scrollBar.hide())}open(t,i,r){const o=r.container instanceof HTMLElement?r.container:fs(r.container)?this._document.querySelector(r.container):this._document.body,s=this._rendererFactory.createRenderer(null,null);if(!o)throw new Error(`The specified modal container "${r.container||"body"}" was not found in the DOM.`);this._hideScrollBar();const a=new pr,l=this._getContentRef(r.injector||t,i,a,r);let u=!1!==r.backdrop?this._attachBackdrop(o):void 0,f=this._attachWindowComponent(o,l.nodes),p=new rU(f,l,u,r.beforeDismiss);return this._registerModalRef(p),this._registerWindowCmpt(f),p.hidden.pipe(sn(1)).subscribe(()=>Promise.resolve(!0).then(()=>{this._modalRefs.length||(s.removeClass(this._document.body,"modal-open"),this._restoreScrollBar(),this._revertAriaHidden())})),a.close=m=>{p.close(m)},a.dismiss=m=>{p.dismiss(m)},this._applyWindowOptions(f.instance,r),1===this._modalRefs.length&&s.addClass(this._document.body,"modal-open"),u&&u.instance&&(this._applyBackdropOptions(u.instance,r),u.changeDetectorRef.detectChanges()),f.changeDetectorRef.detectChanges(),p}get activeInstances(){return this._activeInstances}dismissAll(t){this._modalRefs.forEach(i=>i.dismiss(t))}hasOpenModals(){return this._modalRefs.length>0}_attachBackdrop(t){let i=Dm(iU,{environmentInjector:this._applicationRef.injector,elementInjector:this._injector});return this._applicationRef.attachView(i.hostView),t.appendChild(i.location.nativeElement),i}_attachWindowComponent(t,i){let r=Dm(oU,{environmentInjector:this._applicationRef.injector,elementInjector:this._injector,projectableNodes:i});return this._applicationRef.attachView(r.hostView),t.appendChild(r.location.nativeElement),r}_applyWindowOptions(t,i){this._windowAttributes.forEach(r=>{fs(i[r])&&(t[r]=i[r])})}_applyBackdropOptions(t,i){this._backdropAttributes.forEach(r=>{fs(i[r])&&(t[r]=i[r])})}_getContentRef(t,i,r,o){return i?i instanceof bt?this._createFromTemplateRef(i,r):sv(i)?this._createFromString(i):this._createFromComponent(t,i,r,o):new ms([])}_createFromTemplateRef(t,i){const o=t.createEmbeddedView({$implicit:i,close(s){i.close(s)},dismiss(s){i.dismiss(s)}});return this._applicationRef.attachView(o),new ms([o.rootNodes],o)}_createFromString(t){const i=this._document.createTextNode(`${t}`);return new ms([[i]])}_createFromComponent(t,i,r,o){const s=gn.create({providers:[{provide:pr,useValue:r}],parent:t}),a=Dm(i,{environmentInjector:this._applicationRef.injector,elementInjector:s}),l=a.location.nativeElement;return o.scrollable&&l.classList.add("component-host-scrollable"),this._applicationRef.attachView(a.hostView),new ms([[l]],a.hostView,a)}_setAriaHidden(t){const i=t.parentElement;i&&t!==this._document.body&&(Array.from(i.children).forEach(r=>{r!==t&&"SCRIPT"!==r.nodeName&&(this._ariaHiddenValues.set(r,r.getAttribute("aria-hidden")),r.setAttribute("aria-hidden","true"))}),this._setAriaHidden(i))}_revertAriaHidden(){this._ariaHiddenValues.forEach((t,i)=>{t?i.setAttribute("aria-hidden",t):i.removeAttribute("aria-hidden")}),this._ariaHiddenValues.clear()}_registerModalRef(t){const i=()=>{const r=this._modalRefs.indexOf(t);r>-1&&(this._modalRefs.splice(r,1),this._activeInstances.emit(this._modalRefs))};this._modalRefs.push(t),this._activeInstances.emit(this._modalRefs),t.result.then(i,i)}_registerWindowCmpt(t){this._windowCmpts.push(t),this._activeWindowCmptHasChanged.next(),t.onDestroy(()=>{const i=this._windowCmpts.indexOf(t);i>-1&&(this._windowCmpts.splice(i,1),this._activeWindowCmptHasChanged.next())})}}return e.\u0275fac=function(t){return new(t||e)(L(fc),L(gn),L(Dt),L(sU),L(xp),L(ze))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),lU=(()=>{class e{constructor(t){this._ngbConfig=t,this.backdrop=!0,this.fullscreen=!1,this.keyboard=!0}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(t){this._animation=t}}return e.\u0275fac=function(t){return new(t||e)(L(qc))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),SM=(()=>{class e{constructor(t,i,r){this._injector=t,this._modalStack=i,this._config=r}open(t,i={}){const r={...this._config,animation:this._config.animation,...i};return this._modalStack.open(this._injector,t,r)}get activeInstances(){return this._modalStack.activeInstances}dismissAll(t){this._modalStack.dismissAll(t)}hasOpenModals(){return this._modalStack.hasOpenModals()}}return e.\u0275fac=function(t){return new(t||e)(L(gn),L(aU),L(lU))},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),EM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({providers:[SM]}),e})(),AM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),LM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),HM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),BM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),jM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),$M=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),UM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),GM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({}),e})();new q("live announcer delay",{providedIn:"root",factory:function DU(){return 100}});let WM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[ei]}),e})(),KM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({}),e})();const CU=[rM,oM,lM,cM,bM,wM,EM,AM,KM,LM,HM,BM,jM,$M,UM,GM,WM];let wU=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({imports:[CU,rM,oM,lM,cM,bM,wM,EM,AM,KM,LM,HM,BM,jM,$M,UM,GM,WM]}),e})(),MU=(()=>{class e{constructor(t){this.activeModal=t,this.save=()=>{this.activeModal.close(this.rewindDate)}}}return e.\u0275fac=function(t){return new(t||e)(C(pr))},e.\u0275cmp=et({type:e,selectors:[["app-rewind-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName",topic:"topic"},decls:26,vars:4,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","rewindDate"],[1,"input-group"],["id","rewindDate","placeholder","yyyy-mm-dd hh:MM:ss","type","datetime-local",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(E(0,"div",0)(1,"h4",1),A(2,"Rewind consumers offset"),T(),E(3,"button",2),W("click",function(){return i.activeModal.dismiss()}),E(4,"span",3),A(5,"\xd7"),T()()(),E(6,"div",4)(7,"div",5)(8,"label",6),A(9,"Select the datetime to rewind all the partition-offsets of the topic "),E(10,"b"),A(11),T(),A(12," from consumers "),E(13,"b"),A(14),T(),A(15," with group id "),E(16,"b"),A(17),T(),A(18,"' "),T(),E(19,"div",7)(20,"input",8),W("ngModelChange",function(o){return i.rewindDate=o}),T()()()(),E(21,"div",9)(22,"button",10),W("click",function(){return i.activeModal.dismiss()}),A(23,"Cancel"),T(),E(24,"button",11),W("click",function(){return i.save()}),A(25,"OK"),T()()),2&t&&(F(11),Be("'",i.topic,"'"),F(3),Be("'",i.consumerName,"'"),F(3),Be("'",i.groupId,""),F(3),Q("ngModel",i.rewindDate))},dependencies:[Fc,A_,kf],encapsulation:2}),e})(),NU=(()=>{class e{constructor(t){this.activeModal=t,this.save=()=>{this.activeModal.close(this.workersCount)}}ngOnInit(){this.oldWorkersCount=this.workersCount}}return e.\u0275fac=function(t){return new(t||e)(C(pr))},e.\u0275cmp=et({type:e,selectors:[["app-workers-count-modal"]],inputs:{workersCount:"workersCount",groupId:"groupId",consumerName:"consumerName"},decls:28,vars:4,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","oldWorkersCount"],[1,"input-group","mb-2"],["id","oldWorkersCount","type","number","readonly","",1,"form-control",3,"ngModel","ngModelChange"],["for","workersCount"],[1,"input-group"],["id","workersCount","type","number",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(E(0,"div",0)(1,"h4",1),A(2,"Consumer workers running"),T(),E(3,"button",2),W("click",function(){return i.activeModal.dismiss()}),E(4,"span",3),A(5,"\xd7"),T()()(),E(6,"div",4)(7,"div",5)(8,"label"),A(9,"Update the number of workers in consumers "),E(10,"b"),A(11),T(),A(12," from group id "),E(13,"b"),A(14),T()(),E(15,"label",6),A(16,"Current Value"),T(),E(17,"div",7)(18,"input",8),W("ngModelChange",function(o){return i.oldWorkersCount=o}),T()(),E(19,"label",9),A(20,"New Value"),T(),E(21,"div",10)(22,"input",11),W("ngModelChange",function(o){return i.workersCount=o}),T()()()(),E(23,"div",12)(24,"button",13),W("click",function(){return i.activeModal.dismiss()}),A(25,"Cancel"),T(),E(26,"button",14),W("click",function(){return i.save()}),A(27,"OK"),T()()),2&t&&(F(11),Be("'",i.consumerName,"'"),F(3),Be("'",i.groupId,"'"),F(4),Q("ngModel",i.oldWorkersCount),F(4),Q("ngModel",i.workersCount))},dependencies:[Fc,B_,A_,kf],encapsulation:2}),e})(),TU=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(pr))},e.\u0275cmp=et({type:e,selectors:[["app-reset-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName",topic:"topic"},decls:26,vars:3,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(E(0,"div",0)(1,"h4",1),A(2,"Reset consumers offset"),T(),E(3,"button",2),W("click",function(){return i.activeModal.dismiss()}),E(4,"span",3),A(5,"\xd7"),T()()(),E(6,"div",4)(7,"div",5)(8,"span"),A(9,"Reset the partition-offsets can generate a huge lag at the topic "),E(10,"b"),A(11),T(),A(12," to consumers "),E(13,"b"),A(14),T(),A(15," with group id "),E(16,"b"),A(17),T(),A(18,"'. "),T(),E(19,"h5",6),A(20,"Are you really sure about it?"),T()()(),E(21,"div",7)(22,"button",8),W("click",function(){return i.activeModal.dismiss()}),A(23,"No, cancel"),T(),E(24,"button",9),W("click",function(){return i.activeModal.close()}),A(25,"Yes"),T()()),2&t&&(F(11),Be("'",i.topic,"'"),F(3),Be("'",i.consumerName,"'"),F(3),Be("'",i.groupId,""))},encapsulation:2}),e})(),AU=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(pr))},e.\u0275cmp=et({type:e,selectors:[["app-pause-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName",topic:"topic"},decls:26,vars:3,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(E(0,"div",0)(1,"h4",1),A(2,"Pause consumers"),T(),E(3,"button",2),W("click",function(){return i.activeModal.dismiss()}),E(4,"span",3),A(5,"\xd7"),T()()(),E(6,"div",4)(7,"div",5)(8,"span"),A(9,"Pause all the partitions of the topic "),E(10,"b"),A(11),T(),A(12," from consumers "),E(13,"b"),A(14),T(),A(15," with group id "),E(16,"b"),A(17),T(),A(18,"' will interrupt the kafka data processing and, probably, generate lag. "),T(),E(19,"h5",6),A(20,"Are you really sure about it?"),T()()(),E(21,"div",7)(22,"button",8),W("click",function(){return i.activeModal.dismiss()}),A(23,"No, cancel"),T(),E(24,"button",9),W("click",function(){return i.activeModal.close()}),A(25,"Yes"),T()()),2&t&&(F(11),Be("'",i.topic,"'"),F(3),Be("'",i.consumerName,"'"),F(3),Be("'",i.groupId,""))},encapsulation:2}),e})(),IU=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(pr))},e.\u0275cmp=et({type:e,selectors:[["app-resume-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName",topic:"topic"},decls:26,vars:3,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(E(0,"div",0)(1,"h4",1),A(2,"Resume consumers"),T(),E(3,"button",2),W("click",function(){return i.activeModal.dismiss()}),E(4,"span",3),A(5,"\xd7"),T()()(),E(6,"div",4)(7,"div",5)(8,"span"),A(9,"Resume all the partitions of the topic "),E(10,"b"),A(11),T(),A(12," from consumers "),E(13,"b"),A(14),T(),A(15," with group id "),E(16,"b"),A(17),T(),A(18,"' will restart to process the messages. "),T(),E(19,"h5",6),A(20,"Are you really sure about it?"),T()()(),E(21,"div",7)(22,"button",8),W("click",function(){return i.activeModal.dismiss()}),A(23,"No, cancel"),T(),E(24,"button",9),W("click",function(){return i.activeModal.close()}),A(25,"Yes"),T()()),2&t&&(F(11),Be("'",i.topic,"'"),F(3),Be("'",i.consumerName,"'"),F(3),Be("'",i.groupId,""))},encapsulation:2}),e})(),OU=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(pr))},e.\u0275cmp=et({type:e,selectors:[["app-restart-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName"},decls:23,vars:2,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(E(0,"div",0)(1,"h4",1),A(2,"Restart consumers"),T(),E(3,"button",2),W("click",function(){return i.activeModal.dismiss()}),E(4,"span",3),A(5,"\xd7"),T()()(),E(6,"div",4)(7,"div",5)(8,"span"),A(9,"Restart the consumers "),E(10,"b"),A(11),T(),A(12," from group id "),E(13,"b"),A(14),T(),A(15,"' will can generate a temporary instability in your system. "),T(),E(16,"h5",6),A(17,"Are you really sure about it?"),T()()(),E(18,"div",7)(19,"button",8),W("click",function(){return i.activeModal.dismiss()}),A(20,"No, cancel"),T(),E(21,"button",9),W("click",function(){return i.activeModal.close()}),A(22,"Yes"),T()()),2&t&&(F(11),Be("'",i.consumerName,"'"),F(3),Be("'",i.groupId,""))},encapsulation:2}),e})(),kU=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(pr))},e.\u0275cmp=et({type:e,selectors:[["app-start-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName"},decls:22,vars:2,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(E(0,"div",0)(1,"h4",1),A(2,"Start consumers"),T(),E(3,"button",2),W("click",function(){return i.activeModal.dismiss()}),E(4,"span",3),A(5,"\xd7"),T()()(),E(6,"div",4)(7,"div",5)(8,"span"),A(9,"Start the consumer "),E(10,"b"),A(11),T(),A(12," from group id "),E(13,"b"),A(14),T()(),E(15,"h5",6),A(16,"Are you really sure about it?"),T()()(),E(17,"div",7)(18,"button",8),W("click",function(){return i.activeModal.dismiss()}),A(19,"No, cancel"),T(),E(20,"button",9),W("click",function(){return i.activeModal.close()}),A(21,"Yes"),T()()),2&t&&(F(11),Be("'",i.consumerName,"'"),F(3),Be("'",i.groupId,"'"))},encapsulation:2}),e})(),RU=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(pr))},e.\u0275cmp=et({type:e,selectors:[["app-stop-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName"},decls:22,vars:2,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(E(0,"div",0)(1,"h4",1),A(2,"Stop consumer"),T(),E(3,"button",2),W("click",function(){return i.activeModal.dismiss()}),E(4,"span",3),A(5,"\xd7"),T()()(),E(6,"div",4)(7,"div",5)(8,"span"),A(9,"Stop the consumer "),E(10,"b"),A(11),T(),A(12," from group id "),E(13,"b"),A(14),T()(),E(15,"h5",6),A(16,"Are you really sure about it?"),T()()(),E(17,"div",7)(18,"button",8),W("click",function(){return i.activeModal.dismiss()}),A(19,"No, cancel"),T(),E(20,"button",9),W("click",function(){return i.activeModal.close()}),A(21,"Yes"),T()()),2&t&&(F(11),Be("'",i.consumerName,"'"),F(3),Be("'",i.groupId,"'"))},encapsulation:2}),e})();var zM=iu(439);function YM(e,n,t,i,r,o,s){try{var a=e[o](s),l=a.value}catch(u){return void t(u)}a.done?n(l):Promise.resolve(l).then(i,r)}function zr(e){return function(){var n=this,t=arguments;return new Promise(function(i,r){var o=e.apply(n,t);function s(l){YM(o,i,r,s,a,"next",l)}function a(l){YM(o,i,r,s,a,"throw",l)}s(void 0)})}}function Yr(e,n){const t="object"==typeof n;return new Promise((i,r)=>{const o=new vr({next:s=>{i(s),o.unsubscribe()},error:r,complete:()=>{t?i(n.defaultValue):r(new bc)}});e.subscribe(o)})}let JM=(()=>{class e{constructor(){this.rootUrl="/kafka-flow"}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(); -/** - * @license Angular v14.2.9 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class ZM{}class QM{} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class qr{constructor(n){this.normalizedNames=new Map,this.lazyUpdate=null,n?this.lazyInit="string"==typeof n?()=>{this.headers=new Map,n.split("\n").forEach(t=>{const i=t.indexOf(":");if(i>0){const r=t.slice(0,i),o=r.toLowerCase(),s=t.slice(i+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:()=>{this.headers=new Map,Object.keys(n).forEach(t=>{let i=n[t];const r=t.toLowerCase();"string"==typeof i&&(i=[i]),i.length>0&&(this.headers.set(r,i),this.maybeSetNormalizedName(t,r))})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const t=this.headers.get(n.toLowerCase());return t&&t.length>0?t[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,t){return this.clone({name:n,value:t,op:"a"})}set(n,t){return this.clone({name:n,value:t,op:"s"})}delete(n,t){return this.clone({name:n,value:t,op:"d"})}maybeSetNormalizedName(n,t){this.normalizedNames.has(t)||this.normalizedNames.set(t,n)}init(){this.lazyInit&&(this.lazyInit instanceof qr?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(t=>{this.headers.set(t,n.headers.get(t)),this.normalizedNames.set(t,n.normalizedNames.get(t))})}clone(n){const t=new qr;return t.lazyInit=this.lazyInit&&this.lazyInit instanceof qr?this.lazyInit:this,t.lazyUpdate=(this.lazyUpdate||[]).concat([n]),t}applyUpdate(n){const t=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,t);const r=("a"===n.op?this.headers.get(t):void 0)||[];r.push(...i),this.headers.set(t,r);break;case"d":const o=n.value;if(o){let s=this.headers.get(t);if(!s)return;s=s.filter(a=>-1===o.indexOf(a)),0===s.length?(this.headers.delete(t),this.normalizedNames.delete(t)):this.headers.set(t,s)}else this.headers.delete(t),this.normalizedNames.delete(t)}}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(t=>n(this.normalizedNames.get(t),this.headers.get(t)))}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class xU{encodeKey(n){return XM(n)}encodeValue(n){return XM(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const PU=/%(\d[a-f0-9])/gi,LU={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function XM(e){return encodeURIComponent(e).replace(PU,(n,t)=>LU[t]??n)}function Yf(e){return`${e}`}class So{constructor(n={}){if(this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new xU,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function FU(e,n){const t=new Map;return e.length>0&&e.replace(/^\?/,"").split("&").forEach(r=>{const o=r.indexOf("="),[s,a]=-1==o?[n.decodeKey(r),""]:[n.decodeKey(r.slice(0,o)),n.decodeValue(r.slice(o+1))],l=t.get(s)||[];l.push(a),t.set(s,l)}),t}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(t=>{const i=n.fromObject[t],r=Array.isArray(i)?i.map(Yf):[Yf(i)];this.map.set(t,r)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const t=this.map.get(n);return t?t[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,t){return this.clone({param:n,value:t,op:"a"})}appendAll(n){const t=[];return Object.keys(n).forEach(i=>{const r=n[i];Array.isArray(r)?r.forEach(o=>{t.push({param:i,value:o,op:"a"})}):t.push({param:i,value:r,op:"a"})}),this.clone(t)}set(n,t){return this.clone({param:n,value:t,op:"s"})}delete(n,t){return this.clone({param:n,value:t,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const t=this.encoder.encodeKey(n);return this.map.get(n).map(i=>t+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const t=new So({encoder:this.encoder});return t.cloneFrom=this.cloneFrom||this,t.updates=(this.updates||[]).concat(n),t}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const t=("a"===n.op?this.map.get(n.param):void 0)||[];t.push(Yf(n.value)),this.map.set(n.param,t);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const r=i.indexOf(Yf(n.value));-1!==r&&i.splice(r,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class VU{constructor(){this.map=new Map}set(n,t){return this.map.set(n,t),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function eN(e){return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer}function tN(e){return typeof Blob<"u"&&e instanceof Blob}function nN(e){return typeof FormData<"u"&&e instanceof FormData}class eu{constructor(n,t,i,r){let o;if(this.url=t,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=n.toUpperCase(),function HU(e){switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==i?i:null,o=r):o=i,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params)),this.headers||(this.headers=new qr),this.context||(this.context=new VU),this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=t;else{const a=t.indexOf("?");this.urlWithParams=t+(-1===a?"?":ap.set(m,n.setHeaders[m]),l)),n.setParams&&(u=Object.keys(n.setParams).reduce((p,m)=>p.set(m,n.setParams[m]),u)),new eu(t,i,o,{params:u,headers:l,context:f,reportProgress:a,responseType:r,withCredentials:s})}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */var kt=(()=>((kt=kt||{})[kt.Sent=0]="Sent",kt[kt.UploadProgress=1]="UploadProgress",kt[kt.ResponseHeader=2]="ResponseHeader",kt[kt.DownloadProgress=3]="DownloadProgress",kt[kt.Response=4]="Response",kt[kt.User=5]="User",kt))();class _v{constructor(n,t=200,i="OK"){this.headers=n.headers||new qr,this.status=void 0!==n.status?n.status:t,this.statusText=n.statusText||i,this.url=n.url||null,this.ok=this.status>=200&&this.status<300}}class vv extends _v{constructor(n={}){super(n),this.type=kt.ResponseHeader}clone(n={}){return new vv({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class qf extends _v{constructor(n={}){super(n),this.type=kt.Response,this.body=void 0!==n.body?n.body:null}clone(n={}){return new qf({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class iN extends _v{constructor(n){super(n,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */function yv(e,n){return{body:n,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials}}let rN=(()=>{class e{constructor(t){this.handler=t}request(t,i,r={}){let o;if(t instanceof eu)o=t;else{let l,u;l=r.headers instanceof qr?r.headers:new qr(r.headers),r.params&&(u=r.params instanceof So?r.params:new So({fromObject:r.params})),o=new eu(t,i,void 0!==r.body?r.body:null,{headers:l,context:r.context,params:u,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials})}const s=Z(o).pipe(_o(l=>this.handler.handle(l)));if(t instanceof eu||"events"===r.observe)return s;const a=s.pipe(vn(l=>l instanceof qf));switch(r.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return a.pipe(ne(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return l.body}));case"blob":return a.pipe(ne(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new Error("Response is not a Blob.");return l.body}));case"text":return a.pipe(ne(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new Error("Response is not a string.");return l.body}));default:return a.pipe(ne(l=>l.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${r.observe}}`)}}delete(t,i={}){return this.request("DELETE",t,i)}get(t,i={}){return this.request("GET",t,i)}head(t,i={}){return this.request("HEAD",t,i)}jsonp(t,i){return this.request("JSONP",t,{params:(new So).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,i={}){return this.request("OPTIONS",t,i)}patch(t,i,r={}){return this.request("PATCH",t,yv(r,i))}post(t,i,r={}){return this.request("POST",t,yv(r,i))}put(t,i,r={}){return this.request("PUT",t,yv(r,i))}}return e.\u0275fac=function(t){return new(t||e)(L(ZM))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */class oN{constructor(n,t){this.next=n,this.interceptor=t}handle(n){return this.interceptor.intercept(n,this.next)}}const bv=new q("HTTP_INTERCEPTORS");let jU=(()=>{class e{intercept(t,i){return i.handle(t)}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const $U=/^\)\]\}',?\n/;let sN=(()=>{class e{constructor(t){this.xhrFactory=t}handle(t){if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new je(i=>{const r=this.xhrFactory.build();if(r.open(t.method,t.urlWithParams),t.withCredentials&&(r.withCredentials=!0),t.headers.forEach((v,y)=>r.setRequestHeader(v,y.join(","))),t.headers.has("Accept")||r.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){const v=t.detectContentTypeHeader();null!==v&&r.setRequestHeader("Content-Type",v)}if(t.responseType){const v=t.responseType.toLowerCase();r.responseType="json"!==v?v:"text"}const o=t.serializeBody();let s=null;const a=()=>{if(null!==s)return s;const v=r.statusText||"OK",y=new qr(r.getAllResponseHeaders()),D=function UU(e){return"responseURL"in e&&e.responseURL?e.responseURL:/^X-Request-URL:/m.test(e.getAllResponseHeaders())?e.getResponseHeader("X-Request-URL"):null}(r)||t.url;return s=new vv({headers:y,status:r.status,statusText:v,url:D}),s},l=()=>{let{headers:v,status:y,statusText:D,url:w}=a(),M=null;204!==y&&(M=typeof r.response>"u"?r.responseText:r.response),0===y&&(y=M?200:0);let I=y>=200&&y<300;if("json"===t.responseType&&"string"==typeof M){const S=M;M=M.replace($U,"");try{M=""!==M?JSON.parse(M):null}catch(O){M=S,I&&(I=!1,M={error:O,text:M})}}I?(i.next(new qf({body:M,headers:v,status:y,statusText:D,url:w||void 0})),i.complete()):i.error(new iN({error:M,headers:v,status:y,statusText:D,url:w||void 0}))},u=v=>{const{url:y}=a(),D=new iN({error:v,status:r.status||0,statusText:r.statusText||"Unknown Error",url:y||void 0});i.error(D)};let f=!1;const p=v=>{f||(i.next(a()),f=!0);let y={type:kt.DownloadProgress,loaded:v.loaded};v.lengthComputable&&(y.total=v.total),"text"===t.responseType&&!!r.responseText&&(y.partialText=r.responseText),i.next(y)},m=v=>{let y={type:kt.UploadProgress,loaded:v.loaded};v.lengthComputable&&(y.total=v.total),i.next(y)};return r.addEventListener("load",l),r.addEventListener("error",u),r.addEventListener("timeout",u),r.addEventListener("abort",u),t.reportProgress&&(r.addEventListener("progress",p),null!==o&&r.upload&&r.upload.addEventListener("progress",m)),r.send(o),i.next({type:kt.Sent}),()=>{r.removeEventListener("error",u),r.removeEventListener("abort",u),r.removeEventListener("load",l),r.removeEventListener("timeout",u),t.reportProgress&&(r.removeEventListener("progress",p),null!==o&&r.upload&&r.upload.removeEventListener("progress",m)),r.readyState!==r.DONE&&r.abort()}})}}return e.\u0275fac=function(t){return new(t||e)(L(FC))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const Dv=new q("XSRF_COOKIE_NAME"),Cv=new q("XSRF_HEADER_NAME");class aN{}let GU=(()=>{class e{constructor(t,i,r){this.doc=t,this.platform=i,this.cookieName=r,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=wC(t,this.cookieName),this.lastCookieString=t),this.lastToken}}return e.\u0275fac=function(t){return new(t||e)(L(Dt),L(dc),L(Dv))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(),wv=(()=>{class e{constructor(t,i){this.tokenService=t,this.headerName=i}intercept(t,i){const r=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||r.startsWith("http://")||r.startsWith("https://"))return i.handle(t);const o=this.tokenService.getToken();return null!==o&&!t.headers.has(this.headerName)&&(t=t.clone({headers:t.headers.set(this.headerName,o)})),i.handle(t)}}return e.\u0275fac=function(t){return new(t||e)(L(aN),L(Cv))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(),WU=(()=>{class e{constructor(t,i){this.backend=t,this.injector=i,this.chain=null}handle(t){if(null===this.chain){const i=this.injector.get(bv,[]);this.chain=i.reduceRight((r,o)=>new oN(r,o),this.backend)}return this.chain.handle(t)}}return e.\u0275fac=function(t){return new(t||e)(L(QM),L(gn))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(),KU=(()=>{class e{static disable(){return{ngModule:e,providers:[{provide:wv,useClass:jU}]}}static withOptions(t={}){return{ngModule:e,providers:[t.cookieName?{provide:Dv,useValue:t.cookieName}:[],t.headerName?{provide:Cv,useValue:t.headerName}:[]]}}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({providers:[wv,{provide:bv,useExisting:wv,multi:!0},{provide:aN,useClass:GU},{provide:Dv,useValue:"XSRF-TOKEN"},{provide:Cv,useValue:"X-XSRF-TOKEN"}]}),e})(),zU=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e}),e.\u0275inj=Me({providers:[rN,{provide:ZM,useClass:WU},sN,{provide:QM,useExisting:sN}],imports:[KU.withOptions({cookieName:"XSRF-TOKEN",headerName:"X-XSRF-TOKEN"})]}),e})(),lN=(()=>{class e{constructor(t,i){this.config=t,this.http=i}pauseConsumerTopic(t,i){var r=this;return zr(function*(){yield Yr(r.http.put(r.config.rootUrl+`/consumers/${t}/topics/${i}/pause`,""))})()}resumeConsumerTopic(t,i){var r=this;return zr(function*(){yield Yr(r.http.put(r.config.rootUrl+`/consumers/${t}/topics/${i}/resume`,""))})()}resetConsumerTopic(t,i){var r=this;return zr(function*(){yield Yr(r.http.put(r.config.rootUrl+`/consumers/${t}/topics/${i}/reset`,""))})()}rewindConsumerTopic(t,i,r){var o=this;return zr(function*(){const s=zM(r).format("YYYY-MM-DD HH:mm:ss");yield Yr(o.http.put(o.config.rootUrl+`/consumers/${t}/topics/${i}/rewind/${s}`,""))})()}stopConsumer(t){var i=this;return zr(function*(){yield Yr(i.http.put(i.config.rootUrl+`/consumers/${t}/stop`,""))})()}startConsumer(t){var i=this;return zr(function*(){yield Yr(i.http.put(i.config.rootUrl+`/consumers/${t}/start`,""))})()}restartConsumer(t){var i=this;return zr(function*(){yield Yr(i.http.put(i.config.rootUrl+`/consumers/${t}/restart`,""))})()}changeWorkers(t,i){var r=this;return zr(function*(){yield Yr(r.http.put(r.config.rootUrl+`/consumers/${t}/changeWorkers/${i}`,""))})()}getTelemetry(){var t=this;return zr(function*(){return yield Yr(t.http.get(t.config.rootUrl+"/consumers/telemetry"))})()}}return e.\u0275fac=function(t){return new(t||e)(L(JM),L(rN))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})(),YU=(()=>{class e{transform(t,i){if(!t)return null;const r=t.reduce((o,s)=>(o[s[i]]?o[s[i]].push(s):o[s[i]]=[s],o),{});return Object.keys(r).map(o=>({key:o,value:r[o]}))}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275pipe=$t({name:"groupBy",type:e,pure:!0}),e})(),qU=(()=>{class e{transform(t,i,r="asc"){return"asc"!==(r=r.toLowerCase())&&"desc"!==r?t:Array.isArray(t)?(t.sort((o,s)=>o[i]s[i]?"asc"===r?1:-1:0),t):null}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275pipe=$t({name:"sort",type:e,pure:!0}),e})(); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */const JU=["successAlert"];function ZU(e,n){if(1&e){const t=At();E(0,"ngb-alert",2,3),W("closed",function(){return mt(t),_t(K().successMessage="")}),E(2,"div",4)(3,"b"),A(4,"Success! "),T(),E(5,"span",4),A(6),T()()()}if(2&e){const t=K();F(6),fo(t.successMessage)}}function QU(e,n){if(1&e){const t=At();E(0,"button",14),W("click",function(){mt(t);const r=K().$implicit,o=K().$implicit;return _t(K().openStartModal(o.groupId,r.name))}),A(1,"Start"),T()}}function XU(e,n){if(1&e){const t=At();E(0,"button",15),W("click",function(){mt(t);const r=K().$implicit,o=K().$implicit;return _t(K().openStopModal(o.groupId,r.name))}),A(1,"Stop"),T()}}function e3(e,n){if(1&e){const t=At();E(0,"button",15),W("click",function(){mt(t);const r=K().$implicit,o=K().$implicit;return _t(K().openRestartModal(o.groupId,r.name))}),A(1,"Restart"),T()}}function t3(e,n){if(1&e){const t=At();E(0,"button",16),W("click",function(){mt(t);const r=K().$implicit,o=K().$implicit;return _t(K().openWorkersCountModal(o.groupId,r.name,r.workersCount))}),A(1,"Change number of workers"),T()}}function n3(e,n){if(1&e){const t=At();E(0,"button",14),W("click",function(){mt(t);const r=K().$implicit,o=K().$implicit,s=K().$implicit;return _t(K().openResumeModal(s.groupId,o.name,r.key))}),A(1,"Resume"),T()}}function r3(e,n){if(1&e){const t=At();E(0,"button",15),W("click",function(){mt(t);const r=K().$implicit,o=K().$implicit,s=K().$implicit;return _t(K().openPauseModal(s.groupId,o.name,r.key))}),A(1,"Pause"),T()}}function o3(e,n){if(1&e){const t=At();E(0,"button",20),W("click",function(){mt(t);const r=K().$implicit,o=K().$implicit,s=K().$implicit;return _t(K().openRewindModal(s.groupId,o.name,r.key))}),A(1,"Rewind Offset"),T()}}function s3(e,n){if(1&e){const t=At();E(0,"button",21),W("click",function(){mt(t);const r=K().$implicit,o=K().$implicit,s=K().$implicit;return _t(K().openResetModal(s.groupId,o.name,r.key))}),A(1,"Reset Offset"),T()}}function a3(e,n){1&e&&Li(0,"div")}function l3(e,n){1&e&&(E(0,"span"),A(1,"Offline"),T())}function c3(e,n){1&e&&(E(0,"span",27),A(1,"Paused"),T())}function u3(e,n){1&e&&(E(0,"span",28),A(1,"Running"),T())}function d3(e,n){if(1&e&&(J(0,c3,2,0,"ng-template",26),J(1,u3,2,0,"ng-template",26)),2&e){const t=K().$implicit,i=K(4);Q("ngIf",i.hasPausedPartition(t)),F(1),Q("ngIf",i.hasRunningPartition(t))}}function f3(e,n){if(1&e&&(E(0,"tr")(1,"td",22),A(2),T(),E(3,"td",22),A(4),T(),E(5,"td",22),A(6),T(),E(7,"td",22),J(8,a3,1,0,"div",23),J(9,l3,2,0,"ng-template",null,24,ji),J(11,d3,2,2,"ng-template",null,25,ji),T(),E(13,"td",22)(14,"span",9),A(15),wd(16,"date"),T()()()),2&e){const t=n.$implicit,i=Pi(10),r=Pi(12),o=K(4);F(2),fo(t.instanceName),F(2),fo(o.hasRunningPartition(t)?t.runningPartitions:t.pausedPartitions),F(2),fo(t.lag),F(2),Q("ngIf",t.isLost)("ngIfThen",i)("ngIfElse",r),F(6),Q("ngClass",t.isLost?"text-secondary":"text-success"),F(1),fo(Sd(16,8,t.lastUpdate+"Z","medium"))}}function h3(e,n){if(1&e&&(Li(0,"hr"),E(1,"h5"),A(2),J(3,n3,2,0,"button",10),J(4,r3,2,0,"button",11),J(5,o3,2,0,"button",17),J(6,s3,2,0,"button",18),T(),E(7,"table",19)(8,"thead")(9,"tr")(10,"th"),A(11,"Consumer instance"),T(),E(12,"th"),A(13,"Partitions"),T(),E(14,"th"),A(15,"Lag"),T(),E(16,"th"),A(17,"Status"),T(),E(18,"th"),A(19,"LastUpdate"),T()()(),E(20,"tbody"),J(21,f3,17,11,"ng-template",13),wd(22,"sort"),T()()),2&e){const t=n.$implicit,i=K().$implicit,r=K(2);F(2),Be(" Topic: ",t.key," "),F(1),Q("ngIf",t.value.some(r.hasPausedPartition)),F(1),Q("ngIf",t.value.some(r.hasRunningPartition)),F(1),Q("ngIf","Running"===i.status),F(1),Q("ngIf","Running"===i.status),F(15),Q("ngForOf",Sd(22,6,t.value,"instanceName"))}}const p3=function(e,n,t){return{"text-success":e,"text-warning":n,"text-danger":t}},g3=function(){return[]};function m3(e,n){if(1&e&&(E(0,"div")(1,"h4"),A(2),T(),E(3,"h4"),A(4,"Status: "),E(5,"span",9),A(6),T(),J(7,QU,2,0,"button",10),J(8,XU,2,0,"button",11),J(9,e3,2,0,"button",11),T(),E(10,"h4"),A(11),T(),E(12,"h4"),A(13),J(14,t3,2,0,"button",12),T(),J(15,h3,23,9,"ng-template",13),wd(16,"groupBy"),Li(17,"hr"),T()),2&e){const t=n.$implicit;F(2),Be("Consumer: ",t.name,""),F(3),Q("ngClass",Cd(13,p3,"Running"===t.status,"Paused"===t.status,"Not Running"===t.status)),F(1),fo(t.status),F(1),Q("ngIf","Not Running"===t.status),F(1),Q("ngIf","Running"===t.status),F(1),Q("ngIf","Running"===t.status),F(2),Be("Lag: ",t.lag,""),F(2),Be("Workers: ",t.workersCount," "),F(1),Q("ngIf","Running"===t.status),F(1),Q("ngForOf",Sd(16,10,t.assignments|| -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function t1(e,n,t){const i=rn()+e,r=k();return r[i]===ae?or(r,i,t?n.call(t):n()):function Ql(e,n){return e[n]}(r,i)}(17,g3),"topicName"))}}function _3(e,n){if(1&e&&(E(0,"div",5)(1,"div",6)(2,"div",7)(3,"h3"),A(4),T(),J(5,m3,18,18,"div",8),T()()()),2&e){const t=n.$implicit;F(4),Be("Group Id: ",t.groupId,""),F(1),Q("ngForOf",t.consumers)}}let v3=(()=>{class e{constructor(t,i){this.modalService=t,this.gateway=i,this.successSubject=new Ue,this.delayMs=5e3,this.successMessage="",this.updateData=()=>{this.gateway.getTelemetry().then(r=>{this.telemetryResponse=this.updateConsumersStatus(r)})},this.hasRunningPartition=r=>r.runningPartitions?.length>0,this.hasPausedPartition=r=>r.pausedPartitions?.length>0,this.isActive=r=>Math.abs(((new Date).getTime()-new Date(r+"Z").getTime())/1e3)<30,this.openWorkersCountModal=(r,o,s)=>{const a=this.modalService.open(NU);a.componentInstance.groupId=r,a.componentInstance.consumerName=o,a.componentInstance.workersCount=s,a.result.then(l=>{this.gateway.changeWorkers(o,l).then(()=>this.successSubject.next("The number of workers was updated successfully"))})},this.openResetModal=(r,o,s)=>{const a=this.modalService.open(TU);a.componentInstance.groupId=r,a.componentInstance.consumerName=o,a.componentInstance.topic=s,a.result.then(()=>{this.gateway.resetConsumerTopic(o,s).then(()=>this.successSubject.next("The partition-offsets of your consumer were reseted successfully"))})},this.openPauseModal=(r,o,s)=>{const a=this.modalService.open(AU);a.componentInstance.groupId=r,a.componentInstance.topic=s,a.componentInstance.consumerName=o,a.result.then(()=>{this.gateway.pauseConsumerTopic(o,s).then(()=>this.successSubject.next("Your consumer was paused successfully"))})},this.openRestartModal=(r,o)=>{const s=this.modalService.open(OU);s.componentInstance.groupId=r,s.componentInstance.consumerName=o,s.result.then(()=>{this.gateway.restartConsumer(o).then(()=>this.successSubject.next("Your consumer was restarted successfully"))})},this.openStartModal=(r,o)=>{const s=this.modalService.open(kU);s.componentInstance.groupId=r,s.componentInstance.consumerName=o,s.result.then(()=>{this.gateway.startConsumer(o).then(()=>this.successSubject.next("Your consumer was started successfully"))})},this.openStopModal=(r,o)=>{const s=this.modalService.open(RU);s.componentInstance.groupId=r,s.componentInstance.consumerName=o,s.result.then(()=>{this.gateway.stopConsumer(o).then(()=>this.successSubject.next("Your consumer was stopped successfully"))})},this.openResumeModal=(r,o,s)=>{const a=this.modalService.open(IU);a.componentInstance.groupId=r,a.componentInstance.consumerName=o,a.componentInstance.topic=s,a.result.then(()=>{this.gateway.resumeConsumerTopic(o,s).then(()=>this.successSubject.next("Your consumer was resumed successfully"))})},this.openRewindModal=(r,o,s)=>{const a=this.modalService.open(MU);a.componentInstance.consumerName=o,a.componentInstance.groupId=r,a.componentInstance.topic=s,a.result.then(l=>{const u=zM(l,"YYYY-MM-DDTHH:mm").toDate();this.gateway.rewindConsumerTopic(o,s,u).then(()=>this.successSubject.next("The partition-offset of your consumer were rewound successfully"))})}}ngOnInit(){this.successSubject.subscribe(t=>this.successMessage=t),this.successSubject.pipe(function EU(e,n=xf){return qe((t,i)=>{let r=null,o=null,s=null;const a=()=>{if(r){r.unsubscribe(),r=null;const u=o;o=null,i.next(u)}};function l(){const u=s+e,f=n.now();if(f{o=u,s=n.now(),r||(r=n.schedule(l,e),i.add(r))},()=>{a(),i.complete()},void 0,()=>{o=r=null}))})}(5e3)).subscribe(()=>this.successAlert?.close()),this.updateData(),function SU(e=0,n=xf){return e<0&&(e=0),jc(e,e,n)}(this.delayMs).subscribe(this.updateData)}updateConsumersStatus(t){const i=this;return t.groups?.forEach(r=>{r.consumers?.forEach(o=>{o.status=o.assignments.some(s=>s.runningPartitions?.length>0&&i.isActive(s.lastUpdate))?"Running":o.assignments.some(s=>s.pausedPartitions?.length>0&&i.isActive(s.lastUpdate))?"Paused":"Not Running",o.lag=o.assignments.map(s=>s.lag).reduce((s,a)=>s+a),o.assignments.forEach(s=>s.isLost=!i.isActive(s.lastUpdate))})}),t}}return e.\u0275fac=function(t){return new(t||e)(C(SM),C(lN))},e.\u0275cmp=et({type:e,selectors:[["app-consumer"]],viewQuery:function(t,i){if(1&t&&Md(JU,5),2&t){let r;at(r=lt())&&(i.successAlert=r.first)}},decls:2,vars:2,consts:[["type","success",3,"closed",4,"ngIf"],["class","container",4,"ngFor","ngForOf"],["type","success",3,"closed"],["successAlert",""],[1,"text-center"],[1,"container"],[1,"card","my-3"],[1,"card-body"],[4,"ngFor","ngForOf"],[3,"ngClass"],["class","btn btn-sm btn-outline-success ml-2","type","button",3,"click",4,"ngIf"],["class","btn btn-sm btn-outline-warning ml-2","type","button",3,"click",4,"ngIf"],["class","btn btn-sm btn-outline-success ml-3","type","button",3,"click",4,"ngIf"],["ngFor","",3,"ngForOf"],["type","button",1,"btn","btn-sm","btn-outline-success","ml-2",3,"click"],["type","button",1,"btn","btn-sm","btn-outline-warning","ml-2",3,"click"],["type","button",1,"btn","btn-sm","btn-outline-success","ml-3",3,"click"],["class","btn btn-sm btn-outline-info ml-2","type","button",3,"click",4,"ngIf"],["class","btn btn-sm btn-outline-secondary ml-2","type","button",3,"click",4,"ngIf"],[1,"table","table-striped","table-hover","mt-1"],["type","button",1,"btn","btn-sm","btn-outline-info","ml-2",3,"click"],["type","button",1,"btn","btn-sm","btn-outline-secondary","ml-2",3,"click"],[1,"text-left"],[4,"ngIf","ngIfThen","ngIfElse"],["consumer_lost",""],["consumer_on",""],[3,"ngIf"],[1,"font-weight-bold","text-warning"],[1,"font-weight-bold","text-success"]],template:function(t,i){1&t&&(J(0,ZU,7,1,"ngb-alert",0),J(1,_3,6,2,"div",1)),2&t&&(Q("ngIf",i.successMessage),F(1),Q("ngForOf",null==i.telemetryResponse?null:i.telemetryResponse.groups))},dependencies:[SC,ka,ns,y$,IC,YU,qU],encapsulation:2}),e})(),y3=(()=>{class e{constructor(){}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275cmp=et({type:e,selectors:[["app-home"]],decls:12,vars:0,consts:[[1,"navbar","navbar-expand-lg","navbar-light","bg-light"],[1,"container-fluid"],["href","#",1,"navbar-brand"],["type","button","data-bs-toggle","collapse","data-bs-target","#navbarSupportedContent","aria-controls","navbarSupportedContent","aria-expanded","false","aria-label","Toggle navigation",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","navbarSupportedContent",1,"collapse","navbar-collapse"],[1,"navbar-nav","me-auto","mb-2","mb-lg-0"],[1,"nav-item"],["aria-current","page","href","#",1,"nav-link","active"]],template:function(t,i){1&t&&(E(0,"nav",0)(1,"div",1)(2,"a",2),A(3,"KafkaFlow - Dashboard"),T(),E(4,"button",3),Li(5,"span",4),T(),E(6,"div",5)(7,"ul",6)(8,"li",7)(9,"a",8),A(10,"Consumers"),T()()()()()(),Li(11,"app-consumer"))},dependencies:[hv,v3],encapsulation:2}),e})(),D3=(()=>{class e{constructor(t){this.cookieService=t}intercept(t,i){return t=t.clone({setHeaders:this.cookieService.getAll()}),i.handle(t).pipe(function b3(e=1/0){let n;n=e&&"object"==typeof e?e:{count:e};const{count:t=1/0,delay:i,resetOnSuccess:r=!1}=n;return t<=0?xn:qe((o,s)=>{let l,a=0;const u=()=>{let f=!1;l=o.subscribe(ke(s,p=>{r&&(a=0),s.next(p)},void 0,p=>{if(a++{l?(l.unsubscribe(),l=null,u()):f=!0};if(null!=i){const v="number"==typeof i?jc(i):ut(i(p,a)),y=ke(s,()=>{y.unsubscribe(),m()},()=>{s.complete()});v.subscribe(y)}else m()}else s.error(p)})),f&&(l.unsubscribe(),l=null,u())};u()})}(1),$r(r=>{let o="";return o=r.error instanceof ErrorEvent?`Error: ${r.error.message}`:`Error Code: ${r.status}\nMessage: ${r.message}`,console.error(o),Ra(o)}))}}return e.\u0275fac=function(t){return new(t||e)(L(NE))},e.\u0275prov=G({token:e,factory:e.\u0275fac}),e})();const C3={validation:!1},w3=[{path:"",component:y3}];let S3=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=Ne({type:e,bootstrap:[wH]}),e.\u0275inj=Me({providers:[JM,NE,lN,{provide:bv,useClass:D3,multi:!0}],imports:[kP,CH,Cf.forRoot(w3),zU,CE,wU,bH.forRoot(C3),Cf]}),e})();(function ox(){Q1=!1} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */)(),OP().bootstrapModule(S3).catch(e=>console.error(e))},439:function(gr,th,iu){(gr=iu.nmd(gr)).exports=function(){"use strict";var ye,Mo;function V(){return ye.apply(null,arguments)}function dn(c){return c instanceof Array||"[object Array]"===Object.prototype.toString.call(c)}function Ct(c){return null!=c&&"[object Object]"===Object.prototype.toString.call(c)}function we(c,d){return Object.prototype.hasOwnProperty.call(c,d)}function bs(c){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(c).length;var d;for(d in c)if(we(c,d))return!1;return!0}function qt(c){return void 0===c}function Jt(c){return"number"==typeof c||"[object Number]"===Object.prototype.toString.call(c)}function Zi(c){return c instanceof Date||"[object Date]"===Object.prototype.toString.call(c)}function Ja(c,d){var g,h=[],_=c.length;for(g=0;g<_;++g)h.push(d(c[g],g));return h}function Dn(c,d){for(var h in d)we(d,h)&&(c[h]=d[h]);return we(d,"toString")&&(c.toString=d.toString),we(d,"valueOf")&&(c.valueOf=d.valueOf),c}function ii(c,d,h,g){return Zr(c,d,h,g,!0).utc()}function le(c){return null==c._pf&&(c._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),c._pf}function Ci(c){if(null==c._isValid){var d=le(c),h=Mo.call(d.parsedDateParts,function(_){return null!=_}),g=!isNaN(c._d.getTime())&&d.overflow<0&&!d.empty&&!d.invalidEra&&!d.invalidMonth&&!d.invalidWeekday&&!d.weekdayMismatch&&!d.nullInput&&!d.invalidFormat&&!d.userInvalidated&&(!d.meridiem||d.meridiem&&h);if(c._strict&&(g=g&&0===d.charsLeftOver&&0===d.unusedTokens.length&&void 0===d.bigHour),null!=Object.isFrozen&&Object.isFrozen(c))return g;c._isValid=g}return c._isValid}function mr(c){var d=ii(NaN);return null!=c?Dn(le(d),c):le(d).userInvalidated=!0,d}Mo=Array.prototype.some?Array.prototype.some:function(c){var g,d=Object(this),h=d.length>>>0;for(g=0;g0)for(h=0;h=0?h?"+":"":"-")+Math.pow(10,Math.max(0,d-g.length)).toString().substr(1)+g}var el=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ws=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ue={},yr={};function z(c,d,h,g){var _=g;"string"==typeof g&&(_=function(){return this[g]()}),c&&(yr[c]=_),d&&(yr[d[0]]=function(){return oi(_.apply(this,arguments),d[1],d[2])}),h&&(yr[h]=function(){return this.localeData().ordinal(_.apply(this,arguments),c)})}function qe(c){return c.match(/\[[\s\S]/)?c.replace(/^\[|\]$/g,""):c.replace(/\\/g,"")}function Ss(c,d){return c.isValid()?(d=ne(d,c.localeData()),Ue[d]=Ue[d]||function ke(c){var h,g,d=c.match(el);for(h=0,g=d.length;h=0&&ws.test(c);)c=c.replace(ws,g),ws.lastIndex=0,h-=1;return c}var Es={};function Rt(c,d){var h=c.toLowerCase();Es[h]=Es[h+"s"]=Es[d]=c}function Fn(c){return"string"==typeof c?Es[c]||Es[c.toLowerCase()]:void 0}function cu(c){var h,g,d={};for(g in c)we(c,g)&&(h=Fn(g))&&(d[h]=c[g]);return d}var rh={};function Qt(c,d){rh[c]=d}function Ms(c){return c%4==0&&c%100!=0||c%400==0}function Kn(c){return c<0?Math.ceil(c)||0:Math.floor(c)}function he(c){var d=+c,h=0;return 0!==d&&isFinite(d)&&(h=Kn(d)),h}function To(c,d){return function(h){return null!=h?(oh(this,c,h),V.updateOffset(this,d),this):Ns(this,c)}}function Ns(c,d){return c.isValid()?c._d["get"+(c._isUTC?"UTC":"")+d]():NaN}function oh(c,d,h){c.isValid()&&!isNaN(h)&&("FullYear"===d&&Ms(c.year())&&1===c.month()&&29===c.date()?(h=he(h),c._d["set"+(c._isUTC?"UTC":"")+d](h,c.month(),ks(h,c.month()))):c._d["set"+(c._isUTC?"UTC":"")+d](h))}var Ro,sh=/\d/,Pn=/\d\d/,Ts=/\d{3}/,As=/\d{4}/,Ao=/[+-]?\d{6}/,Ge=/\d\d?/,nl=/\d\d\d\d?/,uu=/\d\d\d\d\d\d?/,Io=/\d{1,3}/,Is=/\d{1,4}/,Oo=/[+-]?\d{1,6}/,Dr=/\d+/,ut=/[+-]?\d+/,ah=/Z|[+-]\d\d:?\d\d/gi,Os=/Z|[+-]\d\d(?::?\d\d)?/gi,ko=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function $(c,d,h){Ro[c]=ri(d)?d:function(g,_){return g&&h?h:d}}function ch(c,d){return we(Ro,c)?Ro[c](d._strict,d._locale):new RegExp(function wi(c){return Cn(c.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(d,h,g,_,b){return h||g||_||b}))}(c))}function Cn(c){return c.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}Ro={};var dt={};function Se(c,d){var h,_,g=d;for("string"==typeof c&&(c=[c]),Jt(d)&&(g=function(b,N){N[d]=he(b)}),_=c.length,h=0;h<_;h++)dt[c[h]]=g}function Xt(c,d){Se(c,function(h,g,_,b){_._w=_._w||{},d(h,_._w,_,b)})}function Pv(c,d,h){null!=d&&we(dt,c)&&dt[c](d,h._a,h,c)}var ft;function ks(c,d){if(isNaN(c)||isNaN(d))return NaN;var h=function dh(c,d){return(c%d+d)%d}(d,12);return c+=(d-h)/12,1===h?Ms(c)?29:28:31-h%7%2}ft=Array.prototype.indexOf?Array.prototype.indexOf:function(c){var d;for(d=0;d68?1900:2e3)};var P=To("FullYear",!0);function oe(c,d,h,g,_,b,N){var Y;return c<100&&c>=0?(Y=new Date(c+400,d,h,g,_,b,N),isFinite(Y.getFullYear())&&Y.setFullYear(c)):Y=new Date(c,d,h,g,_,b,N),Y}function _e(c){var d,h;return c<100&&c>=0?((h=Array.prototype.slice.call(arguments))[0]=c+400,d=new Date(Date.UTC.apply(null,h)),isFinite(d.getUTCFullYear())&&d.setUTCFullYear(c)):d=new Date(Date.UTC.apply(null,arguments)),d}function Ls(c,d,h){var g=7+d-h;return-(7+_e(c,0,g).getUTCDay()-d)%7+g-1}function gh(c,d,h,g,_){var ce,Pe,Y=1+7*(d-1)+(7+h-g)%7+Ls(c,g,_);return Y<=0?Pe=Fs(ce=c-1)+Y:Y>Fs(c)?(ce=c+1,Pe=Y-Fs(c)):(ce=c,Pe=Y),{year:ce,dayOfYear:Pe}}function xo(c,d,h){var b,N,g=Ls(c.year(),d,h),_=Math.floor((c.dayOfYear()-g-1)/7)+1;return _<1?b=_+Vn(N=c.year()-1,d,h):_>Vn(c.year(),d,h)?(b=_-Vn(c.year(),d,h),N=c.year()+1):(N=c.year(),b=_),{week:b,year:N}}function Vn(c,d,h){var g=Ls(c,d,h),_=Ls(c+1,d,h);return(Fs(c)-g+_)/7}z("w",["ww",2],"wo","week"),z("W",["WW",2],"Wo","isoWeek"),Rt("week","w"),Rt("isoWeek","W"),Qt("week",5),Qt("isoWeek",5),$("w",Ge),$("ww",Ge,Pn),$("W",Ge),$("WW",Ge,Pn),Xt(["w","ww","W","WW"],function(c,d,h,g){d[g.substr(0,1)]=he(c)});function gu(c,d){return c.slice(d,7).concat(c.slice(0,d))}z("d",0,"do","day"),z("dd",0,0,function(c){return this.localeData().weekdaysMin(this,c)}),z("ddd",0,0,function(c){return this.localeData().weekdaysShort(this,c)}),z("dddd",0,0,function(c){return this.localeData().weekdays(this,c)}),z("e",0,0,"weekday"),z("E",0,0,"isoWeekday"),Rt("day","d"),Rt("weekday","e"),Rt("isoWeekday","E"),Qt("day",11),Qt("weekday",11),Qt("isoWeekday",11),$("d",Ge),$("e",Ge),$("E",Ge),$("dd",function(c,d){return d.weekdaysMinRegex(c)}),$("ddd",function(c,d){return d.weekdaysShortRegex(c)}),$("dddd",function(c,d){return d.weekdaysRegex(c)}),Xt(["dd","ddd","dddd"],function(c,d,h,g){var _=h._locale.weekdaysParse(c,g,h._strict);null!=_?d.d=_:le(h).invalidWeekday=c}),Xt(["d","e","E"],function(c,d,h,g){d[g]=he(c)});var _h="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),vh="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),yh="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),$v=ko,Sn=ko,Oe=ko;function G(c,d,h){var g,_,b,N=c.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],g=0;g<7;++g)b=ii([2e3,1]).day(g),this._minWeekdaysParse[g]=this.weekdaysMin(b,"").toLocaleLowerCase(),this._shortWeekdaysParse[g]=this.weekdaysShort(b,"").toLocaleLowerCase(),this._weekdaysParse[g]=this.weekdays(b,"").toLocaleLowerCase();return h?"dddd"===d?-1!==(_=ft.call(this._weekdaysParse,N))?_:null:"ddd"===d?-1!==(_=ft.call(this._shortWeekdaysParse,N))?_:null:-1!==(_=ft.call(this._minWeekdaysParse,N))?_:null:"dddd"===d?-1!==(_=ft.call(this._weekdaysParse,N))||-1!==(_=ft.call(this._shortWeekdaysParse,N))||-1!==(_=ft.call(this._minWeekdaysParse,N))?_:null:"ddd"===d?-1!==(_=ft.call(this._shortWeekdaysParse,N))||-1!==(_=ft.call(this._weekdaysParse,N))||-1!==(_=ft.call(this._minWeekdaysParse,N))?_:null:-1!==(_=ft.call(this._minWeekdaysParse,N))||-1!==(_=ft.call(this._weekdaysParse,N))||-1!==(_=ft.call(this._shortWeekdaysParse,N))?_:null}function Hs(){function c(vt,Ri){return Ri.length-vt.length}var b,N,Y,ce,Pe,d=[],h=[],g=[],_=[];for(b=0;b<7;b++)N=ii([2e3,1]).day(b),Y=Cn(this.weekdaysMin(N,"")),ce=Cn(this.weekdaysShort(N,"")),Pe=Cn(this.weekdays(N,"")),d.push(Y),h.push(ce),g.push(Pe),_.push(Y),_.push(ce),_.push(Pe);d.sort(c),h.sort(c),g.sort(c),_.sort(c),this._weekdaysRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+g.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+d.join("|")+")","i")}function Jr(){return this.hours()%12||12}function sl(c,d){z(c,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),d)})}function _u(c,d){return d._meridiemParse}z("H",["HH",2],0,"hour"),z("h",["hh",2],0,Jr),z("k",["kk",2],0,function ol(){return this.hours()||24}),z("hmm",0,0,function(){return""+Jr.apply(this)+oi(this.minutes(),2)}),z("hmmss",0,0,function(){return""+Jr.apply(this)+oi(this.minutes(),2)+oi(this.seconds(),2)}),z("Hmm",0,0,function(){return""+this.hours()+oi(this.minutes(),2)}),z("Hmmss",0,0,function(){return""+this.hours()+oi(this.minutes(),2)+oi(this.seconds(),2)}),sl("a",!0),sl("A",!1),Rt("hour","h"),Qt("hour",13),$("a",_u),$("A",_u),$("H",Ge),$("h",Ge),$("k",Ge),$("HH",Ge,Pn),$("hh",Ge,Pn),$("kk",Ge,Pn),$("hmm",nl),$("hmmss",uu),$("Hmm",nl),$("Hmmss",uu),Se(["H","HH"],3),Se(["k","kk"],function(c,d,h){var g=he(c);d[3]=24===g?0:g}),Se(["a","A"],function(c,d,h){h._isPm=h._locale.isPM(c),h._meridiem=c}),Se(["h","hh"],function(c,d,h){d[3]=he(c),le(h).bigHour=!0}),Se("hmm",function(c,d,h){var g=c.length-2;d[3]=he(c.substr(0,g)),d[4]=he(c.substr(g)),le(h).bigHour=!0}),Se("hmmss",function(c,d,h){var g=c.length-4,_=c.length-2;d[3]=he(c.substr(0,g)),d[4]=he(c.substr(g,2)),d[5]=he(c.substr(_)),le(h).bigHour=!0}),Se("Hmm",function(c,d,h){var g=c.length-2;d[3]=he(c.substr(0,g)),d[4]=he(c.substr(g))}),Se("Hmmss",function(c,d,h){var g=c.length-4,_=c.length-2;d[3]=he(c.substr(0,g)),d[4]=he(c.substr(g,2)),d[5]=he(c.substr(_))});var wh=To("Hours",!0);var tn,ll={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:fu,monthsShort:hu,week:{dow:0,doy:6},weekdays:_h,weekdaysMin:yh,weekdaysShort:vh,meridiemParse:/[ap]\.?m?\.?/i},Xe={},Bn={};function zv(c,d){var h,g=Math.min(c.length,d.length);for(h=0;h0;){if(_=cl(b.slice(0,h).join("-")))return _;if(g&&g.length>=h&&zv(b,g)>=h-1)break;h--}d++}return tn}(c)}function Fo(c){var d,h=c._a;return h&&-2===le(c).overflow&&(d=h[1]<0||h[1]>11?1:h[2]<1||h[2]>ks(h[0],h[1])?2:h[3]<0||h[3]>24||24===h[3]&&(0!==h[4]||0!==h[5]||0!==h[6])?3:h[4]<0||h[4]>59?4:h[5]<0||h[5]>59?5:h[6]<0||h[6]>999?6:-1,le(c)._overflowDayOfYear&&(d<0||d>2)&&(d=2),le(c)._overflowWeeks&&-1===d&&(d=7),le(c)._overflowWeekday&&-1===d&&(d=8),le(c).overflow=d),c}var vu=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Mi=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Po=/Z|[+-]\d\d(?::?\d\d)?/,Bs=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],et=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Eh=/^\/?Date\((-?\d+)/i,yu=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,bu={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ne(c){var d,h,b,N,Y,ce,g=c._i,_=vu.exec(g)||Mi.exec(g),Pe=Bs.length,vt=et.length;if(_){for(le(c).iso=!0,d=0,h=Pe;d7)&&(ce=!0)):(b=c._locale._week.dow,N=c._locale._week.doy,Pe=xo(xe(),b,N),h=zn(d.gg,c._a[0],Pe.year),g=zn(d.w,Pe.week),null!=d.d?((_=d.d)<0||_>6)&&(ce=!0):null!=d.e?(_=d.e+b,(d.e<0||d.e>6)&&(ce=!0)):_=b),g<1||g>Vn(h,b,N)?le(c)._overflowWeeks=!0:null!=ce?le(c)._overflowWeekday=!0:(Y=gh(h,g,_,b,N),c._a[0]=Y.year,c._dayOfYear=Y.dayOfYear)}(c),null!=c._dayOfYear&&(N=zn(c._a[0],_[0]),(c._dayOfYear>Fs(N)||0===c._dayOfYear)&&(le(c)._overflowDayOfYear=!0),h=_e(N,0,c._dayOfYear),c._a[1]=h.getUTCMonth(),c._a[2]=h.getUTCDate()),d=0;d<3&&null==c._a[d];++d)c._a[d]=g[d]=_[d];for(;d<7;d++)c._a[d]=g[d]=c._a[d]??(2===d?1:0);24===c._a[3]&&0===c._a[4]&&0===c._a[5]&&0===c._a[6]&&(c._nextDay=!0,c._a[3]=0),c._d=(c._useUTC?_e:oe).apply(null,g),b=c._useUTC?c._d.getUTCDay():c._d.getDay(),null!=c._tzm&&c._d.setUTCMinutes(c._d.getUTCMinutes()-c._tzm),c._nextDay&&(c._a[3]=24),c._w&&typeof c._w.d<"u"&&c._w.d!==b&&(le(c).weekdayMismatch=!0)}}function se(c){if(c._f!==V.ISO_8601)if(c._f!==V.RFC_2822){c._a=[],le(c).empty=!0;var h,g,_,b,N,Pe,vt,d=""+c._i,Y=d.length,ce=0;for(vt=(_=ne(c._f,c._locale).match(el)||[]).length,h=0;h0&&le(c).unusedInput.push(N),d=d.slice(d.indexOf(g)+g.length),ce+=g.length),yr[b]?(g?le(c).empty=!1:le(c).unusedTokens.push(b),Pv(b,g,c)):c._strict&&!g&&le(c).unusedTokens.push(b);le(c).charsLeftOver=Y-ce,d.length>0&&le(c).unusedInput.push(d),c._a[3]<=12&&!0===le(c).bigHour&&c._a[3]>0&&(le(c).bigHour=void 0),le(c).parsedDateParts=c._a.slice(0),le(c).meridiem=c._meridiem,c._a[3]=function Je(c,d,h){var g;return null==h?d:null!=c.meridiemHour?c.meridiemHour(d,h):(null!=c.isPM&&((g=c.isPM(h))&&d<12&&(d+=12),!g&&12===d&&(d=0)),d)}(c._locale,c._a[3],c._meridiem),null!==(Pe=le(c).era)&&(c._a[0]=c._locale.erasConvertYear(Pe,c._a[0])),fn(c),Fo(c)}else Ut(c);else Ne(c)}function er(c){var d=c._i,h=c._f;return c._locale=c._locale||jn(c._l),null===d||void 0===h&&""===d?mr({nullInput:!0}):("string"==typeof d&&(c._i=d=c._locale.preparse(d)),Wn(d)?new _r(Fo(d)):(Zi(d)?c._d=d:dn(h)?function Mn(c){var d,h,g,_,b,N,Y=!1,ce=c._f.length;if(0===ce)return le(c).invalidFormat=!0,void(c._d=new Date(NaN));for(_=0;_this?this:c:mr()});function Sr(c,d){var h,g;if(1===d.length&&dn(d[0])&&(d=d[0]),!d.length)return xe();for(h=d[0],g=1;g=0?new Date(c+400,d,h)-Ho:new Date(c,d,h).valueOf()}function Ks(c,d,h){return c<100&&c>=0?Date.UTC(c+400,d,h)-Ho:Date.UTC(c,d,h)}function Ys(c,d){return d.erasAbbrRegex(c)}function jo(){var _,b,c=[],d=[],h=[],g=[],N=this.eras();for(_=0,b=N.length;_(b=Vn(c,g,_))&&(d=b),Ii.call(this,c,d,h,g,_))}function Ii(c,d,h,g,_){var b=gh(c,d,h,g,_),N=_e(b.year,0,b.dayOfYear);return this.year(N.getUTCFullYear()),this.month(N.getUTCMonth()),this.date(N.getUTCDate()),this}z("N",0,0,"eraAbbr"),z("NN",0,0,"eraAbbr"),z("NNN",0,0,"eraAbbr"),z("NNNN",0,0,"eraName"),z("NNNNN",0,0,"eraNarrow"),z("y",["y",1],"yo","eraYear"),z("y",["yy",2],0,"eraYear"),z("y",["yyy",3],0,"eraYear"),z("y",["yyyy",4],0,"eraYear"),$("N",Ys),$("NN",Ys),$("NNN",Ys),$("NNNN",function Bo(c,d){return d.erasNameRegex(c)}),$("NNNNN",function ci(c,d){return d.erasNarrowRegex(c)}),Se(["N","NN","NNN","NNNN","NNNNN"],function(c,d,h,g){var _=h._locale.erasParse(c,g,h._strict);_?le(h).era=_:le(h).invalidEra=c}),$("y",Dr),$("yy",Dr),$("yyy",Dr),$("yyyy",Dr),$("yo",function bl(c,d){return d._eraYearOrdinalRegex||Dr}),Se(["y","yy","yyy","yyyy"],0),Se(["yo"],function(c,d,h,g){var _;h._locale._eraYearOrdinalRegex&&(_=c.match(h._locale._eraYearOrdinalRegex)),d[0]=h._locale.eraYearOrdinalParse?h._locale.eraYearOrdinalParse(c,_):parseInt(c,10)}),z(0,["gg",2],0,function(){return this.weekYear()%100}),z(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Dl("gggg","weekYear"),Dl("ggggg","weekYear"),Dl("GGGG","isoWeekYear"),Dl("GGGGG","isoWeekYear"),Rt("weekYear","gg"),Rt("isoWeekYear","GG"),Qt("weekYear",1),Qt("isoWeekYear",1),$("G",ut),$("g",ut),$("GG",Ge,Pn),$("gg",Ge,Pn),$("GGGG",Is,As),$("gggg",Is,As),$("GGGGG",Oo,Ao),$("ggggg",Oo,Ao),Xt(["gggg","ggggg","GGGG","GGGGG"],function(c,d,h,g){d[g.substr(0,2)]=he(c)}),Xt(["gg","GG"],function(c,d,h,g){d[g]=V.parseTwoDigitYear(c)}),z("Q",0,"Qo","quarter"),Rt("quarter","Q"),Qt("quarter",7),$("Q",sh),Se("Q",function(c,d){d[1]=3*(he(c)-1)}),z("D",["DD",2],"Do","date"),Rt("date","D"),Qt("date",9),$("D",Ge),$("DD",Ge,Pn),$("Do",function(c,d){return c?d._dayOfMonthOrdinalParse||d._ordinalParse:d._dayOfMonthOrdinalParseLenient}),Se(["D","DD"],2),Se("Do",function(c,d){d[2]=he(c.match(Ge)[0])});var Cl=To("Date",!0);z("DDD",["DDDD",3],"DDDo","dayOfYear"),Rt("dayOfYear","DDD"),Qt("dayOfYear",4),$("DDD",Io),$("DDDD",Ts),Se(["DDD","DDDD"],function(c,d,h){h._dayOfYear=he(c)}),z("m",["mm",2],0,"minute"),Rt("minute","m"),Qt("minute",14),$("m",Ge),$("mm",Ge,Pn),Se(["m","mm"],4);var Zh=To("Minutes",!1);z("s",["ss",2],0,"second"),Rt("second","s"),Qt("second",15),$("s",Ge),$("ss",Ge,Pn),Se(["s","ss"],5);var ui,Sl,wl=To("Seconds",!1);for(z("S",0,0,function(){return~~(this.millisecond()/100)}),z(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),z(0,["SSS",3],0,"millisecond"),z(0,["SSSS",4],0,function(){return 10*this.millisecond()}),z(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),z(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),z(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),z(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),z(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),Rt("millisecond","ms"),Qt("millisecond",16),$("S",Io,sh),$("SS",Io,Pn),$("SSS",Io,Ts),ui="SSSS";ui.length<=9;ui+="S")$(ui,Dr);function El(c,d){d[6]=he(1e3*("0."+c))}for(ui="S";ui.length<=9;ui+="S")Se(ui,El);Sl=To("Milliseconds",!1),z("z",0,0,"zoneAbbr"),z("zz",0,0,"zoneName");var x=_r.prototype;function Ml(c){return c}x.add=Zv,x.calendar=function gl(c,d){1===arguments.length&&(arguments[0]?Xv(arguments[0])?(c=arguments[0],d=void 0):ny(arguments[0])&&(d=arguments[0],c=void 0):(c=void 0,d=void 0));var h=c||xe(),g=eo(h,this).startOf("day"),_=V.calendarFormat(this,g)||"sameElse",b=d&&(ri(d[_])?d[_].call(this,h):d[_]);return this.format(b||this.localeData().calendar(_,this,xe(h)))},x.clone=function iy(){return new _r(this)},x.diff=function Ph(c,d,h){var g,_,b;if(!this.isValid())return NaN;if(!(g=eo(c,this)).isValid())return NaN;switch(_=6e4*(g.utcOffset()-this.utcOffset()),d=Fn(d)){case"year":b=Gs(this,g)/12;break;case"month":b=Gs(this,g);break;case"quarter":b=Gs(this,g)/3;break;case"second":b=(this-g)/1e3;break;case"minute":b=(this-g)/6e4;break;case"hour":b=(this-g)/36e5;break;case"day":b=(this-g-_)/864e5;break;case"week":b=(this-g-_)/6048e5;break;default:b=this-g}return h?b:Kn(b)},x.endOf=function Nn(c){var d,h;if(void 0===(c=Fn(c))||"millisecond"===c||!this.isValid())return this;switch(h=this._isUTC?Ks:Tu,c){case"year":d=h(this.year()+1,0,1)-1;break;case"quarter":d=h(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":d=h(this.year(),this.month()+1,1)-1;break;case"week":d=h(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":d=h(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":d=h(this.year(),this.month(),this.date()+1)-1;break;case"hour":d=this._d.valueOf(),d+=vl-xt(d+(this._isUTC?0:this.utcOffset()*no),vl)-1;break;case"minute":d=this._d.valueOf(),d+=no-xt(d,no)-1;break;case"second":d=this._d.valueOf(),d+=1e3-xt(d,1e3)-1}return this._d.setTime(d),V.updateOffset(this,!0),this},x.format=function ml(c){c||(c=this.isUtc()?V.defaultFormatUtc:V.defaultFormat);var d=Ss(this,c);return this.localeData().postformat(d)},x.from=function Vh(c,d){return this.isValid()&&(Wn(c)&&c.isValid()||xe(c).isValid())?li({to:this,from:c}).locale(this.locale()).humanize(!d):this.localeData().invalidDate()},x.fromNow=function $n(c){return this.from(xe(),c)},x.to=function _l(c,d){return this.isValid()&&(Wn(c)&&c.isValid()||xe(c).isValid())?li({from:this,to:c}).locale(this.locale()).humanize(!d):this.localeData().invalidDate()},x.toNow=function Hh(c){return this.to(xe(),c)},x.get=function xv(c){return ri(this[c=Fn(c)])?this[c]():this},x.invalidAt=function sy(){return le(this).overflow},x.isAfter=function ry(c,d){var h=Wn(c)?c:xe(c);return!(!this.isValid()||!h.isValid())&&("millisecond"===(d=Fn(d)||"millisecond")?this.valueOf()>h.valueOf():h.valueOf()9999?Ss(h,d?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):ri(Date.prototype.toISOString)?d?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",Ss(h,"Z")):Ss(h,d?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},x.inspect=function Lh(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var h,g,c="moment",d="";return this.isLocal()||(c=0===this.utcOffset()?"moment.utc":"moment.parseZone",d="Z"),h="["+c+'("]',g=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(h+g+"-MM-DD[T]HH:mm:ss.SSS"+d+'[")]')},typeof Symbol<"u"&&null!=Symbol.for&&(x[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),x.toJSON=function yl(){return this.isValid()?this.toISOString():null},x.toString=function Eu(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},x.unix=function zs(){return Math.floor(this.valueOf()/1e3)},x.valueOf=function jh(){return this._d.valueOf()-6e4*(this._offset||0)},x.creationData=function Uh(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},x.eraName=function Kh(){var c,d,h,g=this.localeData().eras();for(c=0,d=g.length;cthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},x.isLocal=function Ah(){return!!this.isValid()&&!this._isUTC},x.isUtcOffset=function Yv(){return!!this.isValid()&&this._isUTC},x.isUtc=Cu,x.isUTC=Cu,x.zoneAbbr=function Qh(){return this._isUTC?"UTC":""},x.zoneName=function xu(){return this._isUTC?"Coordinated Universal Time":""},x.dates=Zt("dates accessor is deprecated. Use date instead.",Cl),x.months=Zt("months accessor is deprecated. Use month instead",Rs),x.years=Zt("years accessor is deprecated. Use year instead",P),x.zone=Zt("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function Th(c,d){return null!=c?("string"!=typeof c&&(c=-c),this.utcOffset(c,d),this):-this.utcOffset()}),x.isDSTShifted=Zt("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function Jn(){if(!qt(this._isDSTShifted))return this._isDSTShifted;var d,c={};return Za(c,this),(c=er(c))._a?(d=c._isUTC?ii(c._a):xe(c._a),this._isDSTShifted=this.isValid()&&function Nh(c,d,h){var N,g=Math.min(c.length,d.length),_=Math.abs(c.length-d.length),b=0;for(N=0;N0):this._isDSTShifted=!1,this._isDSTShifted});var Ee=Xa.prototype;function ro(c,d,h,g){var _=jn(),b=ii().set(g,d);return _[h](b,c)}function Lu(c,d,h){if(Jt(c)&&(d=c,c=void 0),c=c||"",null!=d)return ro(c,d,h,"month");var g,_=[];for(g=0;g<12;g++)_[g]=ro(c,g,h,"month");return _}function Nl(c,d,h,g){"boolean"==typeof c?(Jt(d)&&(h=d,d=void 0),d=d||""):(h=d=c,c=!1,Jt(d)&&(h=d,d=void 0),d=d||"");var N,_=jn(),b=c?_._week.dow:0,Y=[];if(null!=h)return ro(d,(h+b)%7,g,"day");for(N=0;N<7;N++)Y[N]=ro(d,(N+b)%7,g,"day");return Y}Ee.calendar=function su(c,d,h){var g=this._calendar[c]||this._calendar.sameElse;return ri(g)?g.call(d,h):g},Ee.longDateFormat=function Tv(c){var d=this._longDateFormat[c],h=this._longDateFormat[c.toUpperCase()];return d||!h?d:(this._longDateFormat[c]=h.match(el).map(function(g){return"MMMM"===g||"MM"===g||"DD"===g||"dddd"===g?g.slice(1):g}).join(""),this._longDateFormat[c])},Ee.invalidDate=function Av(){return this._invalidDate},Ee.ordinal=function kv(c){return this._ordinal.replace("%d",c)},Ee.preparse=Ml,Ee.postformat=Ml,Ee.relativeTime=function Rv(c,d,h,g){var _=this._relativeTime[h];return ri(_)?_(c,d,h,g):_.replace(/%d/i,c)},Ee.pastFuture=function lu(c,d){var h=this._relativeTime[c>0?"future":"past"];return ri(h)?h(d):h.replace(/%s/i,d)},Ee.set=function Qa(c){var d,h;for(h in c)we(c,h)&&(ri(d=c[h])?this[h]=d:this["_"+h]=d);this._config=c,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Ee.eras=function Gh(c,d){var h,g,_,b=this._eras||jn("en")._eras;for(h=0,g=b.length;h=0)return b[g]},Ee.erasConvertYear=function Ou(c,d){var h=c.since<=c.until?1:-1;return void 0===d?V(c.since).year():V(c.since).year()+(d-c.offset)*h},Ee.erasAbbrRegex=function _t(c){return we(this,"_erasAbbrRegex")||jo.call(this),c?this._erasAbbrRegex:this._erasRegex},Ee.erasNameRegex=function mt(c){return we(this,"_erasNameRegex")||jo.call(this),c?this._erasNameRegex:this._erasRegex},Ee.erasNarrowRegex=function wt(c){return we(this,"_erasNarrowRegex")||jo.call(this),c?this._erasNarrowRegex:this._erasRegex},Ee.months=function hh(c,d){return c?dn(this._months)?this._months[c.month()]:this._months[(this._months.isFormat||pu).test(d)?"format":"standalone"][c.month()]:dn(this._months)?this._months:this._months.standalone},Ee.monthsShort=function il(c,d){return c?dn(this._monthsShort)?this._monthsShort[c.month()]:this._monthsShort[pu.test(d)?"format":"standalone"][c.month()]:dn(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Ee.monthsParse=function rl(c,d,h){var g,_,b;if(this._monthsParseExact)return $e.call(this,c,d,h);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),g=0;g<12;g++){if(_=ii([2e3,g]),h&&!this._longMonthsParse[g]&&(this._longMonthsParse[g]=new RegExp("^"+this.months(_,"").replace(".","")+"$","i"),this._shortMonthsParse[g]=new RegExp("^"+this.monthsShort(_,"").replace(".","")+"$","i")),!h&&!this._monthsParse[g]&&(b="^"+this.months(_,"")+"|^"+this.monthsShort(_,""),this._monthsParse[g]=new RegExp(b.replace(".",""),"i")),h&&"MMMM"===d&&this._longMonthsParse[g].test(c))return g;if(h&&"MMM"===d&&this._shortMonthsParse[g].test(c))return g;if(!h&&this._monthsParse[g].test(c))return g}},Ee.monthsRegex=function te(c){return this._monthsParseExact?(we(this,"_monthsRegex")||xs.call(this),c?this._monthsStrictRegex:this._monthsRegex):(we(this,"_monthsRegex")||(this._monthsRegex=fh),this._monthsStrictRegex&&c?this._monthsStrictRegex:this._monthsRegex)},Ee.monthsShortRegex=function Te(c){return this._monthsParseExact?(we(this,"_monthsRegex")||xs.call(this),c?this._monthsShortStrictRegex:this._monthsShortRegex):(we(this,"_monthsShortRegex")||(this._monthsShortRegex=gt),this._monthsShortStrictRegex&&c?this._monthsShortStrictRegex:this._monthsShortRegex)},Ee.week=function wn(c){return xo(c,this._week.dow,this._week.doy).week},Ee.firstDayOfYear=function Vv(){return this._week.doy},Ee.firstDayOfWeek=function mh(){return this._week.dow},Ee.weekdays=function Uv(c,d){var h=dn(this._weekdays)?this._weekdays:this._weekdays[c&&!0!==c&&this._weekdays.isFormat.test(d)?"format":"standalone"];return!0===c?gu(h,this._week.dow):c?h[c.day()]:h},Ee.weekdaysMin=function Wv(c){return!0===c?gu(this._weekdaysMin,this._week.dow):c?this._weekdaysMin[c.day()]:this._weekdaysMin},Ee.weekdaysShort=function Gv(c){return!0===c?gu(this._weekdaysShort,this._week.dow):c?this._weekdaysShort[c.day()]:this._weekdaysShort},Ee.weekdaysParse=function Kv(c,d,h){var g,_,b;if(this._weekdaysParseExact)return G.call(this,c,d,h);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),g=0;g<7;g++){if(_=ii([2e3,1]).day(g),h&&!this._fullWeekdaysParse[g]&&(this._fullWeekdaysParse[g]=new RegExp("^"+this.weekdays(_,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[g]=new RegExp("^"+this.weekdaysShort(_,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[g]=new RegExp("^"+this.weekdaysMin(_,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[g]||(b="^"+this.weekdays(_,"")+"|^"+this.weekdaysShort(_,"")+"|^"+this.weekdaysMin(_,""),this._weekdaysParse[g]=new RegExp(b.replace(".",""),"i")),h&&"dddd"===d&&this._fullWeekdaysParse[g].test(c))return g;if(h&&"ddd"===d&&this._shortWeekdaysParse[g].test(c))return g;if(h&&"dd"===d&&this._minWeekdaysParse[g].test(c))return g;if(!h&&this._weekdaysParse[g].test(c))return g}},Ee.weekdaysRegex=function mu(c){return this._weekdaysParseExact?(we(this,"_weekdaysRegex")||Hs.call(this),c?this._weekdaysStrictRegex:this._weekdaysRegex):(we(this,"_weekdaysRegex")||(this._weekdaysRegex=$v),this._weekdaysStrictRegex&&c?this._weekdaysStrictRegex:this._weekdaysRegex)},Ee.weekdaysShortRegex=function Dh(c){return this._weekdaysParseExact?(we(this,"_weekdaysRegex")||Hs.call(this),c?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(we(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Sn),this._weekdaysShortStrictRegex&&c?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Ee.weekdaysMinRegex=function Ch(c){return this._weekdaysParseExact?(we(this,"_weekdaysRegex")||Hs.call(this),c?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(we(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Oe),this._weekdaysMinStrictRegex&&c?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Ee.isPM=function X(c){return"p"===(c+"").toLowerCase().charAt(0)},Ee.meridiem=function Hn(c,d,h){return c>11?h?"pm":"PM":h?"am":"AM"},Cr("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(c){var d=c%10;return c+(1===he(c%100/10)?"th":1===d?"st":2===d?"nd":3===d?"rd":"th")}}),V.lang=Zt("moment.lang is deprecated. Use moment.locale instead.",Cr),V.langData=Zt("moment.langData is deprecated. Use moment.localeData instead.",jn);var Oi=Math.abs;function Vu(c,d,h,g){var _=li(d,h);return c._milliseconds+=g*_._milliseconds,c._days+=g*_._days,c._months+=g*_._months,c._bubble()}function $o(c){return c<0?Math.floor(c):Math.ceil(c)}function Zs(c){return 4800*c/146097}function Qs(c){return 146097*c/4800}function Tn(c){return function(){return this.as(c)}}var rp=Tn("ms"),op=Tn("s"),Uo=Tn("m"),Tl=Tn("h"),sp=Tn("d"),ap=Tn("w"),ly=Tn("M"),cy=Tn("Q"),Xs=Tn("y");function di(c){return function(){return this.isValid()?this._data[c]:NaN}}var ju=di("milliseconds"),$u=di("seconds"),oo=di("minutes"),lp=di("hours"),so=di("days"),Al=di("months"),ea=di("years");var fi=Math.round,Ar={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function cp(c,d,h,g,_){return _.relativeTime(d||1,!!h,c,g)}var Wo=Math.abs;function ki(c){return(c>0)-(c<0)||+c}function Ir(){if(!this.isValid())return this.localeData().invalidDate();var g,_,b,N,ce,Pe,vt,Ri,c=Wo(this._milliseconds)/1e3,d=Wo(this._days),h=Wo(this._months),Y=this.asSeconds();return Y?(g=Kn(c/60),_=Kn(g/60),c%=60,g%=60,b=Kn(h/12),h%=12,N=c?c.toFixed(3).replace(/\.?0+$/,""):"",ce=Y<0?"-":"",Pe=ki(this._months)!==ki(Y)?"-":"",vt=ki(this._days)!==ki(Y)?"-":"",Ri=ki(this._milliseconds)!==ki(Y)?"-":"",ce+"P"+(b?Pe+b+"Y":"")+(h?Pe+h+"M":"")+(d?vt+d+"D":"")+(_||g||c?"T":"")+(_?Ri+_+"H":"")+(g?Ri+g+"M":"")+(c?Ri+N+"S":"")):"P0D"}var De=Lo.prototype; -//! moment.js -return De.isValid=function Yn(){return this._isValid},De.abs=function tp(){var c=this._data;return this._milliseconds=Oi(this._milliseconds),this._days=Oi(this._days),this._months=Oi(this._months),c.milliseconds=Oi(c.milliseconds),c.seconds=Oi(c.seconds),c.minutes=Oi(c.minutes),c.hours=Oi(c.hours),c.months=Oi(c.months),c.years=Oi(c.years),this},De.add=function np(c,d){return Vu(this,c,d,1)},De.subtract=function qs(c,d){return Vu(this,c,d,-1)},De.as=function ip(c){if(!this.isValid())return NaN;var d,h,g=this._milliseconds;if("month"===(c=Fn(c))||"quarter"===c||"year"===c)switch(d=this._days+g/864e5,h=this._months+Zs(d),c){case"month":return h;case"quarter":return h/3;case"year":return h/12}else switch(d=this._days+Math.round(Qs(this._months)),c){case"week":return d/7+g/6048e5;case"day":return d+g/864e5;case"hour":return 24*d+g/36e5;case"minute":return 1440*d+g/6e4;case"second":return 86400*d+g/1e3;case"millisecond":return Math.floor(864e5*d)+g;default:throw new Error("Unknown unit "+c)}},De.asMilliseconds=rp,De.asSeconds=op,De.asMinutes=Uo,De.asHours=Tl,De.asDays=sp,De.asWeeks=ap,De.asMonths=ly,De.asQuarters=cy,De.asYears=Xs,De.valueOf=function ir(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*he(this._months/12):NaN},De._bubble=function Js(){var _,b,N,Y,ce,c=this._milliseconds,d=this._days,h=this._months,g=this._data;return c>=0&&d>=0&&h>=0||c<=0&&d<=0&&h<=0||(c+=864e5*$o(Qs(h)+d),d=0,h=0),g.milliseconds=c%1e3,_=Kn(c/1e3),g.seconds=_%60,b=Kn(_/60),g.minutes=b%60,N=Kn(b/60),g.hours=N%24,d+=Kn(N/24),h+=ce=Kn(Zs(d)),d-=$o(Qs(ce)),Y=Kn(h/12),h%=12,g.days=d,g.months=h,g.years=Y,this},De.clone=function Hu(){return li(this)},De.get=function Bu(c){return c=Fn(c),this.isValid()?this[c+"s"]():NaN},De.milliseconds=ju,De.seconds=$u,De.minutes=oo,De.hours=lp,De.days=so,De.weeks=function uy(){return Kn(this.days()/7)},De.months=Al,De.years=ea,De.humanize=function Il(c,d){if(!this.isValid())return this.localeData().invalidDate();var _,b,h=!1,g=Ar;return"object"==typeof c&&(d=c,c=!1),"boolean"==typeof c&&(h=c),"object"==typeof d&&(g=Object.assign({},Ar,d),null!=d.s&&null==d.ss&&(g.ss=d.s-1)),b=function hi(c,d,h,g){var _=li(c).abs(),b=fi(_.as("s")),N=fi(_.as("m")),Y=fi(_.as("h")),ce=fi(_.as("d")),Pe=fi(_.as("M")),vt=fi(_.as("w")),Ri=fi(_.as("y")),nt=b<=h.ss&&["s",b]||b0,nt[4]=g,cp.apply(null,nt)}(this,!h,g,_=this.localeData()),h&&(b=_.pastFuture(+this,b)),_.postformat(b)},De.toISOString=Ir,De.toString=Ir,De.toJSON=Ir,De.locale=Ws,De.localeData=Bh,De.toIsoString=Zt("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ir),De.lang=Nu,z("X",0,0,"unix"),z("x",0,0,"valueOf"),$("x",ut),$("X",/[+-]?\d+(\.\d{1,3})?/),Se("X",function(c,d,h){h._d=new Date(1e3*parseFloat(c))}),Se("x",function(c,d,h){h._d=new Date(he(c))}),V.version="2.29.4",function qa(c){ye=c}(xe),V.fn=x,V.min=function dl(){return Sr("isBefore",[].slice.call(arguments,0))},V.max=function Er(){return Sr("isAfter",[].slice.call(arguments,0))},V.now=function(){return Date.now?Date.now():+new Date},V.utc=ii,V.unix=function Fu(c){return xe(1e3*c)},V.months=function on(c,d){return Lu(c,d,"months")},V.isDate=Zi,V.locale=Cr,V.invalid=mr,V.duration=li,V.isMoment=Wn,V.weekdays=function st(c,d,h){return Nl(c,d,h,"weekdays")},V.parseZone=function Pu(){return xe.apply(null,arguments).parseZone()},V.localeData=jn,V.isDuration=Fe,V.monthsShort=function nr(c,d){return Lu(c,d,"monthsShort")},V.weekdaysMin=function ep(c,d,h){return Nl(c,d,h,"weekdaysMin")},V.defineLocale=Xi,V.updateLocale=function Ae(c,d){if(null!=d){var h,g,_=ll;null!=Xe[c]&&null!=Xe[c].parentLocale?Xe[c].set(xn(Xe[c]._config,d)):(null!=(g=cl(c))&&(_=g._config),d=xn(_,d),null==g&&(d.abbr=c),(h=new Xa(d)).parentLocale=Xe[c],Xe[c]=h),Cr(c)}else null!=Xe[c]&&(null!=Xe[c].parentLocale?(Xe[c]=Xe[c].parentLocale,c===Cr()&&Cr(c)):null!=Xe[c]&&delete Xe[c]);return Xe[c]},V.locales=function ul(){return Cs(Xe)},V.weekdaysShort=function Xh(c,d,h){return Nl(c,d,h,"weekdaysShort")},V.normalizeUnits=Fn,V.relativeTimeRounding=function up(c){return void 0===c?fi:"function"==typeof c&&(fi=c,!0)},V.relativeTimeThreshold=function Go(c,d){return void 0!==Ar[c]&&(void 0===d?Ar[c]:(Ar[c]=d,"s"===c&&(Ar.ss=d-1),!0))},V.calendarFormat=function wu(c,d){var h=c.diff(d,"days",!0);return h<-6?"sameElse":h<-1?"lastWeek":h<0?"lastDay":h<1?"sameDay":h<2?"nextDay":h<7?"nextWeek":"sameElse"},V.prototype=x,V.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},V}()}},gr=>{gr(gr.s=381)}]); \ No newline at end of file +(self.webpackChunkdashboard=self.webpackChunkdashboard||[]).push([[179],{631:(hr,lh,Xc)=>{"use strict";function be(e){return"function"==typeof e}function V(e){const t=e(i=>{Error.call(i),i.stack=(new Error).stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}const Ja=V(e=>function(t){e(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((i,r)=>`${r+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t});function dn(e,n){if(e){const t=e.indexOf(n);0<=t&&e.splice(t,1)}}class _t{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:t}=this;if(t)if(this._parentage=null,Array.isArray(t))for(const o of t)o.remove(this);else t.remove(this);const{initialTeardown:i}=this;if(be(i))try{i()}catch(o){n=o instanceof Ja?o.errors:[o]}const{_finalizers:r}=this;if(r){this._finalizers=null;for(const o of r)try{qt(o)}catch(s){n=n??[],s instanceof Ja?n=[...n,...s.errors]:n.push(s)}}if(n)throw new Ja(n)}}add(n){var t;if(n&&n!==this)if(this.closed)qt(n);else{if(n instanceof _t){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(t=this._finalizers)&&void 0!==t?t:[]).push(n)}}_hasParent(n){const{_parentage:t}=this;return t===n||Array.isArray(t)&&t.includes(n)}_addParent(n){const{_parentage:t}=this;this._parentage=Array.isArray(t)?(t.push(n),t):t?[t,n]:n}_removeParent(n){const{_parentage:t}=this;t===n?this._parentage=null:Array.isArray(t)&&dn(t,n)}remove(n){const{_finalizers:t}=this;t&&dn(t,n),n instanceof _t&&n._removeParent(this)}}_t.EMPTY=(()=>{const e=new _t;return e.closed=!0,e})();const we=_t.EMPTY;function ws(e){return e instanceof _t||e&&"closed"in e&&be(e.remove)&&be(e.add)&&be(e.unsubscribe)}function qt(e){be(e)?e():e.unsubscribe()}const Jt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},zi={setTimeout(e,n,...t){const{delegate:i}=zi;return i?.setTimeout?i.setTimeout(e,n,...t):setTimeout(e,n,...t)},clearTimeout(e){const{delegate:n}=zi;return(n?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Za(e){zi.setTimeout(()=>{const{onUnhandledError:n}=Jt;if(!n)throw e;n(e)})}function Cn(){}const ni=Mo("C",void 0,void 0);function Mo(e,n,t){return{kind:e,value:n,error:t}}let _i=null;function pr(e){if(Jt.useDeprecatedSynchronousErrorHandling){const n=!_i;if(n&&(_i={errorThrown:!1,error:null}),e(),n){const{errorThrown:t,error:i}=_i;if(_i=null,t)throw i}}else e()}class To extends _t{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,ws(n)&&n.add(this)):this.destination=ii}static create(n,t,i){return new mr(n,t,i)}next(n){this.isStopped?Ss(function le(e){return Mo("N",e,void 0)}(n),this):this._next(n)}error(n){this.isStopped?Ss(function ch(e){return Mo("E",void 0,e)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?Ss(ni,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const Qa=Function.prototype.bind;function gr(e,n){return Qa.call(e,n)}class Wn{constructor(n){this.partialObserver=n}next(n){const{partialObserver:t}=this;if(t.next)try{t.next(n)}catch(i){Zt(i)}}error(n){const{partialObserver:t}=this;if(t.error)try{t.error(n)}catch(i){Zt(i)}else Zt(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(t){Zt(t)}}}class mr extends To{constructor(n,t,i){let r;if(super(),be(n)||!n)r={next:n??void 0,error:t??void 0,complete:i??void 0};else{let o;this&&Jt.useDeprecatedNextContext?(o=Object.create(n),o.unsubscribe=()=>this.unsubscribe(),r={next:n.next&&gr(n.next,o),error:n.error&&gr(n.error,o),complete:n.complete&&gr(n.complete,o)}):r=n}this.destination=new Wn(r)}}function Zt(e){Jt.useDeprecatedSynchronousErrorHandling?function eu(e){Jt.useDeprecatedSynchronousErrorHandling&&_i&&(_i.errorThrown=!0,_i.error=e)}(e):Za(e)}function Ss(e,n){const{onStoppedNotification:t}=Jt;t&&zi.setTimeout(()=>t(e,n))}const ii={closed:!0,next:Cn,error:function tu(e){throw e},complete:Cn},Xa="function"==typeof Symbol&&Symbol.observable||"@@observable";function Pn(e){return e}function Es(e){return 0===e.length?Pn:1===e.length?e[0]:function(t){return e.reduce((i,r)=>r(i),t)}}let Ve=(()=>{class e{constructor(t){t&&(this._subscribe=t)}lift(t){const i=new e;return i.source=this,i.operator=t,i}subscribe(t,i,r){const o=function tl(e){return e&&e instanceof To||function ri(e){return e&&be(e.next)&&be(e.error)&&be(e.complete)}(e)&&ws(e)}(t)?t:new mr(t,i,r);return pr(()=>{const{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(t){try{return this._subscribe(t)}catch(i){t.error(i)}}forEach(t,i){return new(i=nu(i))((r,o)=>{const s=new mr({next:a=>{try{t(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:r});this.subscribe(s)})}_subscribe(t){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(t)}[Xa](){return this}pipe(...t){return Es(t)(this)}toPromise(t){return new(t=nu(t))((i,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>i(o))})}}return e.create=n=>new e(n),e})();function nu(e){var n;return null!==(n=e??Jt.Promise)&&void 0!==n?n:Promise}const Ms=V(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let je=(()=>{class e extends Ve{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){const i=new _r(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new Ms}next(t){pr(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}})}error(t){pr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;const{observers:i}=this;for(;i.length;)i.shift().error(t)}})}complete(){pr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:t}=this;for(;t.length;)t.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){const{hasError:i,isStopped:r,observers:o}=this;return i||r?we:(this.currentObservers=null,o.push(t),new _t(()=>{this.currentObservers=null,dn(o,t)}))}_checkFinalizedStatuses(t){const{hasError:i,thrownError:r,isStopped:o}=this;i?t.error(r):o&&t.complete()}asObservable(){const t=new Ve;return t.source=this,t}}return e.create=(n,t)=>new _r(n,t),e})();class _r extends je{constructor(n,t){super(),this.destination=n,this.source=t}next(n){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===i||i.call(t,n)}error(n){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===i||i.call(t,n)}complete(){var n,t;null===(t=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===t||t.call(n)}_subscribe(n){var t,i;return null!==(i=null===(t=this.source)||void 0===t?void 0:t.subscribe(n))&&void 0!==i?i:we}}function q(e){return be(e?.lift)}function qe(e){return n=>{if(q(n))return n.lift(function(t){try{return e(t,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function Oe(e,n,t,i,r){return new Ts(e,n,t,i,r)}class Ts extends To{constructor(n,t,i,r,o,s){super(n),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=t?function(a){try{t(a)}catch(l){n.error(l)}}:super._next,this._error=r?function(a){try{r(a)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:t}=this;super.unsubscribe(),!t&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function ie(e,n){return qe((t,i)=>{let r=0;t.subscribe(Oe(i,o=>{i.next(e.call(n,o,r++))}))})}function wn(e){return this instanceof wn?(this.v=e,this):new wn(e)}function Io(e,n,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=t.apply(e,n||[]),o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(m){i[m]&&(r[m]=function(v){return new Promise(function(y,D){o.push([m,v,y,D])>1||a(m,v)})})}function a(m,v){try{!function l(m){m.value instanceof wn?Promise.resolve(m.value.v).then(u,f):p(o[0][2],m)}(i[m](v))}catch(y){p(o[0][3],y)}}function u(m){a("next",m)}function f(m){a("throw",m)}function p(m,v){m(v),o.shift(),o.length&&a(o[0][0],o[0][1])}}function su(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=function St(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],i=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(o){t[o]=e[o]&&function(s){return new Promise(function(a,l){!function r(o,s,a,l){Promise.resolve(l).then(function(u){o({value:u,done:a})},s)}(a,l,(s=e[o](s)).done,s.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const Yr=e=>e&&"number"==typeof e.length&&"function"!=typeof e;function vr(e){return be(e?.then)}function Oo(e){return be(e[Xa])}function fu(e){return Symbol.asyncIterator&&be(e?.[Symbol.asyncIterator])}function ko(e){return new TypeError(`You provided ${null!==e&&"object"==typeof e?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const qr=function gh(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function Ro(e){return be(e?.[qr])}function $(e){return Io(this,arguments,function*(){const t=e.getReader();try{for(;;){const{value:i,done:r}=yield wn(t.read());if(r)return yield wn(void 0);yield yield wn(i)}}finally{t.releaseLock()}})}function hu(e){return be(e?.getReader)}function Et(e){if(e instanceof Ve)return e;if(null!=e){if(Oo(e))return function En(e){return new Ve(n=>{const t=e[Xa]();if(be(t.subscribe))return t.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(e);if(Yr(e))return function ol(e){return new Ve(n=>{for(let t=0;t{e.then(t=>{n.closed||(n.next(t),n.complete())},t=>n.error(t)).then(null,Za)})}(e);if(fu(e))return pu(e);if(Ro(e))return function xo(e){return new Ve(n=>{for(const t of e)if(n.next(t),n.closed)return;n.complete()})}(e);if(hu(e))return function $t(e){return pu($(e))}(e)}throw ko(e)}function pu(e){return new Ve(n=>{(function vi(e,n){var t,i,r,o;return function xt(e,n,t,i){return new(t||(t=Promise))(function(o,s){function a(f){try{u(i.next(f))}catch(p){s(p)}}function l(f){try{u(i.throw(f))}catch(p){s(p)}}function u(f){f.done?o(f.value):function r(o){return o instanceof t?o:new t(function(s){s(o)})}(f.value).then(a,l)}u((i=i.apply(e,n||[])).next())})}(this,void 0,void 0,function*(){try{for(t=su(e);!(i=yield t.next()).done;)if(n.next(i.value),n.closed)return}catch(s){r={error:s}}finally{try{i&&!i.done&&(o=t.return)&&(yield o.call(t))}finally{if(r)throw r.error}}n.complete()})})(e,n).catch(t=>n.error(t))})}function Mt(e,n,t,i=0,r=!1){const o=n.schedule(function(){t(),r?e.add(this.schedule(null,i)):this.unsubscribe()},i);if(e.add(o),!r)return o}function ke(e,n,t=1/0){return be(n)?ke((i,r)=>ie((o,s)=>n(i,o,r,s))(Et(e(i,r))),t):("number"==typeof n&&(t=n),qe((i,r)=>function vt(e,n,t,i,r,o,s,a){const l=[];let u=0,f=0,p=!1;const m=()=>{p&&!l.length&&!u&&n.complete()},v=D=>u{o&&n.next(D),u++;let w=!1;Et(t(D,f++)).subscribe(Oe(n,S=>{r?.(S),o?v(S):n.next(S)},()=>{w=!0},void 0,()=>{if(w)try{for(u--;l.length&&uy(S)):y(S)}m()}catch(S){n.error(S)}}))};return e.subscribe(Oe(n,v,()=>{p=!0,m()})),()=>{a?.()}}(i,r,e,t)))}function fn(e=1/0){return ke(Pn,e)}const Ft=new Ve(e=>e.complete());function gu(e){return e&&be(e.schedule)}function tt(e){return e[e.length-1]}function yr(e){return be(tt(e))?e.pop():void 0}function Fo(e){return gu(tt(e))?e.pop():void 0}function sl(e,n=0){return qe((t,i)=>{t.subscribe(Oe(i,r=>Mt(i,e,()=>i.next(r),n),()=>Mt(i,e,()=>i.complete(),n),r=>Mt(i,e,()=>i.error(r),n)))})}function _u(e,n=0){return qe((t,i)=>{i.add(e.schedule(()=>t.subscribe(i),n))})}function vu(e,n){if(!e)throw new Error("Iterable cannot be null");return new Ve(t=>{Mt(t,n,()=>{const i=e[Symbol.asyncIterator]();Mt(t,n,()=>{i.next().then(r=>{r.done?t.complete():t.next(r.value)})},0,!0)})})}function dt(e,n){return n?function bu(e,n){if(null!=e){if(Oo(e))return function _h(e,n){return Et(e).pipe(_u(n),sl(n))}(e,n);if(Yr(e))return function yh(e,n){return new Ve(t=>{let i=0;return n.schedule(function(){i===e.length?t.complete():(t.next(e[i++]),t.closed||this.schedule())})})}(e,n);if(vr(e))return function vh(e,n){return Et(e).pipe(_u(n),sl(n))}(e,n);if(fu(e))return vu(e,n);if(Ro(e))return function bh(e,n){return new Ve(t=>{let i;return Mt(t,n,()=>{i=e[qr](),Mt(t,n,()=>{let r,o;try{({value:r,done:o}=i.next())}catch(s){return void t.error(s)}o?t.complete():t.next(r)},0,!0)}),()=>be(i?.return)&&i.return()})}(e,n);if(hu(e))return function yu(e,n){return vu($(e),n)}(e,n)}throw ko(e)}(e,n):Et(e)}function Os(e,n,...t){if(!0===n)return void e();if(!1===n)return;const i=new mr({next:()=>{i.unsubscribe(),e()}});return n(...t).subscribe(i)}function Ne(e){for(let n in e)if(e[n]===Ne)return n;throw Error("Could not find renamed property on target object.")}function ks(e,n){for(const t in n)n.hasOwnProperty(t)&&!e.hasOwnProperty(t)&&(e[t]=n[t])}function He(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(He).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const n=e.toString();if(null==n)return""+n;const t=n.indexOf("\n");return-1===t?n:n.substring(0,t)}function al(e,n){return null==e||""===e?null===n?"":n:null==n||""===n?e:e+" "+n}const Po=Ne({__forward_ref__:Ne});function De(e){return e.__forward_ref__=De,e.toString=function(){return He(this())},e}function te(e){return br(e)?e():e}function br(e){return"function"==typeof e&&e.hasOwnProperty(Po)&&e.__forward_ref__===De}class F extends Error{constructor(n,t){super(function Rs(e,n){return`NG0${Math.abs(e)}${n?": "+n.trim():""}`}(n,t)),this.code=n}}function se(e){return"string"==typeof e?e:null==e?"":String(e)}function xs(e,n){throw new F(-201,!1)}function Mn(e,n){null==e&&function Ie(e,n,t,i){throw new Error(`ASSERTION ERROR: ${e}`+(null==i?"":` [Expected=> ${t} ${i} ${n} <=Actual]`))}(n,e,null,"!=")}function U(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Me(e){return{providers:e.providers||[],imports:e.imports||[]}}function Lo(e){return Su(e,Vo)||Su(e,Jr)}function Su(e,n){return e.hasOwnProperty(n)?e[n]:null}function Eu(e){return e&&(e.hasOwnProperty($e)||e.hasOwnProperty(Ho))?e[$e]:null}const Vo=Ne({\u0275prov:Ne}),$e=Ne({\u0275inj:Ne}),Jr=Ne({ngInjectableDef:Ne}),Ho=Ne({ngInjectorDef:Ne});var ee=(()=>((ee=ee||{})[ee.Default=0]="Default",ee[ee.Host=1]="Host",ee[ee.Self=2]="Self",ee[ee.SkipSelf=4]="SkipSelf",ee[ee.Optional=8]="Optional",ee))();let Fs;function Hn(e){const n=Fs;return Fs=e,n}function Bo(e,n,t){const i=Lo(e);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:t&ee.Optional?null:void 0!==n?n:void xs(He(e))}function oi(e){return{toString:e}.toString()}var Kn=(()=>((Kn=Kn||{})[Kn.OnPush=0]="OnPush",Kn[Kn.Default=1]="Default",Kn))(),Bn=(()=>{return(e=Bn||(Bn={}))[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",Bn;var e})();const Ue=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),bi={},Se=[],Ps=Ne({\u0275cmp:Ne}),ll=Ne({\u0275dir:Ne}),cl=Ne({\u0275pipe:Ne}),ul=Ne({\u0275mod:Ne}),Di=Ne({\u0275fac:Ne}),jo=Ne({__NG_ELEMENT_ID__:Ne});let Ih=0;function lt(e){return oi(()=>{const t=!0===e.standalone,i={},r={type:e.type,providersResolver:null,decls:e.decls,vars:e.vars,factory:null,template:e.template||null,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:i,inputs:null,outputs:null,exportAs:e.exportAs||null,onPush:e.changeDetection===Kn.OnPush,directiveDefs:null,pipeDefs:null,standalone:t,dependencies:t&&e.dependencies||null,getStandaloneInjector:null,selectors:e.selectors||Se,viewQuery:e.viewQuery||null,features:e.features||null,data:e.data||{},encapsulation:e.encapsulation||Bn.Emulated,id:"c"+Ih++,styles:e.styles||Se,_:null,setInput:null,schemas:e.schemas||null,tView:null},o=e.dependencies,s=e.features;return r.inputs=Ls(e.inputs,i),r.outputs=Ls(e.outputs),s&&s.forEach(a=>a(r)),r.directiveDefs=o?()=>("function"==typeof o?o():o).map(dl).filter(Mu):null,r.pipeDefs=o?()=>("function"==typeof o?o():o).map(en).filter(Mu):null,r})}function dl(e){return Re(e)||Xt(e)}function Mu(e){return null!==e}function ge(e){return oi(()=>({type:e.type,bootstrap:e.bootstrap||Se,declarations:e.declarations||Se,imports:e.imports||Se,exports:e.exports||Se,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Ls(e,n){if(null==e)return bi;const t={};for(const i in e)if(e.hasOwnProperty(i)){let r=e[i],o=r;Array.isArray(r)&&(o=r[1],r=r[0]),t[r]=i,n&&(n[r]=o)}return t}const B=lt;function Tt(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function Re(e){return e[Ps]||null}function Xt(e){return e[ll]||null}function en(e){return e[cl]||null}function hn(e,n){const t=e[ul]||null;if(!t&&!0===n)throw new Error(`Type ${He(e)} does not have '\u0275mod' property.`);return t}function tn(e){return Array.isArray(e)&&"object"==typeof e[1]}function zn(e){return Array.isArray(e)&&!0===e[1]}function hl(e){return 0!=(8&e.flags)}function pn(e){return 2==(2&e.flags)}function si(e){return 1==(1&e.flags)}function $n(e){return null!==e.template}function Ph(e){return 0!=(256&e[2])}function Sr(e,n){return e.hasOwnProperty(Di)?e[Di]:null}class Bh{constructor(n,t,i){this.previousValue=n,this.currentValue=t,this.firstChange=i}isFirstChange(){return this.firstChange}}function Wt(){return Au}function Au(e){return e.type.prototype.ngOnChanges&&(e.setInput=$h),jh}function jh(){const e=_l(this),n=e?.current;if(n){const t=e.previous;if(t===bi)e.previous=n;else for(let i in n)t[i]=n[i];e.current=null,this.ngOnChanges(n)}}function $h(e,n,t,i){const r=_l(e)||function Iu(e,n){return e[ml]=n}(e,{previous:bi,current:null}),o=r.current||(r.current={}),s=r.previous,a=this.declaredInputs[t],l=s[a];o[a]=new Bh(l&&l.currentValue,n,s===bi),e[i]=n}Wt.ngInherit=!0;const ml="__ngSimpleChanges__";function _l(e){return e[ml]||null}function ft(e){for(;Array.isArray(e);)e=e[0];return e}function Gs(e,n){return ft(n[e])}function An(e,n){return ft(n[e.index])}function vl(e,n){return e.data[n]}function ro(e,n){return e[n]}function In(e,n){const t=n[e];return tn(t)?t:t[0]}function Ws(e){return 64==(64&e[2])}function Qi(e,n){return null==n?null:e[n]}function ku(e){e[18]=0}function yl(e,n){e[5]+=n;let t=e,i=e[3];for(;null!==i&&(1===n&&1===t[5]||-1===n&&0===t[5]);)i[5]+=n,t=i,i=i[3]}const oe={lFrame:Hu(null),bindingsEnabled:!0};function Ks(){return oe.bindingsEnabled}function k(){return oe.lFrame.lView}function me(){return oe.lFrame.tView}function nt(e){return oe.lFrame.contextLView=e,e[8]}function ht(e){return oe.lFrame.contextLView=null,e}function yt(){let e=xu();for(;null!==e&&64===e.type;)e=e.parent;return e}function xu(){return oe.lFrame.currentTNode}function ai(e,n){const t=oe.lFrame;t.currentTNode=e,t.isParent=n}function bl(){return oe.lFrame.isParent}function zs(){oe.lFrame.isParent=!1}function rn(){const e=oe.lFrame;let n=e.bindingRootIndex;return-1===n&&(n=e.bindingRootIndex=e.tView.bindingStartIndex),n}function Er(){return oe.lFrame.bindingIndex++}function Ti(e){const n=oe.lFrame,t=n.bindingIndex;return n.bindingIndex=n.bindingIndex+e,t}function x(e,n){const t=oe.lFrame;t.bindingIndex=t.bindingRootIndex=e,Dl(n)}function Dl(e){oe.lFrame.currentDirectiveIndex=e}function Ee(){return oe.lFrame.currentQueryIndex}function oo(e){oe.lFrame.currentQueryIndex=e}function Lu(e){const n=e[1];return 2===n.type?n.declTNode:1===n.type?e[6]:null}function qs(e,n,t){if(t&ee.SkipSelf){let r=n,o=e;for(;!(r=r.parent,null!==r||t&ee.Host||(r=Lu(o),null===r||(o=o[15],10&r.type))););if(null===r)return!1;n=r,e=o}const i=oe.lFrame=Vu();return i.currentTNode=n,i.lView=e,!0}function Cl(e){const n=Vu(),t=e[1];oe.lFrame=n,n.currentTNode=t.firstChild,n.lView=e,n.tView=t,n.contextLView=e,n.bindingIndex=t.bindingStartIndex,n.inI18n=!1}function Vu(){const e=oe.lFrame,n=null===e?null:e.child;return null===n?Hu(e):n}function Hu(e){const n={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=n),n}function Bu(){const e=oe.lFrame;return oe.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const ju=Bu;function Yn(){const e=Bu();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function on(){return oe.lFrame.selectedIndex}function Xi(e){oe.lFrame.selectedIndex=e}function Ze(){const e=oe.lFrame;return vl(e.tView,e.selectedIndex)}function Js(e,n){for(let t=n.directiveStart,i=n.directiveEnd;t=i)break}else n[l]<0&&(e[18]+=65536),(a>11>16&&(3&e[2])===n){e[2]+=2048;try{o.call(a)}finally{}}}else try{o.call(a)}finally{}}class Wo{constructor(n,t,i){this.factory=n,this.resolving=!1,this.canSeeViewProviders=t,this.injectImpl=i}}function Xs(e,n,t){let i=0;for(;in){s=o-1;break}}}for(;o>16}(e),i=n;for(;t>0;)i=i[15],t--;return i}let El=!0;function ta(e){const n=El;return El=e,n}let Ce=0;const c={};function h(e,n){const t=_(e,n);if(-1!==t)return t;const i=n[1];i.firstCreatePass&&(e.injectorIndex=n.length,g(i.data,e),g(n,null),g(i.blueprint,null));const r=b(e,n),o=e.injectorIndex;if(Mr(r)){const s=so(r),a=ao(r,n),l=a[1].data;for(let u=0;u<8;u++)n[o+u]=a[s+u]|l[s+u]}return n[o+8]=r,o}function g(e,n){e.push(0,0,0,0,0,0,0,0,n)}function _(e,n){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===n[e.injectorIndex+8]?-1:e.injectorIndex}function b(e,n){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let t=0,i=null,r=n;for(;null!==r;){if(i=yy(r),null===i)return-1;if(t++,r=r[15],-1!==i.injectorIndex)return i.injectorIndex|t<<16}return-1}function T(e,n,t){!function d(e,n,t){let i;"string"==typeof t?i=t.charCodeAt(0)||0:t.hasOwnProperty(jo)&&(i=t[jo]),null==i&&(i=t[jo]=Ce++);const r=255&i;n.data[e+(r>>5)]|=1<=0?255&n:TT:n}(t);if("function"==typeof o){if(!qs(n,e,i))return i&ee.Host?ue(r,0,i):xe(n,t,i,r);try{const s=o(i);if(null!=s||i&ee.Optional)return s;xs()}finally{ju()}}else if("number"==typeof o){let s=null,a=_(e,n),l=-1,u=i&ee.Host?n[16][6]:null;for((-1===a||i&ee.SkipSelf)&&(l=-1===a?b(e,n):n[a+8],-1!==l&&vy(i,!1)?(s=n[1],a=so(l),n=ao(l,n)):a=-1);-1!==a;){const f=n[1];if(_y(o,a,f.data)){const p=tr(a,n,t,s,i,u);if(p!==c)return p}l=n[a+8],-1!==l&&vy(i,n[1].data[a+8]===u)&&_y(o,a,n)?(s=f,a=so(l),n=ao(l,n)):a=-1}}return r}function tr(e,n,t,i,r,o){const s=n[1],a=s.data[e+8],f=Yu(a,s,t,null==i?pn(a)&&El:i!=s&&0!=(3&a.type),r&ee.Host&&o===a);return null!==f?Ml(n,s,f,a):c}function Yu(e,n,t,i,r){const o=e.providerIndexes,s=n.data,a=1048575&o,l=e.directiveStart,f=o>>20,m=r?a+f:e.directiveEnd;for(let v=i?a:a+f;v=l&&y.type===t)return v}if(r){const v=s[l];if(v&&$n(v)&&v.type===t)return l}return null}function Ml(e,n,t,i){let r=e[t];const o=n.data;if(function ap(e){return e instanceof Wo}(r)){const s=r;s.resolving&&function wh(e,n){const t=n?`. Dependency path: ${n.join(" > ")} > ${e}`:"";throw new F(-200,`Circular dependency in DI detected for ${e}${t}`)}(function Ae(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():se(e)}(o[t]));const a=ta(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?Hn(s.injectImpl):null;qs(e,i,ee.Default);try{r=e[t]=s.factory(void 0,o,e,i),n.firstCreatePass&&t>=i.directiveStart&&function Ni(e,n,t){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:o}=n.type.prototype;if(i){const s=Au(n);(t.preOrderHooks||(t.preOrderHooks=[])).push(e,s),(t.preOrderCheckHooks||(t.preOrderCheckHooks=[])).push(e,s)}r&&(t.preOrderHooks||(t.preOrderHooks=[])).push(0-e,r),o&&((t.preOrderHooks||(t.preOrderHooks=[])).push(e,o),(t.preOrderCheckHooks||(t.preOrderCheckHooks=[])).push(e,o))}(t,o[t],n)}finally{null!==l&&Hn(l),ta(a),s.resolving=!1,ju()}}return r}function _y(e,n,t){return!!(t[n+(e>>5)]&1<{const n=e.prototype.constructor,t=n[Di]||fp(n),i=Object.prototype;let r=Object.getPrototypeOf(e.prototype).constructor;for(;r&&r!==i;){const o=r[Di]||fp(r);if(o&&o!==t)return o;r=Object.getPrototypeOf(r)}return o=>new o})}function fp(e){return br(e)?()=>{const n=fp(te(e));return n&&n()}:Sr(e)}function yy(e){const n=e[1],t=n.type;return 2===t?n.declTNode:1===t?e[6]:null}const ra="__parameters__";function sa(e,n,t){return oi(()=>{const i=function hp(e){return function(...t){if(e){const i=e(...t);for(const r in i)this[r]=i[r]}}}(n);function r(...o){if(this instanceof r)return i.apply(this,o),this;const s=new r(...o);return a.annotation=s,a;function a(l,u,f){const p=l.hasOwnProperty(ra)?l[ra]:Object.defineProperty(l,ra,{value:[]})[ra];for(;p.length<=f;)p.push(null);return(p[f]=p[f]||[]).push(s),l}}return t&&(r.prototype=Object.create(t.prototype)),r.prototype.ngMetadataName=e,r.annotationCls=r,r})}class Y{constructor(n,t){this._desc=n,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof t?this.__NG_ELEMENT_ID__=t:void 0!==t&&(this.\u0275prov=U({token:this,providedIn:t.providedIn||"root",factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function qn(e,n){void 0===n&&(n=e);for(let t=0;tArray.isArray(t)?Nr(t,n):n(t))}function Dy(e,n,t){n>=e.length?e.push(t):e.splice(n,0,t)}function qu(e,n){return n>=e.length-1?e.pop():e.splice(n,1)[0]}function Al(e,n){const t=[];for(let i=0;i=0?e[1|i]=t:(i=~i,function kT(e,n,t,i){let r=e.length;if(r==n)e.push(t,i);else if(1===r)e.push(i,e[0]),e[0]=t;else{for(r--,e.push(e[r-1],e[r]);r>n;)e[r]=e[r-2],r--;e[n]=t,e[n+1]=i}}(e,i,n,t)),i}function gp(e,n){const t=aa(e,n);if(t>=0)return e[1|t]}function aa(e,n){return function Sy(e,n,t){let i=0,r=e.length>>t;for(;r!==i;){const o=i+(r-i>>1),s=e[o<n?r=o:i=o+1}return~(r<((Un=Un||{})[Un.Important=1]="Important",Un[Un.DashCase=2]="DashCase",Un))();const wp=new Map;let aN=0;const Ep="__ngContext__";function mn(e,n){tn(n)?(e[Ep]=n[20],function cN(e){wp.set(e[20],e)}(n)):e[Ep]=n}function Tp(e,n){return undefined(e,n)}function Vl(e){const n=e[3];return zn(n)?n[3]:n}function Np(e){return Ky(e[13])}function Ap(e){return Ky(e[4])}function Ky(e){for(;null!==e&&!zn(e);)e=e[4];return e}function ua(e,n,t,i,r){if(null!=i){let o,s=!1;zn(i)?o=i:tn(i)&&(s=!0,i=i[0]);const a=ft(i);0===e&&null!==t?null==r?Qy(n,t,a):qo(n,t,a,r||null,!0):1===e&&null!==t?qo(n,t,a,r||null,!0):2===e?function Pp(e,n,t){const i=ed(e,n);i&&function ON(e,n,t,i){e.removeChild(n,t,i)}(e,i,n,t)}(n,a,s):3===e&&n.destroyNode(a),null!=o&&function xN(e,n,t,i,r){const o=t[7];o!==ft(t)&&ua(n,e,i,o,r);for(let a=10;a0&&(e[t-1][4]=i[4]);const o=qu(e,10+n);!function wN(e,n){Hl(e,n,n[11],2,null,null),n[0]=null,n[6]=null}(i[1],i);const s=o[19];null!==s&&s.detachView(o[1]),i[3]=null,i[4]=null,i[2]&=-65}return i}function qy(e,n){if(!(128&n[2])){const t=n[11];t.destroyNode&&Hl(e,n,t,3,null,null),function MN(e){let n=e[13];if(!n)return Rp(e[1],e);for(;n;){let t=null;if(tn(n))t=n[13];else{const i=n[10];i&&(t=i)}if(!t){for(;n&&!n[4]&&n!==e;)tn(n)&&Rp(n[1],n),n=n[3];null===n&&(n=e),tn(n)&&Rp(n[1],n),t=n&&n[4]}n=t}}(n)}}function Rp(e,n){if(!(128&n[2])){n[2]&=-65,n[2]|=128,function IN(e,n){let t;if(null!=e&&null!=(t=e.destroyHooks))for(let i=0;i=0?i[r=u]():i[r=-u].unsubscribe(),o+=2}else{const s=i[r=t[o+1]];t[o].call(s)}if(null!==i){for(let o=r+1;o{const s=o;Yp(s,t,[],i)&&(r||(r=[]),r.push(s))}),void 0!==r&&S0(r,t),t}function S0(e,n){for(let t=0;t{n.push(o)})}}function Yp(e,n,t,i){if(!(e=te(e)))return!1;let r=null,o=Eu(e);const s=!o&&Re(e);if(o||s){if(s&&!s.standalone)return!1;r=e}else{const l=e.ngModule;if(o=Eu(l),!o)return!1;r=l}const a=i.has(r);if(s){if(a)return!1;if(i.add(r),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const u of l)Yp(u,n,t,i)}}else{if(!o)return!1;{if(null!=o.imports&&!a){let u;i.add(r);try{Nr(o.imports,f=>{Yp(f,n,t,i)&&(u||(u=[]),u.push(f))})}finally{}void 0!==u&&S0(u,n)}if(!a){const u=Sr(r)||(()=>new r);n.push({provide:r,useFactory:u,deps:Se},{provide:D0,useValue:r,multi:!0},{provide:zp,useValue:()=>L(r),multi:!0})}const l=o.providers;null==l||a||Nr(l,f=>{n.push(f)})}}return r!==e&&void 0!==e.providers}const uA=Ne({provide:String,useValue:Ne});function qp(e){return null!==e&&"object"==typeof e&&uA in e}function Zo(e){return"function"==typeof e}const Jp=new Y("Set Injector scope."),sd={},fA={};let Zp;function ad(){return void 0===Zp&&(Zp=new C0),Zp}class co{}class T0 extends co{constructor(n,t,i,r){super(),this.parent=t,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Xp(n,s=>this.processProvider(s)),this.records.set(b0,da(void 0,this)),r.has("environment")&&this.records.set(co,da(void 0,this));const o=this.records.get(Jp);null!=o&&"string"==typeof o.value&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(D0.multi,Se,ee.Self))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const n of this._ngOnDestroyHooks)n.ngOnDestroy();for(const n of this._onDestroyHooks)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(n){this._onDestroyHooks.push(n)}runInContext(n){this.assertNotDestroyed();const t=la(this),i=Hn(void 0);try{return n()}finally{la(t),Hn(i)}}get(n,t=Il,i=ee.Default){this.assertNotDestroyed();const r=la(this),o=Hn(void 0);try{if(!(i&ee.SkipSelf)){let a=this.records.get(n);if(void 0===a){const l=function _A(e){return"function"==typeof e||"object"==typeof e&&e instanceof Y}(n)&&Lo(n);a=l&&this.injectableDefInScope(l)?da(Qp(n),sd):null,this.records.set(n,a)}if(null!=a)return this.hydrate(n,a)}return(i&ee.Self?ad():this.parent).get(n,t=i&ee.Optional&&t===Il?null:t)}catch(s){if("NullInjectorError"===s.name){if((s[Zu]=s[Zu]||[]).unshift(He(n)),r)throw s;return function GT(e,n,t,i){const r=e[Zu];throw n[Ey]&&r.unshift(n[Ey]),e.message=function WT(e,n,t,i=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let r=He(n);if(Array.isArray(n))r=n.map(He).join(" -> ");else if("object"==typeof n){let o=[];for(let s in n)if(n.hasOwnProperty(s)){let a=n[s];o.push(s+":"+("string"==typeof a?JSON.stringify(a):He(a)))}r=`{${o.join(", ")}}`}return`${t}${i?"("+i+")":""}[${r}]: ${e.replace(BT,"\n ")}`}("\n"+e.message,r,t,i),e.ngTokenPath=r,e[Zu]=null,e}(s,n,"R3InjectorError",this.source)}throw s}finally{Hn(o),la(r)}}resolveInjectorInitializers(){const n=la(this),t=Hn(void 0);try{const i=this.get(zp.multi,Se,ee.Self);for(const r of i)r()}finally{la(n),Hn(t)}}toString(){const n=[],t=this.records;for(const i of t.keys())n.push(He(i));return`R3Injector[${n.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new F(205,!1)}processProvider(n){let t=Zo(n=te(n))?n:te(n&&n.provide);const i=function pA(e){return qp(e)?da(void 0,e.useValue):da(N0(e),sd)}(n);if(Zo(n)||!0!==n.multi)this.records.get(t);else{let r=this.records.get(t);r||(r=da(void 0,sd,!0),r.factory=()=>vp(r.multi),this.records.set(t,r)),t=n,r.multi.push(n)}this.records.set(t,i)}hydrate(n,t){return t.value===sd&&(t.value=fA,t.value=t.factory()),"object"==typeof t.value&&t.value&&function mA(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}injectableDefInScope(n){if(!n.providedIn)return!1;const t=te(n.providedIn);return"string"==typeof t?"any"===t||this.scopes.has(t):this.injectorDefTypes.has(t)}}function Qp(e){const n=Lo(e),t=null!==n?n.factory:Sr(e);if(null!==t)return t;if(e instanceof Y)throw new F(204,!1);if(e instanceof Function)return function hA(e){const n=e.length;if(n>0)throw Al(n,"?"),new F(204,!1);const t=function Th(e){const n=e&&(e[Vo]||e[Jr]);if(n){const t=function Nh(e){if(e.hasOwnProperty("name"))return e.name;const n=(""+e).match(/^function\s*([^\s(]+)/);return null===n?"":n[1]}(e);return console.warn(`DEPRECATED: DI is instantiating a token "${t}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in a future version of Angular. Please add @Injectable() to the "${t}" class.`),n}return null}(e);return null!==t?()=>t.factory(e):()=>new e}(e);throw new F(204,!1)}function N0(e,n,t){let i;if(Zo(e)){const r=te(e);return Sr(r)||Qp(r)}if(qp(e))i=()=>te(e.useValue);else if(function M0(e){return!(!e||!e.useFactory)}(e))i=()=>e.useFactory(...vp(e.deps||[]));else if(function E0(e){return!(!e||!e.useExisting)}(e))i=()=>L(te(e.useExisting));else{const r=te(e&&(e.useClass||e.provide));if(!function gA(e){return!!e.deps}(e))return Sr(r)||Qp(r);i=()=>new r(...vp(e.deps))}return i}function da(e,n,t=!1){return{factory:e,value:n,multi:t?[]:void 0}}function vA(e){return!!e.\u0275providers}function Xp(e,n){for(const t of e)Array.isArray(t)?Xp(t,n):vA(t)?Xp(t.\u0275providers,n):n(t)}class A0{}class DA{resolveComponentFactory(n){throw function bA(e){const n=Error(`No component factory found for ${He(e)}. Did you add it to @NgModule.entryComponents?`);return n.ngComponent=e,n}(n)}}let Ul=(()=>{class e{}return e.NULL=new DA,e})();function CA(){return fa(yt(),k())}function fa(e,n){return new Qe(An(e,n))}let Qe=(()=>{class e{constructor(t){this.nativeElement=t}}return e.__NG_ELEMENT_ID__=CA,e})();function wA(e){return e instanceof Qe?e.nativeElement:e}class eg{}let ui=(()=>{class e{}return e.__NG_ELEMENT_ID__=()=>function SA(){const e=k(),t=In(yt().index,e);return(tn(t)?t:e)[11]}(),e})(),EA=(()=>{class e{}return e.\u0275prov=U({token:e,providedIn:"root",factory:()=>null}),e})();class Gl{constructor(n){this.full=n,this.major=n.split(".")[0],this.minor=n.split(".")[1],this.patch=n.split(".").slice(2).join(".")}}const MA=new Gl("14.3.0"),tg={};function ig(e){return e.ngOriginalError}class ha{constructor(){this._console=console}handleError(n){const t=this._findOriginalError(n);this._console.error("ERROR",n),t&&this._console.error("ORIGINAL ERROR",t)}_findOriginalError(n){let t=n&&ig(n);for(;t&&ig(t);)t=ig(t);return t||null}}function Ir(e){return e instanceof Function?e():e}function k0(e,n,t){let i=e.length;for(;;){const r=e.indexOf(n,t);if(-1===r)return r;if(0===r||e.charCodeAt(r-1)<=32){const o=n.length;if(r+o===i||e.charCodeAt(r+o)<=32)return r}t=r+1}}const R0="ng-template";function LA(e,n,t){let i=0;for(;io?"":r[p+1].toLowerCase();const v=8&i?m:null;if(v&&-1!==k0(v,u,0)||2&i&&u!==m){if(Ii(i))return!1;s=!0}}}}else{if(!s&&!Ii(i)&&!Ii(l))return!1;if(s&&Ii(l))continue;s=!1,i=l|1&i}}return Ii(i)||s}function Ii(e){return 0==(1&e)}function BA(e,n,t,i){if(null===n)return-1;let r=0;if(i||!t){let o=!1;for(;r-1)for(t++;t0?'="'+a+'"':"")+"]"}else 8&i?r+="."+s:4&i&&(r+=" "+s);else""!==r&&!Ii(s)&&(n+=P0(o,r),r=""),i=s,o=o||!Ii(i);t++}return""!==r&&(n+=P0(o,r)),n}const ae={};function P(e){L0(me(),k(),on()+e,!1)}function L0(e,n,t,i){if(!i)if(3==(3&n[2])){const o=e.preOrderCheckHooks;null!==o&&Zs(n,o,t)}else{const o=e.preOrderHooks;null!==o&&Qs(n,o,0,t)}Xi(t)}function j0(e,n=null,t=null,i){const r=$0(e,n,t,i);return r.resolveInjectorInitializers(),r}function $0(e,n=null,t=null,i,r=new Set){const o=[t||Se,cA(e)];return i=i||("object"==typeof e?void 0:He(e)),new T0(o,n||ad(),i||null,r)}let _n=(()=>{class e{static create(t,i){if(Array.isArray(t))return j0({name:""},i,t,"");{const r=t.name??"";return j0({name:r},t.parent,t.providers,r)}}}return e.THROW_IF_NOT_FOUND=Il,e.NULL=new C0,e.\u0275prov=U({token:e,providedIn:"any",factory:()=>L(b0)}),e.__NG_ELEMENT_ID__=-1,e})();function C(e,n=ee.Default){const t=k();return null===t?L(e,n):Kt(yt(),t,te(e),n)}function lg(){throw new Error("invalid")}function cd(e,n){return e<<17|n<<2}function Oi(e){return e>>17&32767}function cg(e){return 2|e}function Or(e){return(131068&e)>>2}function ug(e,n){return-131069&e|n<<2}function dg(e){return 1|e}function ob(e,n){const t=e.contentQueries;if(null!==t)for(let i=0;i22&&L0(e,n,22,!1),t(i,r)}finally{Xi(o)}}function Dg(e,n,t){!Ks()||(function kI(e,n,t,i){const r=t.directiveStart,o=t.directiveEnd;e.firstCreatePass||h(t,n),mn(i,n);const s=t.initialInputs;for(let a=r;a0;){const t=e[--n];if("number"==typeof t&&t<0)return t}return 0})(a)!=l&&a.push(l),a.push(i,r,s)}}function pb(e,n){null!==e.hostBindings&&e.hostBindings(1,n)}function gb(e,n){n.flags|=2,(e.components||(e.components=[])).push(n.index)}function PI(e,n,t){if(t){if(n.exportAs)for(let i=0;i0&&Mg(t)}}function Mg(e){for(let i=Np(e);null!==i;i=Ap(i))for(let r=10;r0&&Mg(o)}const t=e[1].components;if(null!==t)for(let i=0;i0&&Mg(r)}}function UI(e,n){const t=In(n,e),i=t[1];(function GI(e,n){for(let t=n.length;t-1&&(kp(n,i),qu(t,i))}this._attachedToViewContainer=!1}qy(this._lView[1],this._lView)}onDestroy(n){cb(this._lView[1],this._lView,null,n)}markForCheck(){Tg(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-65}reattach(){this._lView[2]|=64}detectChanges(){gd(this._lView[1],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new F(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function EN(e,n){Hl(e,n,n[11],2,null,null)}(this._lView[1],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new F(902,!1);this._appRef=n}}class WI extends Wl{constructor(n){super(n),this._view=n}detectChanges(){const n=this._view;gd(n[1],n,n[8],!1)}checkNoChanges(){}get context(){return null}}class Ig extends Ul{constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){const t=Re(n);return new Kl(t,this.ngModule)}}function wb(e){const n=[];for(let t in e)e.hasOwnProperty(t)&&n.push({propName:e[t],templateName:t});return n}class zI{constructor(n,t){this.injector=n,this.parentInjector=t}get(n,t,i){const r=this.injector.get(n,tg,i);return r!==tg||t===tg?r:this.parentInjector.get(n,t,i)}}class Kl extends A0{constructor(n,t){super(),this.componentDef=n,this.ngModule=t,this.componentType=n.type,this.selector=function KA(e){return e.map(WA).join(",")}(n.selectors),this.ngContentSelectors=n.ngContentSelectors?n.ngContentSelectors:[],this.isBoundToModule=!!t}get inputs(){return wb(this.componentDef.inputs)}get outputs(){return wb(this.componentDef.outputs)}create(n,t,i,r){let o=(r=r||this.ngModule)instanceof co?r:r?.injector;o&&null!==this.componentDef.getStandaloneInjector&&(o=this.componentDef.getStandaloneInjector(o)||o);const s=o?new zI(n,o):n,a=s.get(eg,null);if(null===a)throw new F(407,!1);const l=s.get(EA,null),u=a.createRenderer(null,this.componentDef),f=this.componentDef.selectors[0][0]||"div",p=i?function MI(e,n,t){return e.selectRootElement(n,t===Bn.ShadowDom)}(u,i,this.componentDef.encapsulation):Op(u,f,function KI(e){const n=e.toLowerCase();return"svg"===n?"svg":"math"===n?"math":null}(f)),m=this.componentDef.onPush?288:272,v=wg(0,null,null,1,0,null,null,null,null,null),y=fd(null,v,null,m,null,null,a,u,l,s,null);let D,w;Cl(y);try{const S=function JI(e,n,t,i,r,o){const s=t[1];t[22]=e;const l=ma(s,22,2,"#host",null),u=l.mergedAttrs=n.hostAttrs;null!==u&&(md(l,u,!0),null!==e&&(Xs(r,e,u),null!==l.classes&&Vp(r,e,l.classes),null!==l.styles&&a0(r,e,l.styles)));const f=i.createRenderer(e,n),p=fd(t,lb(n),null,n.onPush?32:16,t[22],l,i,f,o||null,null,null);return s.firstCreatePass&&(T(h(l,t),s,n.type),gb(s,l),mb(l,t.length,1)),pd(t,p),t[22]=p}(p,this.componentDef,y,a,u);if(p)if(i)Xs(u,p,["ng-version",MA.full]);else{const{attrs:O,classes:E}=function zA(e){const n=[],t=[];let i=1,r=2;for(;i0&&Vp(u,p,E.join(" "))}if(w=vl(v,22),void 0!==t){const O=w.projection=[];for(let E=0;E=0;i--){const r=e[i];r.hostVars=n+=r.hostVars,r.hostAttrs=ea(r.hostAttrs,t=ea(t,r.hostAttrs))}}(i)}function Og(e){return e===bi?{}:e===Se?[]:e}function eO(e,n){const t=e.viewQuery;e.viewQuery=t?(i,r)=>{n(i,r),t(i,r)}:n}function tO(e,n){const t=e.contentQueries;e.contentQueries=t?(i,r,o)=>{n(i,r,o),t(i,r,o)}:n}function nO(e,n){const t=e.hostBindings;e.hostBindings=t?(i,r)=>{n(i,r),t(i,r)}:n}let vd=null;function Qo(){if(!vd){const e=Ue.Symbol;if(e&&e.iterator)vd=e.iterator;else{const n=Object.getOwnPropertyNames(Map.prototype);for(let t=0;ta(ft(R[i.index])):i.index;let A=null;if(!a&&l&&(A=function pO(e,n,t,i){const r=e.cleanup;if(null!=r)for(let o=0;ol?a[l]:null}"string"==typeof s&&(o+=2)}return null}(e,n,r,i.index)),null!==A)(A.__ngLastListenerFn__||A).__ngNextListenerFn__=o,A.__ngLastListenerFn__=o,v=!1;else{o=Hb(i,n,p,o,!1);const R=t.listen(S,r,o);m.push(o,R),f&&f.push(r,E,O,O+1)}}else o=Hb(i,n,p,o,!1);const y=i.outputs;let D;if(v&&null!==y&&(D=y[r])){const w=D.length;if(w)for(let S=0;S0;)n=n[15],e--;return n}(e,oe.lFrame.contextLView))[8]}(e)}function gO(e,n){let t=null;const i=function jA(e){const n=e.attrs;if(null!=n){const t=n.indexOf(5);if(0==(1&t))return n[t+1]}return null}(e);for(let r=0;r=0}const Lt={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function qb(e){return e.substring(Lt.key,Lt.keyEnd)}function Jb(e,n){const t=Lt.textEnd;return t===n?-1:(n=Lt.keyEnd=function CO(e,n,t){for(;n32;)n++;return n}(e,Lt.key=n,t),Ta(e,n,t))}function Ta(e,n,t){for(;n=0;t=Jb(n,t))Jn(e,qb(n),!0)}function tD(e,n){return n>=e.expandoStartIndex}function nD(e,n,t,i){const r=e.data;if(null===r[t+1]){const o=r[on()],s=tD(e,t);sD(o,i)&&null===n&&!s&&(n=!1),n=function MO(e,n,t,i){const r=function Ys(e){const n=oe.lFrame.currentDirectiveIndex;return-1===n?null:e[n]}(e);let o=i?n.residualClasses:n.residualStyles;if(null===r)0===(i?n.classBindings:n.styleBindings)&&(t=Jl(t=jg(null,e,n,t,i),n.attrs,i),o=null);else{const s=n.directiveStylingLast;if(-1===s||e[s]!==r)if(t=jg(r,e,n,t,i),null===o){let l=function TO(e,n,t){const i=t?n.classBindings:n.styleBindings;if(0!==Or(i))return e[Oi(i)]}(e,n,i);void 0!==l&&Array.isArray(l)&&(l=jg(null,e,n,l[1],i),l=Jl(l,n.attrs,i),function NO(e,n,t,i){e[Oi(t?n.classBindings:n.styleBindings)]=i}(e,n,i,l))}else o=function AO(e,n,t){let i;const r=n.directiveEnd;for(let o=1+n.directiveStylingLast;o0)&&(u=!0)}else f=t;if(r)if(0!==l){const m=Oi(e[a+1]);e[i+1]=cd(m,a),0!==m&&(e[m+1]=ug(e[m+1],i)),e[a+1]=function fI(e,n){return 131071&e|n<<17}(e[a+1],i)}else e[i+1]=cd(a,0),0!==a&&(e[a+1]=ug(e[a+1],i)),a=i;else e[i+1]=cd(l,0),0===a?a=i:e[l+1]=ug(e[l+1],i),l=i;u&&(e[i+1]=cg(e[i+1])),Yb(e,f,i,!0),Yb(e,f,i,!1),function _O(e,n,t,i,r){const o=r?e.residualClasses:e.residualStyles;null!=o&&"string"==typeof n&&aa(o,n)>=0&&(t[i+1]=dg(t[i+1]))}(n,f,e,i,o),s=cd(a,l),o?n.classBindings=s:n.styleBindings=s}(r,o,n,t,s,i)}}function jg(e,n,t,i,r){let o=null;const s=t.directiveEnd;let a=t.directiveStylingLast;for(-1===a?a=t.directiveStart:a++;a0;){const l=e[r],u=Array.isArray(l),f=u?l[1]:l,p=null===f;let m=t[r+1];m===ae&&(m=p?Se:void 0);let v=p?gp(m,i):f===i?m:void 0;if(u&&!Dd(v)&&(v=gp(l,i)),Dd(v)&&(a=v,s))return a;const y=e[r+1];r=s?Oi(y):Or(y)}if(null!==n){let l=o?n.residualClasses:n.residualStyles;null!=l&&(a=gp(l,i))}return a}function Dd(e){return void 0!==e}function sD(e,n){return 0!=(e.flags&(n?16:32))}function I(e,n=""){const t=k(),i=me(),r=e+22,o=i.firstCreatePass?ma(i,r,1,n,null):i.data[r],s=t[r]=function Ip(e,n){return e.createText(n)}(t[11],n);td(i,t,s,o),ai(o,!1)}function Rr(e){return Be("",e,""),Rr}function Be(e,n,t){const i=k(),r=function ya(e,n,t,i){return vn(e,Er(),t)?n+se(t)+i:ae}(i,e,n,t);return r!==ae&&function kr(e,n,t){const i=Gs(n,e);!function zy(e,n,t){e.setValue(n,t)}(e[11],i,t)}(i,on(),r),Be}const ts=void 0;var QO=["en",[["a","p"],["AM","PM"],ts],[["AM","PM"],ts,ts],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],ts,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],ts,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",ts,"{1} 'at' {0}",ts],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function ZO(e){const t=Math.floor(Math.abs(e)),i=e.toString().replace(/^[^.]*\.?/,"").length;return 1===t&&0===i?1:5}];let Aa={};function kn(e){const n=function XO(e){return e.toLowerCase().replace(/_/g,"-")}(e);let t=MD(n);if(t)return t;const i=n.split("-")[0];if(t=MD(i),t)return t;if("en"===i)return QO;throw new F(701,!1)}function MD(e){return e in Aa||(Aa[e]=Ue.ng&&Ue.ng.common&&Ue.ng.common.locales&&Ue.ng.common.locales[e]),Aa[e]}var j=(()=>((j=j||{})[j.LocaleId=0]="LocaleId",j[j.DayPeriodsFormat=1]="DayPeriodsFormat",j[j.DayPeriodsStandalone=2]="DayPeriodsStandalone",j[j.DaysFormat=3]="DaysFormat",j[j.DaysStandalone=4]="DaysStandalone",j[j.MonthsFormat=5]="MonthsFormat",j[j.MonthsStandalone=6]="MonthsStandalone",j[j.Eras=7]="Eras",j[j.FirstDayOfWeek=8]="FirstDayOfWeek",j[j.WeekendRange=9]="WeekendRange",j[j.DateFormat=10]="DateFormat",j[j.TimeFormat=11]="TimeFormat",j[j.DateTimeFormat=12]="DateTimeFormat",j[j.NumberSymbols=13]="NumberSymbols",j[j.NumberFormats=14]="NumberFormats",j[j.CurrencyCode=15]="CurrencyCode",j[j.CurrencySymbol=16]="CurrencySymbol",j[j.CurrencyName=17]="CurrencyName",j[j.Currencies=18]="Currencies",j[j.Directionality=19]="Directionality",j[j.PluralCase=20]="PluralCase",j[j.ExtraData=21]="ExtraData",j))();const Ia="en-US";let TD=Ia;function Wg(e,n,t,i,r){if(e=te(e),Array.isArray(e))for(let o=0;o>20;if(Zo(e)||!e.multi){const v=new Wo(l,r,C),y=zg(a,n,r?f:f+m,p);-1===y?(T(h(u,s),o,a),Kg(o,e,n.length),n.push(a),u.directiveStart++,u.directiveEnd++,r&&(u.providerIndexes+=1048576),t.push(v),s.push(v)):(t[y]=v,s[y]=v)}else{const v=zg(a,n,f+m,p),y=zg(a,n,f,f+m),D=v>=0&&t[v],w=y>=0&&t[y];if(r&&!w||!r&&!D){T(h(u,s),o,a);const S=function Yk(e,n,t,i,r){const o=new Wo(e,t,C);return o.multi=[],o.index=n,o.componentProviders=0,QD(o,r,i&&!t),o}(r?zk:Kk,t.length,r,i,l);!r&&w&&(t[y].providerFactory=S),Kg(o,e,n.length,0),n.push(a),u.directiveStart++,u.directiveEnd++,r&&(u.providerIndexes+=1048576),t.push(S),s.push(S)}else Kg(o,e,v>-1?v:y,QD(t[r?y:v],l,!r&&i));!r&&i&&w&&t[y].componentProviders++}}}function Kg(e,n,t,i){const r=Zo(n),o=function dA(e){return!!e.useClass}(n);if(r||o){const l=(o?te(n.useClass):n).prototype.ngOnDestroy;if(l){const u=e.destroyHooks||(e.destroyHooks=[]);if(!r&&n.multi){const f=u.indexOf(t);-1===f?u.push(t,[i,l]):u[f+1].push(i,l)}else u.push(t,l)}}}function QD(e,n,t){return t&&e.componentProviders++,e.multi.push(n)-1}function zg(e,n,t,i){for(let r=t;r{t.providersResolver=(i,r)=>function Wk(e,n,t){const i=me();if(i.firstCreatePass){const r=$n(e);Wg(t,i.data,i.blueprint,r,!0),Wg(n,i.data,i.blueprint,r,!1)}}(i,r?r(e):e,n)}}class ns{}class XD{}class e1 extends ns{constructor(n,t){super(),this._parent=t,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new Ig(this);const i=hn(n);this._bootstrapComponents=Ir(i.bootstrap),this._r3Injector=$0(n,t,[{provide:ns,useValue:this},{provide:Ul,useValue:this.componentFactoryResolver}],He(n),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(n)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class qg extends XD{constructor(n){super(),this.moduleType=n}create(n){return new e1(this.moduleType,n)}}class Jk extends ns{constructor(n,t,i){super(),this.componentFactoryResolver=new Ig(this),this.instance=null;const r=new T0([...n,{provide:ns,useValue:this},{provide:Ul,useValue:this.componentFactoryResolver}],t||ad(),i,new Set(["environment"]));this.injector=r,r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function Md(e,n,t=null){return new Jk(e,n,t).injector}let Zk=(()=>{class e{constructor(t){this._injector=t,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(t){if(!t.standalone)return null;if(!this.cachedInjectors.has(t.id)){const i=w0(0,t.type),r=i.length>0?Md([i],this._injector,`Standalone[${t.type.name}]`):null;this.cachedInjectors.set(t.id,r)}return this.cachedInjectors.get(t.id)}ngOnDestroy(){try{for(const t of this.cachedInjectors.values())null!==t&&t.destroy()}finally{this.cachedInjectors.clear()}}}return e.\u0275prov=U({token:e,providedIn:"environment",factory:()=>new e(L(co))}),e})();function t1(e){e.getStandaloneInjector=n=>n.get(Zk).getOrCreateStandaloneInjector(e)}function Nd(e,n,t,i,r,o){return function d1(e,n,t,i,r,o,s,a){const l=n+t;return function yd(e,n,t,i,r){const o=Xo(e,n,t,i);return vn(e,n+2,r)||o}(e,l,r,o,s)?ir(e,l+3,a?i.call(a,r,o,s):i(r,o,s)):ic(e,l+3)}(k(),rn(),e,n,t,i,r,o)}function ic(e,n){const t=e[n];return t===ae?void 0:t}function Ad(e,n){const t=me();let i;const r=e+22;t.firstCreatePass?(i=function fR(e,n){if(n)for(let t=n.length-1;t>=0;t--){const i=n[t];if(e===i.name)return i}}(n,t.pipeRegistry),t.data[r]=i,i.onDestroy&&(t.destroyHooks||(t.destroyHooks=[])).push(r,i.onDestroy)):i=t.data[r];const o=i.factory||(i.factory=Sr(i.type)),s=Hn(C);try{const a=ta(!1),l=o();return ta(a),function dO(e,n,t,i){t>=e.data.length&&(e.data[t]=null,e.blueprint[t]=null),n[t]=i}(t,k(),r,l),l}finally{Hn(s)}}function Id(e,n,t,i){const r=e+22,o=k(),s=ro(o,r);return function rc(e,n){return e[1].data[n].pure}(o,r)?function u1(e,n,t,i,r,o,s){const a=n+t;return Xo(e,a,r,o)?ir(e,a+2,s?i.call(s,r,o):i(r,o)):ic(e,a+2)}(o,rn(),n,s.transform,t,i,s):s.transform(t,i)}function Zg(e){return n=>{setTimeout(e,void 0,n)}}const de=class _R extends je{constructor(n=!1){super(),this.__isAsync=n}emit(n){super.next(n)}subscribe(n,t,i){let r=n,o=t||(()=>null),s=i;if(n&&"object"==typeof n){const l=n;r=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=Zg(o),r&&(r=Zg(r)),s&&(s=Zg(s)));const a=super.subscribe({next:r,error:o,complete:s});return n instanceof _t&&n.add(a),a}};function vR(){return this._results[Qo()]()}class Qg{constructor(n=!1){this._emitDistinctChangesOnly=n,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const t=Qo(),i=Qg.prototype;i[t]||(i[t]=vR)}get changes(){return this._changes||(this._changes=new de)}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,t){return this._results.reduce(n,t)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,t){const i=this;i.dirty=!1;const r=qn(n);(this._changesDetected=!function IT(e,n,t){if(e.length!==n.length)return!1;for(let i=0;i{class e{}return e.__NG_ELEMENT_ID__=DR,e})();const yR=gt,bR=class extends yR{constructor(n,t,i){super(),this._declarationLView=n,this._declarationTContainer=t,this.elementRef=i}createEmbeddedView(n,t){const i=this._declarationTContainer.tViews,r=fd(this._declarationLView,i,n,16,null,i.declTNode,null,null,null,null,t||null);r[17]=this._declarationLView[this._declarationTContainer.index];const s=this._declarationLView[19];return null!==s&&(r[19]=s.createEmbeddedView(i)),bg(i,r,n),new Wl(r)}};function DR(){return Od(yt(),k())}function Od(e,n){return 4&e.type?new bR(n,e,fa(e,n)):null}let Pi=(()=>{class e{}return e.__NG_ELEMENT_ID__=CR,e})();function CR(){return m1(yt(),k())}const wR=Pi,p1=class extends wR{constructor(n,t,i){super(),this._lContainer=n,this._hostTNode=t,this._hostLView=i}get element(){return fa(this._hostTNode,this._hostLView)}get injector(){return new na(this._hostTNode,this._hostLView)}get parentInjector(){const n=b(this._hostTNode,this._hostLView);if(Mr(n)){const t=ao(n,this._hostLView),i=so(n);return new na(t[1].data[i+8],t)}return new na(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const t=g1(this._lContainer);return null!==t&&t[n]||null}get length(){return this._lContainer.length-10}createEmbeddedView(n,t,i){let r,o;"number"==typeof i?r=i:null!=i&&(r=i.index,o=i.injector);const s=n.createEmbeddedView(t||{},o);return this.insert(s,r),s}createComponent(n,t,i,r,o){const s=n&&!function Nl(e){return"function"==typeof e}(n);let a;if(s)a=t;else{const p=t||{};a=p.index,i=p.injector,r=p.projectableNodes,o=p.environmentInjector||p.ngModuleRef}const l=s?n:new Kl(Re(n)),u=i||this.parentInjector;if(!o&&null==l.ngModule){const m=(s?u:this.parentInjector).get(co,null);m&&(o=m)}const f=l.create(u,r,void 0,o);return this.insert(f.hostView,a),f}insert(n,t){const i=n._lView,r=i[1];if(function Kh(e){return zn(e[3])}(i)){const f=this.indexOf(n);if(-1!==f)this.detach(f);else{const p=i[3],m=new p1(p,p[6],p[3]);m.detach(m.indexOf(n))}}const o=this._adjustIndex(t),s=this._lContainer;!function TN(e,n,t,i){const r=10+i,o=t.length;i>0&&(t[r-1][4]=n),i0)i.push(s[a/2]);else{const u=o[a+1],f=n[-l];for(let p=10;p{class e{constructor(t){this.appInits=t,this.resolve=xd,this.reject=xd,this.initialized=!1,this.done=!1,this.donePromise=new Promise((i,r)=>{this.resolve=i,this.reject=r})}runInitializers(){if(this.initialized)return;const t=[],i=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let r=0;r{o.subscribe({complete:a,error:l})});t.push(s)}}Promise.all(t).then(()=>{i()}).catch(r=>{this.reject(r)}),0===t.length&&i(),this.initialized=!0}}return e.\u0275fac=function(t){return new(t||e)(L(Fd,8))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const sc=new Y("AppId",{providedIn:"root",factory:function B1(){return`${cm()}${cm()}${cm()}`}});function cm(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const j1=new Y("Platform Initializer"),ac=new Y("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),$1=new Y("appBootstrapListener");let ZR=(()=>{class e{log(t){console.log(t)}warn(t){console.warn(t)}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();const xr=new Y("LocaleId",{providedIn:"root",factory:()=>bt(xr,ee.Optional|ee.SkipSelf)||function QR(){return typeof $localize<"u"&&$localize.locale||Ia}()});class ex{constructor(n,t){this.ngModuleFactory=n,this.componentFactories=t}}let um=(()=>{class e{compileModuleSync(t){return new qg(t)}compileModuleAsync(t){return Promise.resolve(this.compileModuleSync(t))}compileModuleAndAllComponentsSync(t){const i=this.compileModuleSync(t),o=Ir(hn(t).declarations).reduce((s,a)=>{const l=Re(a);return l&&s.push(new Kl(l)),s},[]);return new ex(i,o)}compileModuleAndAllComponentsAsync(t){return Promise.resolve(this.compileModuleAndAllComponentsSync(t))}clearCache(){}clearCacheFor(t){}getModuleId(t){}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const ix=(()=>Promise.resolve(0))();function dm(e){typeof Zone>"u"?ix.then(()=>{e&&e.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",e)}class Ye{constructor({enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:t=!1,shouldCoalesceRunChangeDetection:i=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new de(!1),this.onMicrotaskEmpty=new de(!1),this.onStable=new de(!1),this.onError=new de(!1),typeof Zone>"u")throw new F(908,!1);Zone.assertZonePatched();const r=this;if(r._nesting=0,r._outer=r._inner=Zone.current,Zone.AsyncStackTaggingZoneSpec){const o=Zone.AsyncStackTaggingZoneSpec;r._inner=r._inner.fork(new o("Angular"))}Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!i&&t,r.shouldCoalesceRunChangeDetection=i,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=function rx(){let e=Ue.requestAnimationFrame,n=Ue.cancelAnimationFrame;if(typeof Zone<"u"&&e&&n){const t=e[Zone.__symbol__("OriginalDelegate")];t&&(e=t);const i=n[Zone.__symbol__("OriginalDelegate")];i&&(n=i)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:n}}().nativeRequestAnimationFrame,function ax(e){const n=()=>{!function sx(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(Ue,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,hm(e),e.isCheckStableRunning=!0,fm(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),hm(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(t,i,r,o,s,a)=>{try{return W1(e),t.invokeTask(r,o,s,a)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===o.type||e.shouldCoalesceRunChangeDetection)&&n(),K1(e)}},onInvoke:(t,i,r,o,s,a,l)=>{try{return W1(e),t.invoke(r,o,s,a,l)}finally{e.shouldCoalesceRunChangeDetection&&n(),K1(e)}},onHasTask:(t,i,r,o)=>{t.hasTask(r,o),i===r&&("microTask"==o.change?(e._hasPendingMicrotasks=o.microTask,hm(e),fm(e)):"macroTask"==o.change&&(e.hasPendingMacrotasks=o.macroTask))},onHandleError:(t,i,r,o)=>(t.handleError(r,o),e.runOutsideAngular(()=>e.onError.emit(o)),!1)})}(r)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Ye.isInAngularZone())throw new F(909,!1)}static assertNotInAngularZone(){if(Ye.isInAngularZone())throw new F(909,!1)}run(n,t,i){return this._inner.run(n,t,i)}runTask(n,t,i,r){const o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,n,ox,xd,xd);try{return o.runTask(s,t,i)}finally{o.cancelTask(s)}}runGuarded(n,t,i){return this._inner.runGuarded(n,t,i)}runOutsideAngular(n){return this._outer.run(n)}}const ox={};function fm(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function hm(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function W1(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function K1(e){e._nesting--,fm(e)}class lx{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new de,this.onMicrotaskEmpty=new de,this.onStable=new de,this.onError=new de}run(n,t,i){return n.apply(t,i)}runGuarded(n,t,i){return n.apply(t,i)}runOutsideAngular(n){return n()}runTask(n,t,i,r){return n.apply(t,i)}}const z1=new Y(""),Ld=new Y("");let mm,pm=(()=>{class e{constructor(t,i,r){this._ngZone=t,this.registry=i,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,mm||(function cx(e){mm=e}(r),r.addToWindow(i)),this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Ye.assertNotInAngularZone(),dm(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())dm(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb(this._didWork)}this._didWork=!1});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(t)||(clearTimeout(i.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,i,r){let o=-1;i&&i>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),t(this._didWork,this.getPendingTasks())},i)),this._callbacks.push({doneCb:t,timeoutId:o,updateCb:r})}whenStable(t,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(t,i,r),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(t){this.registry.registerApplication(t,this)}unregisterApplication(t){this.registry.unregisterApplication(t)}findProviders(t,i,r){return[]}}return e.\u0275fac=function(t){return new(t||e)(L(Ye),L(gm),L(Ld))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})(),gm=(()=>{class e{constructor(){this._applications=new Map}registerApplication(t,i){this._applications.set(t,i)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,i=!0){return mm?.findTestabilityInTree(this,t,i)??null}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})(),po=null;const Y1=new Y("AllowMultipleToken"),_m=new Y("PlatformDestroyListeners");class q1{constructor(n,t){this.name=n,this.token=t}}function Z1(e,n,t=[]){const i=`Platform: ${n}`,r=new Y(i);return(o=[])=>{let s=vm();if(!s||s.injector.get(Y1,!1)){const a=[...t,...o,{provide:r,useValue:!0}];e?e(a):function fx(e){if(po&&!po.get(Y1,!1))throw new F(400,!1);po=e;const n=e.get(X1);(function J1(e){const n=e.get(j1,null);n&&n.forEach(t=>t())})(e)}(function Q1(e=[],n){return _n.create({name:n,providers:[{provide:Jp,useValue:"platform"},{provide:_m,useValue:new Set([()=>po=null])},...e]})}(a,i))}return function px(e){const n=vm();if(!n)throw new F(401,!1);return n}()}}function vm(){return po?.get(X1)??null}let X1=(()=>{class e{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,i){const r=function tC(e,n){let t;return t="noop"===e?new lx:("zone.js"===e?void 0:e)||new Ye(n),t}(i?.ngZone,function eC(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!e||!e.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!e||!e.ngZoneRunCoalescing)||!1}}(i)),o=[{provide:Ye,useValue:r}];return r.run(()=>{const s=_n.create({providers:o,parent:this.injector,name:t.moduleType.name}),a=t.create(s),l=a.injector.get(ha,null);if(!l)throw new F(402,!1);return r.runOutsideAngular(()=>{const u=r.onError.subscribe({next:f=>{l.handleError(f)}});a.onDestroy(()=>{Vd(this._modules,a),u.unsubscribe()})}),function nC(e,n,t){try{const i=t();return ql(i)?i.catch(r=>{throw n.runOutsideAngular(()=>e.handleError(r)),r}):i}catch(i){throw n.runOutsideAngular(()=>e.handleError(i)),i}}(l,r,()=>{const u=a.injector.get(Pd);return u.runInitializers(),u.donePromise.then(()=>(function ND(e){Mn(e,"Expected localeId to be defined"),"string"==typeof e&&(TD=e.toLowerCase().replace(/_/g,"-"))}(a.injector.get(xr,Ia)||Ia),this._moduleDoBootstrap(a),a))})})}bootstrapModule(t,i=[]){const r=iC({},i);return function ux(e,n,t){const i=new qg(t);return Promise.resolve(i)}(0,0,t).then(o=>this.bootstrapModuleFactory(o,r))}_moduleDoBootstrap(t){const i=t.injector.get(lc);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(r=>i.bootstrap(r));else{if(!t.instance.ngDoBootstrap)throw new F(403,!1);t.instance.ngDoBootstrap(i)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new F(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const t=this._injector.get(_m,null);t&&(t.forEach(i=>i()),t.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return e.\u0275fac=function(t){return new(t||e)(L(_n))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();function iC(e,n){return Array.isArray(n)?n.reduce(iC,e):{...e,...n}}let lc=(()=>{class e{constructor(t,i,r){this._zone=t,this._injector=i,this._exceptionHandler=r,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const o=new Ve(a=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{a.next(this._stable),a.complete()})}),s=new Ve(a=>{let l;this._zone.runOutsideAngular(()=>{l=this._zone.onStable.subscribe(()=>{Ye.assertNotInAngularZone(),dm(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,a.next(!0))})})});const u=this._zone.onUnstable.subscribe(()=>{Ye.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{a.next(!1)}))});return()=>{l.unsubscribe(),u.unsubscribe()}});this.isStable=function Dh(...e){const n=Fo(e),t=function mu(e,n){return"number"==typeof tt(e)?e.pop():n}(e,1/0),i=e;return i.length?1===i.length?Et(i[0]):fn(t)(dt(i,n)):Ft}(o,s.pipe(function Ch(e={}){const{connector:n=(()=>new je),resetOnError:t=!0,resetOnComplete:i=!0,resetOnRefCountZero:r=!0}=e;return o=>{let s,a,l,u=0,f=!1,p=!1;const m=()=>{a?.unsubscribe(),a=void 0},v=()=>{m(),s=l=void 0,f=p=!1},y=()=>{const D=s;v(),D?.unsubscribe()};return qe((D,w)=>{u++,!p&&!f&&m();const S=l=l??n();w.add(()=>{u--,0===u&&!p&&!f&&(a=Os(y,r))}),S.subscribe(w),!s&&u>0&&(s=new mr({next:O=>S.next(O),error:O=>{p=!0,m(),a=Os(v,t,O),S.error(O)},complete:()=>{f=!0,m(),a=Os(v,i),S.complete()}}),Et(D).subscribe(s))})(o)}}()))}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(t,i){const r=t instanceof A0;if(!this._injector.get(Pd).done)throw!r&&function Zr(e){const n=Re(e)||Xt(e)||en(e);return null!==n&&n.standalone}(t),new F(405,false);let s;s=r?t:this._injector.get(Ul).resolveComponentFactory(t),this.componentTypes.push(s.componentType);const a=function dx(e){return e.isBoundToModule}(s)?void 0:this._injector.get(ns),u=s.create(_n.NULL,[],i||s.selector,a),f=u.location.nativeElement,p=u.injector.get(z1,null);return p?.registerApplication(f),u.onDestroy(()=>{this.detachView(u.hostView),Vd(this.components,u),p?.unregisterApplication(f)}),this._loadComponent(u),u}tick(){if(this._runningTick)throw new F(101,!1);try{this._runningTick=!0;for(let t of this._views)t.detectChanges()}catch(t){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(t))}finally{this._runningTick=!1}}attachView(t){const i=t;this._views.push(i),i.attachToAppRef(this)}detachView(t){const i=t;Vd(this._views,i),i.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get($1,[]).concat(this._bootstrapListeners).forEach(r=>r(t))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(t=>t()),this._views.slice().forEach(t=>t.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(t){return this._destroyListeners.push(t),()=>Vd(this._destroyListeners,t)}destroy(){if(this._destroyed)throw new F(406,!1);const t=this._injector;t.destroy&&!t.destroyed&&t.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return e.\u0275fac=function(t){return new(t||e)(L(Ye),L(co),L(ha))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();function Vd(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)}let Pr=(()=>{class e{}return e.__NG_ELEMENT_ID__=_x,e})();function _x(e){return function vx(e,n,t){if(pn(e)&&!t){const i=In(e.index,n);return new Wl(i,i)}return 47&e.type?new Wl(n[16],n):null}(yt(),k(),16==(16&e))}class uC{constructor(){}supports(n){return zl(n)}create(n){return new Sx(n)}}const wx=(e,n)=>n;class Sx{constructor(n){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=n||wx}forEachItem(n){let t;for(t=this._itHead;null!==t;t=t._next)n(t)}forEachOperation(n){let t=this._itHead,i=this._removalsHead,r=0,o=null;for(;t||i;){const s=!i||t&&t.currentIndex{s=this._trackByFn(r,a),null!==t&&Object.is(t.trackById,s)?(i&&(t=this._verifyReinsertion(t,a,s,r)),Object.is(t.item,a)||this._addIdentityChange(t,a)):(t=this._mismatch(t,a,s,r),i=!0),t=t._next,r++}),this.length=r;return this._truncate(t),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,t,i,r){let o;return null===n?o=this._itTail:(o=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,t)||this._addIdentityChange(n,t),this._reinsertAfter(n,o,r)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(n.item,t)||this._addIdentityChange(n,t),this._moveAfter(n,o,r)):n=this._addAfter(new Ex(t,i),o,r),n}_verifyReinsertion(n,t,i,r){let o=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==o?n=this._reinsertAfter(o,n._prev,r):n.currentIndex!=r&&(n.currentIndex=r,this._addToMoves(n,r)),n}_truncate(n){for(;null!==n;){const t=n._next;this._addToRemovals(this._unlink(n)),n=t}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(n,t,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const r=n._prevRemoved,o=n._nextRemoved;return null===r?this._removalsHead=o:r._nextRemoved=o,null===o?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(n,t,i),this._addToMoves(n,i),n}_moveAfter(n,t,i){return this._unlink(n),this._insertAfter(n,t,i),this._addToMoves(n,i),n}_addAfter(n,t,i){return this._insertAfter(n,t,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,t,i){const r=null===t?this._itHead:t._next;return n._next=r,n._prev=t,null===r?this._itTail=n:r._prev=n,null===t?this._itHead=n:t._next=n,null===this._linkedRecords&&(this._linkedRecords=new dC),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const t=n._prev,i=n._next;return null===t?this._itHead=i:t._next=i,null===i?this._itTail=t:i._prev=t,n}_addToMoves(n,t){return n.previousIndex===t||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new dC),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,t){return n.item=t,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class Ex{constructor(n,t){this.item=n,this.trackById=t,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class Mx{constructor(){this._head=null,this._tail=null}add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,t){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===t||t<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const t=n._prevDup,i=n._nextDup;return null===t?this._head=i:t._nextDup=i,null===i?this._tail=t:i._prevDup=t,null===this._head}}class dC{constructor(){this.map=new Map}put(n){const t=n.trackById;let i=this.map.get(t);i||(i=new Mx,this.map.set(t,i)),i.add(n)}get(n,t){const r=this.map.get(n);return r?r.get(n,t):null}remove(n){const t=n.trackById;return this.map.get(t).remove(n)&&this.map.delete(t),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function fC(e,n,t){const i=e.previousIndex;if(null===i)return i;let r=0;return t&&i{if(t&&t.key===r)this._maybeAddToChanges(t,i),this._appendAfter=t,t=t._next;else{const o=this._getOrCreateRecordForKey(r,i);t=this._insertBeforeOrAppend(t,o)}}),t){t._prev&&(t._prev._next=null),this._removalsHead=t;for(let i=t;null!==i;i=i._nextRemoved)i===this._mapHead&&(this._mapHead=null),this._records.delete(i.key),i._nextRemoved=i._next,i.previousValue=i.currentValue,i.currentValue=null,i._prev=null,i._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(n,t){if(n){const i=n._prev;return t._next=n,t._prev=i,n._prev=t,i&&(i._next=t),n===this._mapHead&&(this._mapHead=t),this._appendAfter=n,n}return this._appendAfter?(this._appendAfter._next=t,t._prev=this._appendAfter):this._mapHead=t,this._appendAfter=t,null}_getOrCreateRecordForKey(n,t){if(this._records.has(n)){const r=this._records.get(n);this._maybeAddToChanges(r,t);const o=r._prev,s=r._next;return o&&(o._next=s),s&&(s._prev=o),r._next=null,r._prev=null,r}const i=new Nx(n);return this._records.set(n,i),i.currentValue=t,this._addToAdditions(i),i}_reset(){if(this.isDirty){let n;for(this._previousMapHead=this._mapHead,n=this._previousMapHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._changesHead;null!==n;n=n._nextChanged)n.previousValue=n.currentValue;for(n=this._additionsHead;null!=n;n=n._nextAdded)n.previousValue=n.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(n,t){Object.is(t,n.currentValue)||(n.previousValue=n.currentValue,n.currentValue=t,this._addToChanges(n))}_addToAdditions(n){null===this._additionsHead?this._additionsHead=this._additionsTail=n:(this._additionsTail._nextAdded=n,this._additionsTail=n)}_addToChanges(n){null===this._changesHead?this._changesHead=this._changesTail=n:(this._changesTail._nextChanged=n,this._changesTail=n)}_forEach(n,t){n instanceof Map?n.forEach(t):Object.keys(n).forEach(i=>t(n[i],i))}}class Nx{constructor(n){this.key=n,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function pC(){return new jd([new uC])}let jd=(()=>{class e{constructor(t){this.factories=t}static create(t,i){if(null!=i){const r=i.factories.slice();t=t.concat(r)}return new e(t)}static extend(t){return{provide:e,useFactory:i=>e.create(t,i||pC()),deps:[[e,new xl,new Rl]]}}find(t){const i=this.factories.find(r=>r.supports(t));if(null!=i)return i;throw new F(901,!1)}}return e.\u0275prov=U({token:e,providedIn:"root",factory:pC}),e})();function gC(){return new cc([new hC])}let cc=(()=>{class e{constructor(t){this.factories=t}static create(t,i){if(i){const r=i.factories.slice();t=t.concat(r)}return new e(t)}static extend(t){return{provide:e,useFactory:i=>e.create(t,i||gC()),deps:[[e,new xl,new Rl]]}}find(t){const i=this.factories.find(r=>r.supports(t));if(i)return i;throw new F(901,!1)}}return e.\u0275prov=U({token:e,providedIn:"root",factory:gC}),e})();const Ox=Z1(null,"core",[]);let kx=(()=>{class e{constructor(t){}}return e.\u0275fac=function(t){return new(t||e)(L(lc))},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({}),e})();function wm(e,n){const t=Re(e),i=n.elementInjector||ad();return new Kl(t).create(i,n.projectableNodes,n.hostElement,n.environmentInjector)}let $d=null;function sr(){return $d}const mt=new Y("DocumentToken");let Sm=(()=>{class e{historyGo(t){throw new Error("Not implemented")}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:function(){return function Px(){return L(mC)}()},providedIn:"platform"}),e})();const Lx=new Y("Location Initialized");let mC=(()=>{class e extends Sm{constructor(t){super(),this._doc=t,this._init()}_init(){this.location=window.location,this._history=window.history}getBaseHrefFromDOM(){return sr().getBaseHref(this._doc)}onPopState(t){const i=sr().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",t,!1),()=>i.removeEventListener("popstate",t)}onHashChange(t){const i=sr().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",t,!1),()=>i.removeEventListener("hashchange",t)}get href(){return this.location.href}get protocol(){return this.location.protocol}get hostname(){return this.location.hostname}get port(){return this.location.port}get pathname(){return this.location.pathname}get search(){return this.location.search}get hash(){return this.location.hash}set pathname(t){this.location.pathname=t}pushState(t,i,r){_C()?this._history.pushState(t,i,r):this.location.hash=r}replaceState(t,i,r){_C()?this._history.replaceState(t,i,r):this.location.hash=r}forward(){this._history.forward()}back(){this._history.back()}historyGo(t=0){this._history.go(t)}getState(){return this._history.state}}return e.\u0275fac=function(t){return new(t||e)(L(mt))},e.\u0275prov=U({token:e,factory:function(){return function Vx(){return new mC(L(mt))}()},providedIn:"platform"}),e})();function _C(){return!!window.history.pushState}function Em(e,n){if(0==e.length)return n;if(0==n.length)return e;let t=0;return e.endsWith("/")&&t++,n.startsWith("/")&&t++,2==t?e+n.substring(1):1==t?e+n:e+"/"+n}function vC(e){const n=e.match(/#|\?|$/),t=n&&n.index||e.length;return e.slice(0,t-("/"===e[t-1]?1:0))+e.slice(t)}function Vr(e){return e&&"?"!==e[0]?"?"+e:e}let rs=(()=>{class e{historyGo(t){throw new Error("Not implemented")}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:function(){return bt(bC)},providedIn:"root"}),e})();const yC=new Y("appBaseHref");let bC=(()=>{class e extends rs{constructor(t,i){super(),this._platformLocation=t,this._removeListenerFns=[],this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??bt(mt).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return Em(this._baseHref,t)}path(t=!1){const i=this._platformLocation.pathname+Vr(this._platformLocation.search),r=this._platformLocation.hash;return r&&t?`${i}${r}`:i}pushState(t,i,r,o){const s=this.prepareExternalUrl(r+Vr(o));this._platformLocation.pushState(t,i,s)}replaceState(t,i,r,o){const s=this.prepareExternalUrl(r+Vr(o));this._platformLocation.replaceState(t,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}}return e.\u0275fac=function(t){return new(t||e)(L(Sm),L(yC,8))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),Hx=(()=>{class e extends rs{constructor(t,i){super(),this._platformLocation=t,this._baseHref="",this._removeListenerFns=[],null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}path(t=!1){let i=this._platformLocation.hash;return null==i&&(i="#"),i.length>0?i.substring(1):i}prepareExternalUrl(t){const i=Em(this._baseHref,t);return i.length>0?"#"+i:i}pushState(t,i,r,o){let s=this.prepareExternalUrl(r+Vr(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(t,i,s)}replaceState(t,i,r,o){let s=this.prepareExternalUrl(r+Vr(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(t,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}}return e.\u0275fac=function(t){return new(t||e)(L(Sm),L(yC,8))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})(),Mm=(()=>{class e{constructor(t){this._subject=new de,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=t;const i=this._locationStrategy.getBaseHref();this._baseHref=vC(DC(i)),this._locationStrategy.onPopState(r=>{this._subject.emit({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(t=!1){return this.normalize(this._locationStrategy.path(t))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(t,i=""){return this.path()==this.normalize(t+Vr(i))}normalize(t){return e.stripTrailingSlash(function jx(e,n){return e&&n.startsWith(e)?n.substring(e.length):n}(this._baseHref,DC(t)))}prepareExternalUrl(t){return t&&"/"!==t[0]&&(t="/"+t),this._locationStrategy.prepareExternalUrl(t)}go(t,i="",r=null){this._locationStrategy.pushState(r,"",t,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Vr(i)),r)}replaceState(t,i="",r=null){this._locationStrategy.replaceState(r,"",t,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Vr(i)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(t=0){this._locationStrategy.historyGo?.(t)}onUrlChange(t){return this._urlChangeListeners.push(t),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)})),()=>{const i=this._urlChangeListeners.indexOf(t);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(t="",i){this._urlChangeListeners.forEach(r=>r(t,i))}subscribe(t,i,r){return this._subject.subscribe({next:t,error:i,complete:r})}}return e.normalizeQueryParams=Vr,e.joinWithSlash=Em,e.stripTrailingSlash=vC,e.\u0275fac=function(t){return new(t||e)(L(rs))},e.\u0275prov=U({token:e,factory:function(){return function Bx(){return new Mm(L(rs))}()},providedIn:"root"}),e})();function DC(e){return e.replace(/\/index.html$/,"")}var Ct=(()=>((Ct=Ct||{})[Ct.Format=0]="Format",Ct[Ct.Standalone=1]="Standalone",Ct))(),ye=(()=>((ye=ye||{})[ye.Narrow=0]="Narrow",ye[ye.Abbreviated=1]="Abbreviated",ye[ye.Wide=2]="Wide",ye[ye.Short=3]="Short",ye))(),ut=(()=>((ut=ut||{})[ut.Short=0]="Short",ut[ut.Medium=1]="Medium",ut[ut.Long=2]="Long",ut[ut.Full=3]="Full",ut))(),ne=(()=>((ne=ne||{})[ne.Decimal=0]="Decimal",ne[ne.Group=1]="Group",ne[ne.List=2]="List",ne[ne.PercentSign=3]="PercentSign",ne[ne.PlusSign=4]="PlusSign",ne[ne.MinusSign=5]="MinusSign",ne[ne.Exponential=6]="Exponential",ne[ne.SuperscriptingExponent=7]="SuperscriptingExponent",ne[ne.PerMille=8]="PerMille",ne[ne.Infinity=9]="Infinity",ne[ne.NaN=10]="NaN",ne[ne.TimeSeparator=11]="TimeSeparator",ne[ne.CurrencyDecimal=12]="CurrencyDecimal",ne[ne.CurrencyGroup=13]="CurrencyGroup",ne))();function Ud(e,n){return hi(kn(e)[j.DateFormat],n)}function Gd(e,n){return hi(kn(e)[j.TimeFormat],n)}function Wd(e,n){return hi(kn(e)[j.DateTimeFormat],n)}function fi(e,n){const t=kn(e),i=t[j.NumberSymbols][n];if(typeof i>"u"){if(n===ne.CurrencyDecimal)return t[j.NumberSymbols][ne.Decimal];if(n===ne.CurrencyGroup)return t[j.NumberSymbols][ne.Group]}return i}function wC(e){if(!e[j.ExtraData])throw new Error(`Missing extra locale data for the locale "${e[j.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function hi(e,n){for(let t=n;t>-1;t--)if(typeof e[t]<"u")return e[t];throw new Error("Locale data API: locale data undefined")}function Nm(e){const[n,t]=e.split(":");return{hours:+n,minutes:+t}}const eF=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,uc={},tF=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;var Vt=(()=>((Vt=Vt||{})[Vt.Short=0]="Short",Vt[Vt.ShortGMT=1]="ShortGMT",Vt[Vt.Long=2]="Long",Vt[Vt.Extended=3]="Extended",Vt))(),re=(()=>((re=re||{})[re.FullYear=0]="FullYear",re[re.Month=1]="Month",re[re.Date=2]="Date",re[re.Hours=3]="Hours",re[re.Minutes=4]="Minutes",re[re.Seconds=5]="Seconds",re[re.FractionalSeconds=6]="FractionalSeconds",re[re.Day=7]="Day",re))(),fe=(()=>((fe=fe||{})[fe.DayPeriods=0]="DayPeriods",fe[fe.Days=1]="Days",fe[fe.Months=2]="Months",fe[fe.Eras=3]="Eras",fe))();function nF(e,n,t,i){let r=function dF(e){if(MC(e))return e;if("number"==typeof e&&!isNaN(e))return new Date(e);if("string"==typeof e){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){const[r,o=1,s=1]=e.split("-").map(a=>+a);return Kd(r,o-1,s)}const t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let i;if(i=e.match(eF))return function fF(e){const n=new Date(0);let t=0,i=0;const r=e[8]?n.setUTCFullYear:n.setFullYear,o=e[8]?n.setUTCHours:n.setHours;e[9]&&(t=Number(e[9]+e[10]),i=Number(e[9]+e[11])),r.call(n,Number(e[1]),Number(e[2])-1,Number(e[3]));const s=Number(e[4]||0)-t,a=Number(e[5]||0)-i,l=Number(e[6]||0),u=Math.floor(1e3*parseFloat("0."+(e[7]||0)));return o.call(n,s,a,l,u),n}(i)}const n=new Date(e);if(!MC(n))throw new Error(`Unable to convert "${e}" into a date`);return n}(e);n=Hr(t,n)||n;let a,s=[];for(;n;){if(a=tF.exec(n),!a){s.push(n);break}{s=s.concat(a.slice(1));const f=s.pop();if(!f)break;n=f}}let l=r.getTimezoneOffset();i&&(l=EC(i,l),r=function uF(e,n,t){const i=t?-1:1,r=e.getTimezoneOffset();return function cF(e,n){return(e=new Date(e.getTime())).setMinutes(e.getMinutes()+n),e}(e,i*(EC(n,r)-r))}(r,i,!0));let u="";return s.forEach(f=>{const p=function lF(e){if(Im[e])return Im[e];let n;switch(e){case"G":case"GG":case"GGG":n=Xe(fe.Eras,ye.Abbreviated);break;case"GGGG":n=Xe(fe.Eras,ye.Wide);break;case"GGGGG":n=Xe(fe.Eras,ye.Narrow);break;case"y":n=kt(re.FullYear,1,0,!1,!0);break;case"yy":n=kt(re.FullYear,2,0,!0,!0);break;case"yyy":n=kt(re.FullYear,3,0,!1,!0);break;case"yyyy":n=kt(re.FullYear,4,0,!1,!0);break;case"Y":n=Jd(1);break;case"YY":n=Jd(2,!0);break;case"YYY":n=Jd(3);break;case"YYYY":n=Jd(4);break;case"M":case"L":n=kt(re.Month,1,1);break;case"MM":case"LL":n=kt(re.Month,2,1);break;case"MMM":n=Xe(fe.Months,ye.Abbreviated);break;case"MMMM":n=Xe(fe.Months,ye.Wide);break;case"MMMMM":n=Xe(fe.Months,ye.Narrow);break;case"LLL":n=Xe(fe.Months,ye.Abbreviated,Ct.Standalone);break;case"LLLL":n=Xe(fe.Months,ye.Wide,Ct.Standalone);break;case"LLLLL":n=Xe(fe.Months,ye.Narrow,Ct.Standalone);break;case"w":n=Am(1);break;case"ww":n=Am(2);break;case"W":n=Am(1,!0);break;case"d":n=kt(re.Date,1);break;case"dd":n=kt(re.Date,2);break;case"c":case"cc":n=kt(re.Day,1);break;case"ccc":n=Xe(fe.Days,ye.Abbreviated,Ct.Standalone);break;case"cccc":n=Xe(fe.Days,ye.Wide,Ct.Standalone);break;case"ccccc":n=Xe(fe.Days,ye.Narrow,Ct.Standalone);break;case"cccccc":n=Xe(fe.Days,ye.Short,Ct.Standalone);break;case"E":case"EE":case"EEE":n=Xe(fe.Days,ye.Abbreviated);break;case"EEEE":n=Xe(fe.Days,ye.Wide);break;case"EEEEE":n=Xe(fe.Days,ye.Narrow);break;case"EEEEEE":n=Xe(fe.Days,ye.Short);break;case"a":case"aa":case"aaa":n=Xe(fe.DayPeriods,ye.Abbreviated);break;case"aaaa":n=Xe(fe.DayPeriods,ye.Wide);break;case"aaaaa":n=Xe(fe.DayPeriods,ye.Narrow);break;case"b":case"bb":case"bbb":n=Xe(fe.DayPeriods,ye.Abbreviated,Ct.Standalone,!0);break;case"bbbb":n=Xe(fe.DayPeriods,ye.Wide,Ct.Standalone,!0);break;case"bbbbb":n=Xe(fe.DayPeriods,ye.Narrow,Ct.Standalone,!0);break;case"B":case"BB":case"BBB":n=Xe(fe.DayPeriods,ye.Abbreviated,Ct.Format,!0);break;case"BBBB":n=Xe(fe.DayPeriods,ye.Wide,Ct.Format,!0);break;case"BBBBB":n=Xe(fe.DayPeriods,ye.Narrow,Ct.Format,!0);break;case"h":n=kt(re.Hours,1,-12);break;case"hh":n=kt(re.Hours,2,-12);break;case"H":n=kt(re.Hours,1);break;case"HH":n=kt(re.Hours,2);break;case"m":n=kt(re.Minutes,1);break;case"mm":n=kt(re.Minutes,2);break;case"s":n=kt(re.Seconds,1);break;case"ss":n=kt(re.Seconds,2);break;case"S":n=kt(re.FractionalSeconds,1);break;case"SS":n=kt(re.FractionalSeconds,2);break;case"SSS":n=kt(re.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":n=Yd(Vt.Short);break;case"ZZZZZ":n=Yd(Vt.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":n=Yd(Vt.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":n=Yd(Vt.Long);break;default:return null}return Im[e]=n,n}(f);u+=p?p(r,t,l):"''"===f?"'":f.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),u}function Kd(e,n,t){const i=new Date(0);return i.setFullYear(e,n,t),i.setHours(0,0,0),i}function Hr(e,n){const t=function $x(e){return kn(e)[j.LocaleId]}(e);if(uc[t]=uc[t]||{},uc[t][n])return uc[t][n];let i="";switch(n){case"shortDate":i=Ud(e,ut.Short);break;case"mediumDate":i=Ud(e,ut.Medium);break;case"longDate":i=Ud(e,ut.Long);break;case"fullDate":i=Ud(e,ut.Full);break;case"shortTime":i=Gd(e,ut.Short);break;case"mediumTime":i=Gd(e,ut.Medium);break;case"longTime":i=Gd(e,ut.Long);break;case"fullTime":i=Gd(e,ut.Full);break;case"short":const r=Hr(e,"shortTime"),o=Hr(e,"shortDate");i=zd(Wd(e,ut.Short),[r,o]);break;case"medium":const s=Hr(e,"mediumTime"),a=Hr(e,"mediumDate");i=zd(Wd(e,ut.Medium),[s,a]);break;case"long":const l=Hr(e,"longTime"),u=Hr(e,"longDate");i=zd(Wd(e,ut.Long),[l,u]);break;case"full":const f=Hr(e,"fullTime"),p=Hr(e,"fullDate");i=zd(Wd(e,ut.Full),[f,p])}return i&&(uc[t][n]=i),i}function zd(e,n){return n&&(e=e.replace(/\{([^}]+)}/g,function(t,i){return null!=n&&i in n?n[i]:t})),e}function Hi(e,n,t="-",i,r){let o="";(e<0||r&&e<=0)&&(r?e=1-e:(e=-e,o=t));let s=String(e);for(;s.length0||a>-t)&&(a+=t),e===re.Hours)0===a&&-12===t&&(a=12);else if(e===re.FractionalSeconds)return function iF(e,n){return Hi(e,3).substring(0,n)}(a,n);const l=fi(s,ne.MinusSign);return Hi(a,n,l,i,r)}}function Xe(e,n,t=Ct.Format,i=!1){return function(r,o){return function oF(e,n,t,i,r,o){switch(t){case fe.Months:return function Wx(e,n,t){const i=kn(e),o=hi([i[j.MonthsFormat],i[j.MonthsStandalone]],n);return hi(o,t)}(n,r,i)[e.getMonth()];case fe.Days:return function Gx(e,n,t){const i=kn(e),o=hi([i[j.DaysFormat],i[j.DaysStandalone]],n);return hi(o,t)}(n,r,i)[e.getDay()];case fe.DayPeriods:const s=e.getHours(),a=e.getMinutes();if(o){const u=function qx(e){const n=kn(e);return wC(n),(n[j.ExtraData][2]||[]).map(i=>"string"==typeof i?Nm(i):[Nm(i[0]),Nm(i[1])])}(n),f=function Jx(e,n,t){const i=kn(e);wC(i);const o=hi([i[j.ExtraData][0],i[j.ExtraData][1]],n)||[];return hi(o,t)||[]}(n,r,i),p=u.findIndex(m=>{if(Array.isArray(m)){const[v,y]=m,D=s>=v.hours&&a>=v.minutes,w=s0?Math.floor(r/60):Math.ceil(r/60);switch(e){case Vt.Short:return(r>=0?"+":"")+Hi(s,2,o)+Hi(Math.abs(r%60),2,o);case Vt.ShortGMT:return"GMT"+(r>=0?"+":"")+Hi(s,1,o);case Vt.Long:return"GMT"+(r>=0?"+":"")+Hi(s,2,o)+":"+Hi(Math.abs(r%60),2,o);case Vt.Extended:return 0===i?"Z":(r>=0?"+":"")+Hi(s,2,o)+":"+Hi(Math.abs(r%60),2,o);default:throw new Error(`Unknown zone width "${e}"`)}}}function SC(e){return Kd(e.getFullYear(),e.getMonth(),e.getDate()+(4-e.getDay()))}function Am(e,n=!1){return function(t,i){let r;if(n){const o=new Date(t.getFullYear(),t.getMonth(),1).getDay()-1,s=t.getDate();r=1+Math.floor((s+o)/7)}else{const o=SC(t),s=function aF(e){const n=Kd(e,0,1).getDay();return Kd(e,0,1+(n<=4?4:11)-n)}(o.getFullYear()),a=o.getTime()-s.getTime();r=1+Math.round(a/6048e5)}return Hi(r,e,fi(i,ne.MinusSign))}}function Jd(e,n=!1){return function(t,i){return Hi(SC(t).getFullYear(),e,fi(i,ne.MinusSign),n)}}const Im={};function EC(e,n){e=e.replace(/:/g,"");const t=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return isNaN(t)?n:t}function MC(e){return e instanceof Date&&!isNaN(e.valueOf())}function IC(e,n){n=encodeURIComponent(n);for(const t of e.split(";")){const i=t.indexOf("="),[r,o]=-1==i?[t,""]:[t.slice(0,i),t.slice(i+1)];if(r.trim()===n)return decodeURIComponent(o)}return null}let OC=(()=>{class e{constructor(t,i,r,o){this._iterableDiffers=t,this._keyValueDiffers=i,this._ngEl=r,this._renderer=o,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(zl(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){const t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}}_applyKeyValueChanges(t){t.forEachAddedItem(i=>this._toggleClass(i.key,i.currentValue)),t.forEachChangedItem(i=>this._toggleClass(i.key,i.currentValue)),t.forEachRemovedItem(i=>{i.previousValue&&this._toggleClass(i.key,!1)})}_applyIterableChanges(t){t.forEachAddedItem(i=>{if("string"!=typeof i.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${He(i.item)}`);this._toggleClass(i.item,!0)}),t.forEachRemovedItem(i=>this._toggleClass(i.item,!1))}_applyClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(i=>this._toggleClass(i,!0)):Object.keys(t).forEach(i=>this._toggleClass(i,!!t[i])))}_removeClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(i=>this._toggleClass(i,!1)):Object.keys(t).forEach(i=>this._toggleClass(i,!1)))}_toggleClass(t,i){(t=t.trim())&&t.split(/\s+/g).forEach(r=>{i?this._renderer.addClass(this._ngEl.nativeElement,r):this._renderer.removeClass(this._ngEl.nativeElement,r)})}}return e.\u0275fac=function(t){return new(t||e)(C(jd),C(cc),C(Qe),C(ui))},e.\u0275dir=B({type:e,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0}),e})();class EF{constructor(n,t,i,r){this.$implicit=n,this.ngForOf=t,this.index=i,this.count=r}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let Ra=(()=>{class e{constructor(t,i,r){this._viewContainer=t,this._template=i,this._differs=r,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const t=this._ngForOf;!this._differ&&t&&(this._differ=this._differs.find(t).create(this.ngForTrackBy))}if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const i=this._viewContainer;t.forEachOperation((r,o,s)=>{if(null==r.previousIndex)i.createEmbeddedView(this._template,new EF(r.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===o?void 0:o);else if(null!==o){const a=i.get(o);i.move(a,s),xC(a,r)}});for(let r=0,o=i.length;r{xC(i.get(r.currentIndex),r)})}static ngTemplateContextGuard(t,i){return!0}}return e.\u0275fac=function(t){return new(t||e)(C(Pi),C(gt),C(jd))},e.\u0275dir=B({type:e,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0}),e})();function xC(e,n){e.context.$implicit=n.item}let os=(()=>{class e{constructor(t,i){this._viewContainer=t,this._context=new TF,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=i}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){FC("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){FC("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(t,i){return!0}}return e.\u0275fac=function(t){return new(t||e)(C(Pi),C(gt))},e.\u0275dir=B({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),e})();class TF{constructor(){this.$implicit=null,this.ngIf=null}}function FC(e,n){if(n&&!n.createEmbeddedView)throw new Error(`${e} must be a TemplateRef, but received '${He(n)}'.`)}const jF=new Y("DATE_PIPE_DEFAULT_TIMEZONE");let LC=(()=>{class e{constructor(t,i){this.locale=t,this.defaultTimezone=i}transform(t,i="mediumDate",r,o){if(null==t||""===t||t!=t)return null;try{return nF(t,i,o||this.locale,r??this.defaultTimezone??void 0)}catch(s){throw function Bi(e,n){return new F(2100,!1)}()}}}return e.\u0275fac=function(t){return new(t||e)(C(xr,16),C(jF,24))},e.\u0275pipe=Tt({name:"date",type:e,pure:!0,standalone:!0}),e})(),Qn=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({}),e})();const HC="browser";let tP=(()=>{class e{}return e.\u0275prov=U({token:e,providedIn:"root",factory:()=>new nP(L(mt),window)}),e})();class nP{constructor(n,t){this.document=n,this.window=t,this.offset=()=>[0,0]}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(n){this.supportsScrolling()&&this.window.scrollTo(n[0],n[1])}scrollToAnchor(n){if(!this.supportsScrolling())return;const t=function iP(e,n){const t=e.getElementById(n)||e.getElementsByName(n)[0];if(t)return t;if("function"==typeof e.createTreeWalker&&e.body&&(e.body.createShadowRoot||e.body.attachShadow)){const i=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT);let r=i.currentNode;for(;r;){const o=r.shadowRoot;if(o){const s=o.getElementById(n)||o.querySelector(`[name="${n}"]`);if(s)return s}r=i.nextNode()}}return null}(this.document,n);t&&(this.scrollToElement(t),t.focus())}setHistoryScrollRestoration(n){if(this.supportScrollRestoration()){const t=this.window.history;t&&t.scrollRestoration&&(t.scrollRestoration=n)}}scrollToElement(n){const t=n.getBoundingClientRect(),i=t.left+this.window.pageXOffset,r=t.top+this.window.pageYOffset,o=this.offset();this.window.scrollTo(i-o[0],r-o[1])}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const n=jC(this.window.history)||jC(Object.getPrototypeOf(this.window.history));return!(!n||!n.writable&&!n.set)}catch{return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch{return!1}}}function jC(e){return Object.getOwnPropertyDescriptor(e,"scrollRestoration")}class $C{}class $m extends class IP extends class Fx{}{constructor(){super(...arguments),this.supportsDOMEvents=!0}}{static makeCurrent(){!function xx(e){$d||($d=e)}(new $m)}onAndCancel(n,t,i){return n.addEventListener(t,i,!1),()=>{n.removeEventListener(t,i,!1)}}dispatchEvent(n,t){n.dispatchEvent(t)}remove(n){n.parentNode&&n.parentNode.removeChild(n)}createElement(n,t){return(t=t||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,t){return"window"===t?window:"document"===t?n:"body"===t?n.body:null}getBaseHref(n){const t=function OP(){return pc=pc||document.querySelector("base"),pc?pc.getAttribute("href"):null}();return null==t?null:function kP(e){ef=ef||document.createElement("a"),ef.setAttribute("href",e);const n=ef.pathname;return"/"===n.charAt(0)?n:`/${n}`}(t)}resetBaseElement(){pc=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return IC(document.cookie,n)}}let ef,pc=null;const zC=new Y("TRANSITION_ID"),xP=[{provide:Fd,useFactory:function RP(e,n,t){return()=>{t.get(Pd).donePromise.then(()=>{const i=sr(),r=n.querySelectorAll(`style[ng-transition="${e}"]`);for(let o=0;o{class e{build(){return new XMLHttpRequest}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();const tf=new Y("EventManagerPlugins");let nf=(()=>{class e{constructor(t,i){this._zone=i,this._eventNameToPlugin=new Map,t.forEach(r=>r.manager=this),this._plugins=t.slice().reverse()}addEventListener(t,i,r){return this._findPluginFor(i).addEventListener(t,i,r)}addGlobalEventListener(t,i,r){return this._findPluginFor(i).addGlobalEventListener(t,i,r)}getZone(){return this._zone}_findPluginFor(t){const i=this._eventNameToPlugin.get(t);if(i)return i;const r=this._plugins;for(let o=0;o{class e{constructor(){this._stylesSet=new Set}addStyles(t){const i=new Set;t.forEach(r=>{this._stylesSet.has(r)||(this._stylesSet.add(r),i.add(r))}),this.onStylesAdded(i)}onStylesAdded(t){}getAllStyles(){return Array.from(this._stylesSet)}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})(),gc=(()=>{class e extends qC{constructor(t){super(),this._doc=t,this._hostNodes=new Map,this._hostNodes.set(t.head,[])}_addStylesToHost(t,i,r){t.forEach(o=>{const s=this._doc.createElement("style");s.textContent=o,r.push(i.appendChild(s))})}addHost(t){const i=[];this._addStylesToHost(this._stylesSet,t,i),this._hostNodes.set(t,i)}removeHost(t){const i=this._hostNodes.get(t);i&&i.forEach(JC),this._hostNodes.delete(t)}onStylesAdded(t){this._hostNodes.forEach((i,r)=>{this._addStylesToHost(t,r,i)})}ngOnDestroy(){this._hostNodes.forEach(t=>t.forEach(JC))}}return e.\u0275fac=function(t){return new(t||e)(L(mt))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();function JC(e){sr().remove(e)}const Um={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Gm=/%COMP%/g;function rf(e,n,t){for(let i=0;i{if("__ngUnwrap__"===n)return e;!1===e(n)&&(n.preventDefault(),n.returnValue=!1)}}let Wm=(()=>{class e{constructor(t,i,r){this.eventManager=t,this.sharedStylesHost=i,this.appId=r,this.rendererByCompId=new Map,this.defaultRenderer=new Km(t)}createRenderer(t,i){if(!t||!i)return this.defaultRenderer;switch(i.encapsulation){case Bn.Emulated:{let r=this.rendererByCompId.get(i.id);return r||(r=new $P(this.eventManager,this.sharedStylesHost,i,this.appId),this.rendererByCompId.set(i.id,r)),r.applyToHost(t),r}case 1:case Bn.ShadowDom:return new UP(this.eventManager,this.sharedStylesHost,t,i);default:if(!this.rendererByCompId.has(i.id)){const r=rf(i.id,i.styles,[]);this.sharedStylesHost.addStyles(r),this.rendererByCompId.set(i.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return e.\u0275fac=function(t){return new(t||e)(L(nf),L(gc),L(sc))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();class Km{constructor(n){this.eventManager=n,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(n,t){return t?document.createElementNS(Um[t]||t,n):document.createElement(n)}createComment(n){return document.createComment(n)}createText(n){return document.createTextNode(n)}appendChild(n,t){(tw(n)?n.content:n).appendChild(t)}insertBefore(n,t,i){n&&(tw(n)?n.content:n).insertBefore(t,i)}removeChild(n,t){n&&n.removeChild(t)}selectRootElement(n,t){let i="string"==typeof n?document.querySelector(n):n;if(!i)throw new Error(`The selector "${n}" did not match any elements`);return t||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,t,i,r){if(r){t=r+":"+t;const o=Um[r];o?n.setAttributeNS(o,t,i):n.setAttribute(t,i)}else n.setAttribute(t,i)}removeAttribute(n,t,i){if(i){const r=Um[i];r?n.removeAttributeNS(r,t):n.removeAttribute(`${i}:${t}`)}else n.removeAttribute(t)}addClass(n,t){n.classList.add(t)}removeClass(n,t){n.classList.remove(t)}setStyle(n,t,i,r){r&(Un.DashCase|Un.Important)?n.style.setProperty(t,i,r&Un.Important?"important":""):n.style[t]=i}removeStyle(n,t,i){i&Un.DashCase?n.style.removeProperty(t):n.style[t]=""}setProperty(n,t,i){n[t]=i}setValue(n,t){n.nodeValue=t}listen(n,t,i){return"string"==typeof n?this.eventManager.addGlobalEventListener(n,t,XC(i)):this.eventManager.addEventListener(n,t,XC(i))}}function tw(e){return"TEMPLATE"===e.tagName&&void 0!==e.content}class $P extends Km{constructor(n,t,i,r){super(n),this.component=i;const o=rf(r+"-"+i.id,i.styles,[]);t.addStyles(o),this.contentAttr=function HP(e){return"_ngcontent-%COMP%".replace(Gm,e)}(r+"-"+i.id),this.hostAttr=function BP(e){return"_nghost-%COMP%".replace(Gm,e)}(r+"-"+i.id)}applyToHost(n){super.setAttribute(n,this.hostAttr,"")}createElement(n,t){const i=super.createElement(n,t);return super.setAttribute(i,this.contentAttr,""),i}}class UP extends Km{constructor(n,t,i,r){super(n),this.sharedStylesHost=t,this.hostEl=i,this.shadowRoot=i.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const o=rf(r.id,r.styles,[]);for(let s=0;s{class e extends YC{constructor(t){super(t)}supports(t){return!0}addEventListener(t,i,r){return t.addEventListener(i,r,!1),()=>this.removeEventListener(t,i,r)}removeEventListener(t,i,r){return t.removeEventListener(i,r)}}return e.\u0275fac=function(t){return new(t||e)(L(mt))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();const nw=["alt","control","meta","shift"],WP={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},KP={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let zP=(()=>{class e extends YC{constructor(t){super(t)}supports(t){return null!=e.parseEventName(t)}addEventListener(t,i,r){const o=e.parseEventName(i),s=e.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>sr().onAndCancel(t,o.domEventName,s))}static parseEventName(t){const i=t.toLowerCase().split("."),r=i.shift();if(0===i.length||"keydown"!==r&&"keyup"!==r)return null;const o=e._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),nw.forEach(u=>{const f=i.indexOf(u);f>-1&&(i.splice(f,1),s+=u+".")}),s+=o,0!=i.length||0===o.length)return null;const l={};return l.domEventName=r,l.fullKey=s,l}static matchEventFullKeyCode(t,i){let r=WP[t.key]||t.key,o="";return i.indexOf("code.")>-1&&(r=t.code,o="code."),!(null==r||!r)&&(r=r.toLowerCase()," "===r?r="space":"."===r&&(r="dot"),nw.forEach(s=>{s!==r&&(0,KP[s])(t)&&(o+=s+".")}),o+=r,o===i)}static eventCallback(t,i,r){return o=>{e.matchEventFullKeyCode(o,t)&&r.runGuarded(()=>i(o))}}static _normalizeKey(t){return"esc"===t?"escape":t}}return e.\u0275fac=function(t){return new(t||e)(L(mt))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();const ZP=Z1(Ox,"browser",[{provide:ac,useValue:HC},{provide:j1,useValue:function YP(){$m.makeCurrent()},multi:!0},{provide:mt,useFactory:function JP(){return function HN(e){Bp=e}(document),document},deps:[]}]),ow=new Y(""),sw=[{provide:Ld,useClass:class FP{addToWindow(n){Ue.getAngularTestability=(i,r=!0)=>{const o=n.findTestabilityInTree(i,r);if(null==o)throw new Error("Could not find testability for element.");return o},Ue.getAllAngularTestabilities=()=>n.getAllTestabilities(),Ue.getAllAngularRootElements=()=>n.getAllRootElements(),Ue.frameworkStabilizers||(Ue.frameworkStabilizers=[]),Ue.frameworkStabilizers.push(i=>{const r=Ue.getAllAngularTestabilities();let o=r.length,s=!1;const a=function(l){s=s||l,o--,0==o&&i(s)};r.forEach(function(l){l.whenStable(a)})})}findTestabilityInTree(n,t,i){return null==t?null:n.getTestability(t)??(i?sr().isShadowRoot(t)?this.findTestabilityInTree(n,t.host,!0):this.findTestabilityInTree(n,t.parentElement,!0):null)}},deps:[]},{provide:z1,useClass:pm,deps:[Ye,gm,Ld]},{provide:pm,useClass:pm,deps:[Ye,gm,Ld]}],aw=[{provide:Jp,useValue:"root"},{provide:ha,useFactory:function qP(){return new ha},deps:[]},{provide:tf,useClass:GP,multi:!0,deps:[mt,Ye,ac]},{provide:tf,useClass:zP,multi:!0,deps:[mt]},{provide:Wm,useClass:Wm,deps:[nf,gc,sc]},{provide:eg,useExisting:Wm},{provide:qC,useExisting:gc},{provide:gc,useClass:gc,deps:[mt]},{provide:nf,useClass:nf,deps:[tf,Ye]},{provide:$C,useClass:PP,deps:[]},[]];let QP=(()=>{class e{constructor(t){}static withServerTransition(t){return{ngModule:e,providers:[{provide:sc,useValue:t.appId},{provide:zC,useExisting:sc},xP]}}}return e.\u0275fac=function(t){return new(t||e)(L(ow,12))},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({providers:[...aw,...sw],imports:[Qn,kx]}),e})(),lw=(()=>{class e{constructor(t){this._doc=t}getTitle(){return this._doc.title}setTitle(t){this._doc.title=t||""}}return e.\u0275fac=function(t){return new(t||e)(L(mt))},e.\u0275prov=U({token:e,factory:function(t){let i=null;return i=t?new t:function eL(){return new lw(L(mt))}(),i},providedIn:"root"}),e})();function Q(...e){return dt(e,Fo(e))}typeof window<"u"&&window;class zt extends je{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const t=super._subscribe(n);return!t.closed&&n.next(this._value),t}getValue(){const{hasError:n,thrownError:t,_value:i}=this;if(n)throw t;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}const mc=V(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}),{isArray:lL}=Array,{getPrototypeOf:cL,prototype:uL,keys:dL}=Object;function dw(e){if(1===e.length){const n=e[0];if(lL(n))return{args:n,keys:null};if(function fL(e){return e&&"object"==typeof e&&cL(e)===uL}(n)){const t=dL(n);return{args:t.map(i=>n[i]),keys:t}}}return{args:e,keys:null}}const{isArray:hL}=Array;function qm(e){return ie(n=>function pL(e,n){return hL(n)?e(...n):e(n)}(e,n))}function fw(e,n){return e.reduce((t,i,r)=>(t[i]=n[r],t),{})}function sf(...e){const n=Fo(e),t=yr(e),{args:i,keys:r}=dw(e);if(0===i.length)return dt([],n);const o=new Ve(function gL(e,n,t=Pn){return i=>{hw(n,()=>{const{length:r}=e,o=new Array(r);let s=r,a=r;for(let l=0;l{const u=dt(e[l],n);let f=!1;u.subscribe(Oe(i,p=>{o[l]=p,f||(f=!0,a--),a||i.next(t(o.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,r?s=>fw(r,s):Pn));return t?o.pipe(qm(t)):o}function hw(e,n,t){e?Mt(t,e,n):n()}function _c(...e){return function mL(){return fn(1)}()(dt(e,Fo(e)))}function pw(e){return new Ve(n=>{Et(e()).subscribe(n)})}function xa(e,n){const t=be(e)?e:()=>e,i=r=>r.error(t());return new Ve(n?r=>n.schedule(i,0,r):i)}function Jm(){return qe((e,n)=>{let t=null;e._refCount++;const i=Oe(n,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount)return void(t=null);const r=e._connection,o=t;t=null,r&&(!o||r===o)&&r.unsubscribe(),n.unsubscribe()});e.subscribe(i),i.closed||(t=e.connect())})}class gw extends Ve{constructor(n,t){super(),this.source=n,this.subjectFactory=t,this._subject=null,this._refCount=0,this._connection=null,q(n)&&(this.lift=n.lift)}_subscribe(n){return this.getSubject().subscribe(n)}getSubject(){const n=this._subject;return(!n||n.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:n}=this;this._subject=this._connection=null,n?.unsubscribe()}connect(){let n=this._connection;if(!n){n=this._connection=new _t;const t=this.getSubject();n.add(this.source.subscribe(Oe(t,void 0,()=>{this._teardown(),t.complete()},i=>{this._teardown(),t.error(i)},()=>this._teardown()))),n.closed&&(this._connection=null,n=_t.EMPTY)}return n}refCount(){return Jm()(this)}}function pi(e,n){return qe((t,i)=>{let r=null,o=0,s=!1;const a=()=>s&&!r&&i.complete();t.subscribe(Oe(i,l=>{r?.unsubscribe();let u=0;const f=o++;Et(e(l,f)).subscribe(r=Oe(i,p=>i.next(n?n(l,p,f,u++):p),()=>{r=null,a()}))},()=>{s=!0,a()}))})}function sn(e){return e<=0?()=>Ft:qe((n,t)=>{let i=0;n.subscribe(Oe(t,r=>{++i<=e&&(t.next(r),e<=i&&t.complete())}))})}function yn(e,n){return qe((t,i)=>{let r=0;t.subscribe(Oe(i,o=>e.call(n,o,r++)&&i.next(o)))})}function lf(e){return qe((n,t)=>{let i=!1;n.subscribe(Oe(t,r=>{i=!0,t.next(r)},()=>{i||t.next(e),t.complete()}))})}function mw(e=_L){return qe((n,t)=>{let i=!1;n.subscribe(Oe(t,r=>{i=!0,t.next(r)},()=>i?t.complete():t.error(e())))})}function _L(){return new mc}function mo(e,n){const t=arguments.length>=2;return i=>i.pipe(e?yn((r,o)=>e(r,o,i)):Pn,sn(1),t?lf(n):mw(()=>new mc))}function _o(e,n){return be(n)?ke(e,n,1):ke(e,1)}function Yt(e,n,t){const i=be(e)||n||t?{next:e,error:n,complete:t}:e;return i?qe((r,o)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;r.subscribe(Oe(o,l=>{var u;null===(u=i.next)||void 0===u||u.call(i,l),o.next(l)},()=>{var l;a=!1,null===(l=i.complete)||void 0===l||l.call(i),o.complete()},l=>{var u;a=!1,null===(u=i.error)||void 0===u||u.call(i,l),o.error(l)},()=>{var l,u;a&&(null===(l=i.unsubscribe)||void 0===l||l.call(i)),null===(u=i.finalize)||void 0===u||u.call(i)}))}):Pn}function Br(e){return qe((n,t)=>{let o,i=null,r=!1;i=n.subscribe(Oe(t,void 0,void 0,s=>{o=Et(e(s,Br(e)(n))),i?(i.unsubscribe(),i=null,o.subscribe(t)):r=!0})),r&&(i.unsubscribe(),i=null,o.subscribe(t))})}function vL(e,n,t,i,r){return(o,s)=>{let a=t,l=n,u=0;o.subscribe(Oe(s,f=>{const p=u++;l=a?e(l,f,p):(a=!0,f),i&&s.next(l)},r&&(()=>{a&&s.next(l),s.complete()})))}}function _w(e,n){return qe(vL(e,n,arguments.length>=2,!0))}function Zm(e){return e<=0?()=>Ft:qe((n,t)=>{let i=[];n.subscribe(Oe(t,r=>{i.push(r),e{for(const r of i)t.next(r);t.complete()},void 0,()=>{i=null}))})}function vw(e,n){const t=arguments.length>=2;return i=>i.pipe(e?yn((r,o)=>e(r,o,i)):Pn,Zm(1),t?lf(n):mw(()=>new mc))}function Qm(e){return qe((n,t)=>{try{n.subscribe(t)}finally{t.add(e)}})}const pe="primary",vc=Symbol("RouteTitle");class bL{constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const t=this.params[n];return Array.isArray(t)?t[0]:t}return null}getAll(n){if(this.has(n)){const t=this.params[n];return Array.isArray(t)?t:[t]}return[]}get keys(){return Object.keys(this.params)}}function Fa(e){return new bL(e)}function DL(e,n,t){const i=t.path.split("/");if(i.length>e.length||"full"===t.pathMatch&&(n.hasChildren()||i.lengthi[o]===r)}return e===n}function Dw(e){return Array.prototype.concat.apply([],e)}function Cw(e){return e.length>0?e[e.length-1]:null}function an(e,n){for(const t in e)e.hasOwnProperty(t)&&n(e[t],t)}function vo(e){return Pg(e)?e:ql(e)?dt(Promise.resolve(e)):Q(e)}const SL={exact:function Ew(e,n,t){if(!as(e.segments,n.segments)||!cf(e.segments,n.segments,t)||e.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!e.children[i]||!Ew(e.children[i],n.children[i],t))return!1;return!0},subset:Mw},ww={exact:function EL(e,n){return ar(e,n)},subset:function ML(e,n){return Object.keys(n).length<=Object.keys(e).length&&Object.keys(n).every(t=>bw(e[t],n[t]))},ignored:()=>!0};function Sw(e,n,t){return SL[t.paths](e.root,n.root,t.matrixParams)&&ww[t.queryParams](e.queryParams,n.queryParams)&&!("exact"===t.fragment&&e.fragment!==n.fragment)}function Mw(e,n,t){return Tw(e,n,n.segments,t)}function Tw(e,n,t,i){if(e.segments.length>t.length){const r=e.segments.slice(0,t.length);return!(!as(r,t)||n.hasChildren()||!cf(r,t,i))}if(e.segments.length===t.length){if(!as(e.segments,t)||!cf(e.segments,t,i))return!1;for(const r in n.children)if(!e.children[r]||!Mw(e.children[r],n.children[r],i))return!1;return!0}{const r=t.slice(0,e.segments.length),o=t.slice(e.segments.length);return!!(as(e.segments,r)&&cf(e.segments,r,i)&&e.children[pe])&&Tw(e.children[pe],n,o,i)}}function cf(e,n,t){return n.every((i,r)=>ww[t](e[r].parameters,i.parameters))}class ss{constructor(n,t,i){this.root=n,this.queryParams=t,this.fragment=i}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Fa(this.queryParams)),this._queryParamMap}toString(){return AL.serialize(this)}}class _e{constructor(n,t){this.segments=n,this.children=t,this.parent=null,an(t,(i,r)=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return uf(this)}}class yc{constructor(n,t){this.path=n,this.parameters=t}get parameterMap(){return this._parameterMap||(this._parameterMap=Fa(this.parameters)),this._parameterMap}toString(){return Ow(this)}}function as(e,n){return e.length===n.length&&e.every((t,i)=>t.path===n[i].path)}let Nw=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:function(){return new e_},providedIn:"root"}),e})();class e_{parse(n){const t=new VL(n);return new ss(t.parseRootSegment(),t.parseQueryParams(),t.parseFragment())}serialize(n){const t=`/${bc(n.root,!0)}`,i=function kL(e){const n=Object.keys(e).map(t=>{const i=e[t];return Array.isArray(i)?i.map(r=>`${df(t)}=${df(r)}`).join("&"):`${df(t)}=${df(i)}`}).filter(t=>!!t);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${t}${i}${"string"==typeof n.fragment?`#${function IL(e){return encodeURI(e)}(n.fragment)}`:""}`}}const AL=new e_;function uf(e){return e.segments.map(n=>Ow(n)).join("/")}function bc(e,n){if(!e.hasChildren())return uf(e);if(n){const t=e.children[pe]?bc(e.children[pe],!1):"",i=[];return an(e.children,(r,o)=>{o!==pe&&i.push(`${o}:${bc(r,!1)}`)}),i.length>0?`${t}(${i.join("//")})`:t}{const t=function NL(e,n){let t=[];return an(e.children,(i,r)=>{r===pe&&(t=t.concat(n(i,r)))}),an(e.children,(i,r)=>{r!==pe&&(t=t.concat(n(i,r)))}),t}(e,(i,r)=>r===pe?[bc(e.children[pe],!1)]:[`${r}:${bc(i,!1)}`]);return 1===Object.keys(e.children).length&&null!=e.children[pe]?`${uf(e)}/${t[0]}`:`${uf(e)}/(${t.join("//")})`}}function Aw(e){return encodeURIComponent(e).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function df(e){return Aw(e).replace(/%3B/gi,";")}function t_(e){return Aw(e).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function ff(e){return decodeURIComponent(e)}function Iw(e){return ff(e.replace(/\+/g,"%20"))}function Ow(e){return`${t_(e.path)}${function OL(e){return Object.keys(e).map(n=>`;${t_(n)}=${t_(e[n])}`).join("")}(e.parameters)}`}const RL=/^[^\/()?;=#]+/;function hf(e){const n=e.match(RL);return n?n[0]:""}const xL=/^[^=?&#]+/,PL=/^[^&#]+/;class VL{constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new _e([],{}):new _e([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let t={};this.peekStartsWith("/(")&&(this.capture("/"),t=this.parseParens(!0));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1)),(n.length>0||Object.keys(t).length>0)&&(i[pe]=new _e(n,t)),i}parseSegment(){const n=hf(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new F(4009,!1);return this.capture(n),new yc(ff(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const t=hf(this.remaining);if(!t)return;this.capture(t);let i="";if(this.consumeOptional("=")){const r=hf(this.remaining);r&&(i=r,this.capture(i))}n[ff(t)]=ff(i)}parseQueryParam(n){const t=function FL(e){const n=e.match(xL);return n?n[0]:""}(this.remaining);if(!t)return;this.capture(t);let i="";if(this.consumeOptional("=")){const s=function LL(e){const n=e.match(PL);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const r=Iw(t),o=Iw(i);if(n.hasOwnProperty(r)){let s=n[r];Array.isArray(s)||(s=[s],n[r]=s),s.push(o)}else n[r]=o}parseParens(n){const t={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const i=hf(this.remaining),r=this.remaining[i.length];if("/"!==r&&")"!==r&&";"!==r)throw new F(4010,!1);let o;i.indexOf(":")>-1?(o=i.slice(0,i.indexOf(":")),this.capture(o),this.capture(":")):n&&(o=pe);const s=this.parseChildren();t[o]=1===Object.keys(s).length?s[pe]:new _e([],s),this.consumeOptional("//")}return t}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new F(4011,!1)}}function n_(e){return e.segments.length>0?new _e([],{[pe]:e}):e}function pf(e){const n={};for(const i of Object.keys(e.children)){const o=pf(e.children[i]);(o.segments.length>0||o.hasChildren())&&(n[i]=o)}return function HL(e){if(1===e.numberOfChildren&&e.children[pe]){const n=e.children[pe];return new _e(e.segments.concat(n.segments),n.children)}return e}(new _e(e.segments,n))}function ls(e){return e instanceof ss}function $L(e,n,t,i,r){if(0===t.length)return Pa(n.root,n.root,n.root,i,r);const o=function xw(e){if("string"==typeof e[0]&&1===e.length&&"/"===e[0])return new Rw(!0,0,e);let n=0,t=!1;const i=e.reduce((r,o,s)=>{if("object"==typeof o&&null!=o){if(o.outlets){const a={};return an(o.outlets,(l,u)=>{a[u]="string"==typeof l?l.split("/"):l}),[...r,{outlets:a}]}if(o.segmentPath)return[...r,o.segmentPath]}return"string"!=typeof o?[...r,o]:0===s?(o.split("/").forEach((a,l)=>{0==l&&"."===a||(0==l&&""===a?t=!0:".."===a?n++:""!=a&&r.push(a))}),r):[...r,o]},[]);return new Rw(t,n,i)}(t);return o.toRoot()?Pa(n.root,n.root,new _e([],{}),i,r):function s(l){const u=function GL(e,n,t,i){if(e.isAbsolute)return new La(n.root,!0,0);if(-1===i)return new La(t,t===n.root,0);return function Fw(e,n,t){let i=e,r=n,o=t;for(;o>r;){if(o-=r,i=i.parent,!i)throw new F(4005,!1);r=i.segments.length}return new La(i,!1,r-o)}(t,i+(Dc(e.commands[0])?0:1),e.numberOfDoubleDots)}(o,n,e.snapshot?._urlSegment,l),f=u.processChildren?wc(u.segmentGroup,u.index,o.commands):r_(u.segmentGroup,u.index,o.commands);return Pa(n.root,u.segmentGroup,f,i,r)}(e.snapshot?._lastPathIndex)}function Dc(e){return"object"==typeof e&&null!=e&&!e.outlets&&!e.segmentPath}function Cc(e){return"object"==typeof e&&null!=e&&e.outlets}function Pa(e,n,t,i,r){let s,o={};i&&an(i,(l,u)=>{o[u]=Array.isArray(l)?l.map(f=>`${f}`):`${l}`}),s=e===n?t:kw(e,n,t);const a=n_(pf(s));return new ss(a,o,r)}function kw(e,n,t){const i={};return an(e.children,(r,o)=>{i[o]=r===n?t:kw(r,n,t)}),new _e(e.segments,i)}class Rw{constructor(n,t,i){if(this.isAbsolute=n,this.numberOfDoubleDots=t,this.commands=i,n&&i.length>0&&Dc(i[0]))throw new F(4003,!1);const r=i.find(Cc);if(r&&r!==Cw(i))throw new F(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class La{constructor(n,t,i){this.segmentGroup=n,this.processChildren=t,this.index=i}}function r_(e,n,t){if(e||(e=new _e([],{})),0===e.segments.length&&e.hasChildren())return wc(e,n,t);const i=function KL(e,n,t){let i=0,r=n;const o={match:!1,pathIndex:0,commandIndex:0};for(;r=t.length)return o;const s=e.segments[r],a=t[i];if(Cc(a))break;const l=`${a}`,u=i0&&void 0===l)break;if(l&&u&&"object"==typeof u&&void 0===u.outlets){if(!Lw(l,u,s))return o;i+=2}else{if(!Lw(l,{},s))return o;i++}r++}return{match:!0,pathIndex:r,commandIndex:i}}(e,n,t),r=t.slice(i.commandIndex);if(i.match&&i.pathIndex{"string"==typeof o&&(o=[o]),null!==o&&(r[s]=r_(e.children[s],n,o))}),an(e.children,(o,s)=>{void 0===i[s]&&(r[s]=o)}),new _e(e.segments,r)}}function o_(e,n,t){const i=e.segments.slice(0,n);let r=0;for(;r{"string"==typeof t&&(t=[t]),null!==t&&(n[i]=o_(new _e([],{}),0,t))}),n}function Pw(e){const n={};return an(e,(t,i)=>n[i]=`${t}`),n}function Lw(e,n,t){return e==t.path&&ar(n,t.parameters)}class jr{constructor(n,t){this.id=n,this.url=t}}class s_ extends jr{constructor(n,t,i="imperative",r=null){super(n,t),this.type=0,this.navigationTrigger=i,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class cs extends jr{constructor(n,t,i){super(n,t),this.urlAfterRedirects=i,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class gf extends jr{constructor(n,t,i,r){super(n,t),this.reason=i,this.code=r,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Vw extends jr{constructor(n,t,i,r){super(n,t),this.error=i,this.target=r,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class YL extends jr{constructor(n,t,i,r){super(n,t),this.urlAfterRedirects=i,this.state=r,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class qL extends jr{constructor(n,t,i,r){super(n,t),this.urlAfterRedirects=i,this.state=r,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class JL extends jr{constructor(n,t,i,r,o){super(n,t),this.urlAfterRedirects=i,this.state=r,this.shouldActivate=o,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class ZL extends jr{constructor(n,t,i,r){super(n,t),this.urlAfterRedirects=i,this.state=r,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class QL extends jr{constructor(n,t,i,r){super(n,t),this.urlAfterRedirects=i,this.state=r,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class XL{constructor(n){this.route=n,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class e2{constructor(n){this.route=n,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class t2{constructor(n){this.snapshot=n,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class n2{constructor(n){this.snapshot=n,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class r2{constructor(n){this.snapshot=n,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class o2{constructor(n){this.snapshot=n,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Hw{constructor(n,t,i){this.routerEvent=n,this.position=t,this.anchor=i,this.type=15}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class Bw{constructor(n){this._root=n}get root(){return this._root.value}parent(n){const t=this.pathFromRoot(n);return t.length>1?t[t.length-2]:null}children(n){const t=a_(n,this._root);return t?t.children.map(i=>i.value):[]}firstChild(n){const t=a_(n,this._root);return t&&t.children.length>0?t.children[0].value:null}siblings(n){const t=l_(n,this._root);return t.length<2?[]:t[t.length-2].children.map(r=>r.value).filter(r=>r!==n)}pathFromRoot(n){return l_(n,this._root).map(t=>t.value)}}function a_(e,n){if(e===n.value)return n;for(const t of n.children){const i=a_(e,t);if(i)return i}return null}function l_(e,n){if(e===n.value)return[n];for(const t of n.children){const i=l_(e,t);if(i.length)return i.unshift(n),i}return[]}class $r{constructor(n,t){this.value=n,this.children=t}toString(){return`TreeNode(${this.value})`}}function Va(e){const n={};return e&&e.children.forEach(t=>n[t.value.outlet]=t),n}class jw extends Bw{constructor(n,t){super(n),this.snapshot=t,c_(this,n)}toString(){return this.snapshot.toString()}}function $w(e,n){const t=function a2(e,n){const s=new mf([],{},{},"",{},pe,n,null,e.root,-1,{});return new Gw("",new $r(s,[]))}(e,n),i=new zt([new yc("",{})]),r=new zt({}),o=new zt({}),s=new zt({}),a=new zt(""),l=new us(i,r,s,a,o,pe,n,t.root);return l.snapshot=t.root,new jw(new $r(l,[]),t)}class us{constructor(n,t,i,r,o,s,a,l){this.url=n,this.params=t,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.title=this.data?.pipe(ie(u=>u[vc]))??Q(void 0),this._futureSnapshot=l}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(ie(n=>Fa(n)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(ie(n=>Fa(n)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Uw(e,n="emptyOnly"){const t=e.pathFromRoot;let i=0;if("always"!==n)for(i=t.length-1;i>=1;){const r=t[i],o=t[i-1];if(r.routeConfig&&""===r.routeConfig.path)i--;else{if(o.component)break;i--}}return function l2(e){return e.reduce((n,t)=>({params:{...n.params,...t.params},data:{...n.data,...t.data},resolve:{...t.data,...n.resolve,...t.routeConfig?.data,...t._resolvedData}}),{params:{},data:{},resolve:{}})}(t.slice(i))}class mf{constructor(n,t,i,r,o,s,a,l,u,f,p,m){this.url=n,this.params=t,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.title=this.data?.[vc],this.routeConfig=l,this._urlSegment=u,this._lastPathIndex=f,this._correctedLastPathIndex=m??f,this._resolve=p}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=Fa(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Fa(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Gw extends Bw{constructor(n,t){super(t),this.url=n,c_(this,t)}toString(){return Ww(this._root)}}function c_(e,n){n.value._routerState=e,n.children.forEach(t=>c_(e,t))}function Ww(e){const n=e.children.length>0?` { ${e.children.map(Ww).join(", ")} } `:"";return`${e.value}${n}`}function u_(e){if(e.snapshot){const n=e.snapshot,t=e._futureSnapshot;e.snapshot=t,ar(n.queryParams,t.queryParams)||e.queryParams.next(t.queryParams),n.fragment!==t.fragment&&e.fragment.next(t.fragment),ar(n.params,t.params)||e.params.next(t.params),function CL(e,n){if(e.length!==n.length)return!1;for(let t=0;tar(t.parameters,n[i].parameters))}(e.url,n.url);return t&&!(!e.parent!=!n.parent)&&(!e.parent||d_(e.parent,n.parent))}function Sc(e,n,t){if(t&&e.shouldReuseRoute(n.value,t.value.snapshot)){const i=t.value;i._futureSnapshot=n.value;const r=function u2(e,n,t){return n.children.map(i=>{for(const r of t.children)if(e.shouldReuseRoute(i.value,r.value.snapshot))return Sc(e,i,r);return Sc(e,i)})}(e,n,t);return new $r(i,r)}{if(e.shouldAttach(n.value)){const o=e.retrieve(n.value);if(null!==o){const s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Sc(e,a)),s}}const i=function d2(e){return new us(new zt(e.url),new zt(e.params),new zt(e.queryParams),new zt(e.fragment),new zt(e.data),e.outlet,e.component,e)}(n.value),r=n.children.map(o=>Sc(e,o));return new $r(i,r)}}const f_="ngNavigationCancelingError";function Kw(e,n){const{redirectTo:t,navigationBehaviorOptions:i}=ls(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,r=zw(!1,0,n);return r.url=t,r.navigationBehaviorOptions=i,r}function zw(e,n,t){const i=new Error("NavigationCancelingError: "+(e||""));return i[f_]=!0,i.cancellationCode=n,t&&(i.url=t),i}function Yw(e){return qw(e)&&ls(e.url)}function qw(e){return e&&e[f_]}class f2{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new Ec,this.attachRef=null}}let Ec=(()=>{class e{constructor(){this.contexts=new Map}onChildOutletCreated(t,i){const r=this.getOrCreateContext(t);r.outlet=i,this.contexts.set(t,r)}onChildOutletDestroyed(t){const i=this.getContext(t);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let i=this.getContext(t);return i||(i=new f2,this.contexts.set(t,i)),i}getContext(t){return this.contexts.get(t)||null}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const _f=!1;let h_=(()=>{class e{constructor(t,i,r,o,s){this.parentContexts=t,this.location=i,this.changeDetector=o,this.environmentInjector=s,this.activated=null,this._activatedRoute=null,this.activateEvents=new de,this.deactivateEvents=new de,this.attachEvents=new de,this.detachEvents=new de,this.name=r||pe,t.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.getContext(this.name)?.outlet===this&&this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.injector))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new F(4012,_f);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new F(4012,_f);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new F(4012,_f);this.location.detach();const t=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(t.instance),t}attach(t,i){this.activated=t,this._activatedRoute=i,this.location.insert(t.hostView),this.attachEvents.emit(t.instance)}deactivate(){if(this.activated){const t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,i){if(this.isActivated)throw new F(4013,_f);this._activatedRoute=t;const r=this.location,s=t._futureSnapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,l=new h2(t,a,r.injector);if(i&&function p2(e){return!!e.resolveComponentFactory}(i)){const u=i.resolveComponentFactory(s);this.activated=r.createComponent(u,r.length,l)}else this.activated=r.createComponent(s,{index:r.length,injector:l,environmentInjector:i??this.environmentInjector});this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return e.\u0275fac=function(t){return new(t||e)(C(Ec),C(Pi),function Yo(e){return function J(e,n){if("class"===n)return e.classes;if("style"===n)return e.styles;const t=e.attrs;if(t){const i=t.length;let r=0;for(;r{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275cmp=lt({type:e,selectors:[["ng-component"]],standalone:!0,features:[t1],decls:1,vars:0,template:function(t,i){1&t&&Ri(0,"router-outlet")},dependencies:[h_],encapsulation:2}),e})();function Jw(e,n){return e.providers&&!e._injector&&(e._injector=Md(e.providers,n,`Route: ${e.path}`)),e._injector??n}function m_(e){const n=e.children&&e.children.map(m_),t=n?{...e,children:n}:{...e};return!t.component&&!t.loadComponent&&(n||t.loadChildren)&&t.outlet&&t.outlet!==pe&&(t.component=p_),t}function gi(e){return e.outlet||pe}function Zw(e,n){const t=e.filter(i=>gi(i)===n);return t.push(...e.filter(i=>gi(i)!==n)),t}function Mc(e){if(!e)return null;if(e.routeConfig?._injector)return e.routeConfig._injector;for(let n=e.parent;n;n=n.parent){const t=n.routeConfig;if(t?._loadedInjector)return t._loadedInjector;if(t?._injector)return t._injector}return null}class y2{constructor(n,t,i,r){this.routeReuseStrategy=n,this.futureState=t,this.currState=i,this.forwardEvent=r}activate(n){const t=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(t,i,n),u_(this.futureState.root),this.activateChildRoutes(t,i,n)}deactivateChildRoutes(n,t,i){const r=Va(t);n.children.forEach(o=>{const s=o.value.outlet;this.deactivateRoutes(o,r[s],i),delete r[s]}),an(r,(o,s)=>{this.deactivateRouteAndItsChildren(o,i)})}deactivateRoutes(n,t,i){const r=n.value,o=t?t.value:null;if(r===o)if(r.component){const s=i.getContext(r.outlet);s&&this.deactivateChildRoutes(n,t,s.children)}else this.deactivateChildRoutes(n,t,i);else o&&this.deactivateRouteAndItsChildren(t,i)}deactivateRouteAndItsChildren(n,t){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,t):this.deactivateRouteAndOutlet(n,t)}detachAndStoreRouteSubtree(n,t){const i=t.getContext(n.value.outlet),r=i&&n.value.component?i.children:t,o=Va(n);for(const s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,t){const i=t.getContext(n.value.outlet),r=i&&n.value.component?i.children:t,o=Va(n);for(const s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);i&&i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated(),i.attachRef=null,i.resolver=null,i.route=null)}activateChildRoutes(n,t,i){const r=Va(t);n.children.forEach(o=>{this.activateRoutes(o,r[o.value.outlet],i),this.forwardEvent(new o2(o.value.snapshot))}),n.children.length&&this.forwardEvent(new n2(n.value.snapshot))}activateRoutes(n,t,i){const r=n.value,o=t?t.value:null;if(u_(r),r===o)if(r.component){const s=i.getOrCreateContext(r.outlet);this.activateChildRoutes(n,t,s.children)}else this.activateChildRoutes(n,t,i);else if(r.component){const s=i.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){const a=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),u_(a.route.value),this.activateChildRoutes(n,null,s.children)}else{const a=Mc(r.snapshot),l=a?.get(Ul)??null;s.attachRef=null,s.route=r,s.resolver=l,s.injector=a,s.outlet&&s.outlet.activateWith(r,s.injector),this.activateChildRoutes(n,null,s.children)}}else this.activateChildRoutes(n,null,i)}}class Qw{constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class vf{constructor(n,t){this.component=n,this.route=t}}function b2(e,n,t){const i=e._root;return Tc(i,n?n._root:null,t,[i.value])}function Ha(e,n){const t=Symbol(),i=n.get(e,t);return i===t?"function"!=typeof e||function wu(e){return null!==Lo(e)}(e)?n.get(e):e:i}function Tc(e,n,t,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=Va(n);return e.children.forEach(s=>{(function C2(e,n,t,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=e.value,s=n?n.value:null,a=t?t.getContext(e.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){const l=function w2(e,n,t){if("function"==typeof t)return t(e,n);switch(t){case"pathParamsChange":return!as(e.url,n.url);case"pathParamsOrQueryParamsChange":return!as(e.url,n.url)||!ar(e.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!d_(e,n)||!ar(e.queryParams,n.queryParams);default:return!d_(e,n)}}(s,o,o.routeConfig.runGuardsAndResolvers);l?r.canActivateChecks.push(new Qw(i)):(o.data=s.data,o._resolvedData=s._resolvedData),Tc(e,n,o.component?a?a.children:null:t,i,r),l&&a&&a.outlet&&a.outlet.isActivated&&r.canDeactivateChecks.push(new vf(a.outlet.component,s))}else s&&Nc(n,a,r),r.canActivateChecks.push(new Qw(i)),Tc(e,null,o.component?a?a.children:null:t,i,r)})(s,o[s.value.outlet],t,i.concat([s.value]),r),delete o[s.value.outlet]}),an(o,(s,a)=>Nc(s,t.getContext(a),r)),r}function Nc(e,n,t){const i=Va(e),r=e.value;an(i,(o,s)=>{Nc(o,r.component?n?n.children.getContext(s):null:n,t)}),t.canDeactivateChecks.push(new vf(r.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,r))}function Ac(e){return"function"==typeof e}function __(e){return e instanceof mc||"EmptyError"===e?.name}const yf=Symbol("INITIAL_VALUE");function Ba(){return pi(e=>sf(e.map(n=>n.pipe(sn(1),function af(...e){const n=Fo(e);return qe((t,i)=>{(n?_c(e,t,n):_c(e,t)).subscribe(i)})}(yf)))).pipe(ie(n=>{for(const t of n)if(!0!==t){if(t===yf)return yf;if(!1===t||t instanceof ss)return t}return!0}),yn(n=>n!==yf),sn(1)))}function Xw(e){return function el(...e){return Es(e)}(Yt(n=>{if(ls(n))throw Kw(0,n)}),ie(n=>!0===n))}const v_={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function eS(e,n,t,i,r){const o=y_(e,n,t);return o.matched?function B2(e,n,t,i){const r=n.canMatch;return r&&0!==r.length?Q(r.map(s=>{const a=Ha(s,e);return vo(function A2(e){return e&&Ac(e.canMatch)}(a)?a.canMatch(n,t):e.runInContext(()=>a(n,t)))})).pipe(Ba(),Xw()):Q(!0)}(i=Jw(n,i),n,t).pipe(ie(s=>!0===s?o:{...v_})):Q(o)}function y_(e,n,t){if(""===n.path)return"full"===n.pathMatch&&(e.hasChildren()||t.length>0)?{...v_}:{matched:!0,consumedSegments:[],remainingSegments:t,parameters:{},positionalParamSegments:{}};const r=(n.matcher||DL)(t,e,n);if(!r)return{...v_};const o={};an(r.posParams,(a,l)=>{o[l]=a.path});const s=r.consumed.length>0?{...o,...r.consumed[r.consumed.length-1].parameters}:o;return{matched:!0,consumedSegments:r.consumed,remainingSegments:t.slice(r.consumed.length),parameters:s,positionalParamSegments:r.posParams??{}}}function bf(e,n,t,i,r="corrected"){if(t.length>0&&function U2(e,n,t){return t.some(i=>Df(e,n,i)&&gi(i)!==pe)}(e,t,i)){const s=new _e(n,function $2(e,n,t,i){const r={};r[pe]=i,i._sourceSegment=e,i._segmentIndexShift=n.length;for(const o of t)if(""===o.path&&gi(o)!==pe){const s=new _e([],{});s._sourceSegment=e,s._segmentIndexShift=n.length,r[gi(o)]=s}return r}(e,n,i,new _e(t,e.children)));return s._sourceSegment=e,s._segmentIndexShift=n.length,{segmentGroup:s,slicedSegments:[]}}if(0===t.length&&function G2(e,n,t){return t.some(i=>Df(e,n,i))}(e,t,i)){const s=new _e(e.segments,function j2(e,n,t,i,r,o){const s={};for(const a of i)if(Df(e,t,a)&&!r[gi(a)]){const l=new _e([],{});l._sourceSegment=e,l._segmentIndexShift="legacy"===o?e.segments.length:n.length,s[gi(a)]=l}return{...r,...s}}(e,n,t,i,e.children,r));return s._sourceSegment=e,s._segmentIndexShift=n.length,{segmentGroup:s,slicedSegments:t}}const o=new _e(e.segments,e.children);return o._sourceSegment=e,o._segmentIndexShift=n.length,{segmentGroup:o,slicedSegments:t}}function Df(e,n,t){return(!(e.hasChildren()||n.length>0)||"full"!==t.pathMatch)&&""===t.path}function tS(e,n,t,i){return!!(gi(e)===i||i!==pe&&Df(n,t,e))&&("**"===e.path||y_(n,e,t).matched)}function nS(e,n,t){return 0===n.length&&!e.children[t]}const Cf=!1;class wf{constructor(n){this.segmentGroup=n||null}}class iS{constructor(n){this.urlTree=n}}function Ic(e){return xa(new wf(e))}function rS(e){return xa(new iS(e))}class Y2{constructor(n,t,i,r,o){this.injector=n,this.configLoader=t,this.urlSerializer=i,this.urlTree=r,this.config=o,this.allowRedirects=!0}apply(){const n=bf(this.urlTree.root,[],[],this.config).segmentGroup,t=new _e(n.segments,n.children);return this.expandSegmentGroup(this.injector,this.config,t,pe).pipe(ie(o=>this.createUrlTree(pf(o),this.urlTree.queryParams,this.urlTree.fragment))).pipe(Br(o=>{if(o instanceof iS)return this.allowRedirects=!1,this.match(o.urlTree);throw o instanceof wf?this.noMatchError(o):o}))}match(n){return this.expandSegmentGroup(this.injector,this.config,n.root,pe).pipe(ie(r=>this.createUrlTree(pf(r),n.queryParams,n.fragment))).pipe(Br(r=>{throw r instanceof wf?this.noMatchError(r):r}))}noMatchError(n){return new F(4002,Cf)}createUrlTree(n,t,i){const r=n_(n);return new ss(r,t,i)}expandSegmentGroup(n,t,i,r){return 0===i.segments.length&&i.hasChildren()?this.expandChildren(n,t,i).pipe(ie(o=>new _e([],o))):this.expandSegment(n,i,t,i.segments,r,!0)}expandChildren(n,t,i){const r=[];for(const o of Object.keys(i.children))"primary"===o?r.unshift(o):r.push(o);return dt(r).pipe(_o(o=>{const s=i.children[o],a=Zw(t,o);return this.expandSegmentGroup(n,a,s,o).pipe(ie(l=>({segment:l,outlet:o})))}),_w((o,s)=>(o[s.outlet]=s.segment,o),{}),vw())}expandSegment(n,t,i,r,o,s){return dt(i).pipe(_o(a=>this.expandSegmentAgainstRoute(n,t,i,a,r,o,s).pipe(Br(u=>{if(u instanceof wf)return Q(null);throw u}))),mo(a=>!!a),Br((a,l)=>{if(__(a))return nS(t,r,o)?Q(new _e([],{})):Ic(t);throw a}))}expandSegmentAgainstRoute(n,t,i,r,o,s,a){return tS(r,t,o,s)?void 0===r.redirectTo?this.matchSegmentAgainstRoute(n,t,r,o,s):a&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(n,t,i,r,o,s):Ic(t):Ic(t)}expandSegmentAgainstRouteUsingRedirect(n,t,i,r,o,s){return"**"===r.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(n,i,r,s):this.expandRegularSegmentAgainstRouteUsingRedirect(n,t,i,r,o,s)}expandWildCardWithParamsAgainstRouteUsingRedirect(n,t,i,r){const o=this.applyRedirectCommands([],i.redirectTo,{});return i.redirectTo.startsWith("/")?rS(o):this.lineralizeSegments(i,o).pipe(ke(s=>{const a=new _e(s,{});return this.expandSegment(n,a,t,s,r,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(n,t,i,r,o,s){const{matched:a,consumedSegments:l,remainingSegments:u,positionalParamSegments:f}=y_(t,r,o);if(!a)return Ic(t);const p=this.applyRedirectCommands(l,r.redirectTo,f);return r.redirectTo.startsWith("/")?rS(p):this.lineralizeSegments(r,p).pipe(ke(m=>this.expandSegment(n,t,i,m.concat(u),s,!1)))}matchSegmentAgainstRoute(n,t,i,r,o){return"**"===i.path?(n=Jw(i,n),i.loadChildren?(i._loadedRoutes?Q({routes:i._loadedRoutes,injector:i._loadedInjector}):this.configLoader.loadChildren(n,i)).pipe(ie(a=>(i._loadedRoutes=a.routes,i._loadedInjector=a.injector,new _e(r,{})))):Q(new _e(r,{}))):eS(t,i,r,n).pipe(pi(({matched:s,consumedSegments:a,remainingSegments:l})=>s?this.getChildConfig(n=i._injector??n,i,r).pipe(ke(f=>{const p=f.injector??n,m=f.routes,{segmentGroup:v,slicedSegments:y}=bf(t,a,l,m),D=new _e(v.segments,v.children);if(0===y.length&&D.hasChildren())return this.expandChildren(p,m,D).pipe(ie(E=>new _e(a,E)));if(0===m.length&&0===y.length)return Q(new _e(a,{}));const w=gi(i)===o;return this.expandSegment(p,D,m,y,w?pe:o,!0).pipe(ie(O=>new _e(a.concat(O.segments),O.children)))})):Ic(t)))}getChildConfig(n,t,i){return t.children?Q({routes:t.children,injector:n}):t.loadChildren?void 0!==t._loadedRoutes?Q({routes:t._loadedRoutes,injector:t._loadedInjector}):function H2(e,n,t,i){const r=n.canLoad;return void 0===r||0===r.length?Q(!0):Q(r.map(s=>{const a=Ha(s,e);return vo(function E2(e){return e&&Ac(e.canLoad)}(a)?a.canLoad(n,t):e.runInContext(()=>a(n,t)))})).pipe(Ba(),Xw())}(n,t,i).pipe(ke(r=>r?this.configLoader.loadChildren(n,t).pipe(Yt(o=>{t._loadedRoutes=o.routes,t._loadedInjector=o.injector})):function K2(e){return xa(zw(Cf,3))}())):Q({routes:[],injector:n})}lineralizeSegments(n,t){let i=[],r=t.root;for(;;){if(i=i.concat(r.segments),0===r.numberOfChildren)return Q(i);if(r.numberOfChildren>1||!r.children[pe])return xa(new F(4e3,Cf));r=r.children[pe]}}applyRedirectCommands(n,t,i){return this.applyRedirectCreateUrlTree(t,this.urlSerializer.parse(t),n,i)}applyRedirectCreateUrlTree(n,t,i,r){const o=this.createSegmentGroup(n,t.root,i,r);return new ss(o,this.createQueryParams(t.queryParams,this.urlTree.queryParams),t.fragment)}createQueryParams(n,t){const i={};return an(n,(r,o)=>{if("string"==typeof r&&r.startsWith(":")){const a=r.substring(1);i[o]=t[a]}else i[o]=r}),i}createSegmentGroup(n,t,i,r){const o=this.createSegments(n,t.segments,i,r);let s={};return an(t.children,(a,l)=>{s[l]=this.createSegmentGroup(n,a,i,r)}),new _e(o,s)}createSegments(n,t,i,r){return t.map(o=>o.path.startsWith(":")?this.findPosParam(n,o,r):this.findOrReturn(o,i))}findPosParam(n,t,i){const r=i[t.path.substring(1)];if(!r)throw new F(4001,Cf);return r}findOrReturn(n,t){let i=0;for(const r of t){if(r.path===n.path)return t.splice(i),r;i++}return n}}class J2{}class X2{constructor(n,t,i,r,o,s,a,l){this.injector=n,this.rootComponentType=t,this.config=i,this.urlTree=r,this.url=o,this.paramsInheritanceStrategy=s,this.relativeLinkResolution=a,this.urlSerializer=l}recognize(){const n=bf(this.urlTree.root,[],[],this.config.filter(t=>void 0===t.redirectTo),this.relativeLinkResolution).segmentGroup;return this.processSegmentGroup(this.injector,this.config,n,pe).pipe(ie(t=>{if(null===t)return null;const i=new mf([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},pe,this.rootComponentType,null,this.urlTree.root,-1,{}),r=new $r(i,t),o=new Gw(this.url,r);return this.inheritParamsAndData(o._root),o}))}inheritParamsAndData(n){const t=n.value,i=Uw(t,this.paramsInheritanceStrategy);t.params=Object.freeze(i.params),t.data=Object.freeze(i.data),n.children.forEach(r=>this.inheritParamsAndData(r))}processSegmentGroup(n,t,i,r){return 0===i.segments.length&&i.hasChildren()?this.processChildren(n,t,i):this.processSegment(n,t,i,i.segments,r)}processChildren(n,t,i){return dt(Object.keys(i.children)).pipe(_o(r=>{const o=i.children[r],s=Zw(t,r);return this.processSegmentGroup(n,s,o,r)}),_w((r,o)=>r&&o?(r.push(...o),r):null),function yL(e,n=!1){return qe((t,i)=>{let r=0;t.subscribe(Oe(i,o=>{const s=e(o,r++);(s||n)&&i.next(o),!s&&i.complete()}))})}(r=>null!==r),lf(null),vw(),ie(r=>{if(null===r)return null;const o=oS(r);return function eV(e){e.sort((n,t)=>n.value.outlet===pe?-1:t.value.outlet===pe?1:n.value.outlet.localeCompare(t.value.outlet))}(o),o}))}processSegment(n,t,i,r,o){return dt(t).pipe(_o(s=>this.processSegmentAgainstRoute(s._injector??n,s,i,r,o)),mo(s=>!!s),Br(s=>{if(__(s))return nS(i,r,o)?Q([]):Q(null);throw s}))}processSegmentAgainstRoute(n,t,i,r,o){if(t.redirectTo||!tS(t,i,r,o))return Q(null);let s;if("**"===t.path){const a=r.length>0?Cw(r).parameters:{},l=aS(i)+r.length;s=Q({snapshot:new mf(r,a,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,cS(t),gi(t),t.component??t._loadedComponent??null,t,sS(i),l,uS(t),l),consumedSegments:[],remainingSegments:[]})}else s=eS(i,t,r,n).pipe(ie(({matched:a,consumedSegments:l,remainingSegments:u,parameters:f})=>{if(!a)return null;const p=aS(i)+l.length;return{snapshot:new mf(l,f,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,cS(t),gi(t),t.component??t._loadedComponent??null,t,sS(i),p,uS(t),p),consumedSegments:l,remainingSegments:u}}));return s.pipe(pi(a=>{if(null===a)return Q(null);const{snapshot:l,consumedSegments:u,remainingSegments:f}=a;n=t._injector??n;const p=t._loadedInjector??n,m=function tV(e){return e.children?e.children:e.loadChildren?e._loadedRoutes:[]}(t),{segmentGroup:v,slicedSegments:y}=bf(i,u,f,m.filter(w=>void 0===w.redirectTo),this.relativeLinkResolution);if(0===y.length&&v.hasChildren())return this.processChildren(p,m,v).pipe(ie(w=>null===w?null:[new $r(l,w)]));if(0===m.length&&0===y.length)return Q([new $r(l,[])]);const D=gi(t)===o;return this.processSegment(p,m,v,y,D?pe:o).pipe(ie(w=>null===w?null:[new $r(l,w)]))}))}}function nV(e){const n=e.value.routeConfig;return n&&""===n.path&&void 0===n.redirectTo}function oS(e){const n=[],t=new Set;for(const i of e){if(!nV(i)){n.push(i);continue}const r=n.find(o=>i.value.routeConfig===o.value.routeConfig);void 0!==r?(r.children.push(...i.children),t.add(r)):n.push(i)}for(const i of t){const r=oS(i.children);n.push(new $r(i.value,r))}return n.filter(i=>!t.has(i))}function sS(e){let n=e;for(;n._sourceSegment;)n=n._sourceSegment;return n}function aS(e){let n=e,t=n._segmentIndexShift??0;for(;n._sourceSegment;)n=n._sourceSegment,t+=n._segmentIndexShift??0;return t-1}function cS(e){return e.data||{}}function uS(e){return e.resolve||{}}function oV(e,n){return ke(t=>{const{targetSnapshot:i,guards:{canActivateChecks:r}}=t;if(!r.length)return Q(t);let o=0;return dt(r).pipe(_o(s=>function sV(e,n,t,i){const r=e.routeConfig,o=e._resolve;return void 0!==r?.title&&!dS(r)&&(o[vc]=r.title),function aV(e,n,t,i){const r=function lV(e){return[...Object.keys(e),...Object.getOwnPropertySymbols(e)]}(e);if(0===r.length)return Q({});const o={};return dt(r).pipe(ke(s=>function cV(e,n,t,i){const r=Mc(n)??i,o=Ha(e,r);return vo(o.resolve?o.resolve(n,t):r.runInContext(()=>o(n,t)))}(e[s],n,t,i).pipe(mo(),Yt(a=>{o[s]=a}))),Zm(1),function yw(e){return ie(()=>e)}(o),Br(s=>__(s)?Ft:xa(s)))}(o,e,n,i).pipe(ie(s=>(e._resolvedData=s,e.data=Uw(e,t).resolve,r&&dS(r)&&(e.data[vc]=r.title),null)))}(s.route,i,e,n)),Yt(()=>o++),Zm(1),ke(s=>o===r.length?Q(t):Ft))})}function dS(e){return"string"==typeof e.title||null===e.title}function b_(e){return pi(n=>{const t=e(n);return t?dt(t).pipe(ie(()=>n)):Q(n)})}let fS=(()=>{class e{buildTitle(t){let i,r=t.root;for(;void 0!==r;)i=this.getResolvedTitleForRoute(r)??i,r=r.children.find(o=>o.outlet===pe);return i}getResolvedTitleForRoute(t){return t.data[vc]}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:function(){return bt(hS)},providedIn:"root"}),e})(),hS=(()=>{class e extends fS{constructor(t){super(),this.title=t}updateTitle(t){const i=this.buildTitle(t);void 0!==i&&this.title.setTitle(i)}}return e.\u0275fac=function(t){return new(t||e)(L(lw))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class uV{}class fV extends class dV{shouldDetach(n){return!1}store(n,t){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,t){return n.routeConfig===t.routeConfig}}{}const Ef=new Y("",{providedIn:"root",factory:()=>({})}),D_=new Y("ROUTES");let C_=(()=>{class e{constructor(t,i){this.injector=t,this.compiler=i,this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap}loadComponent(t){if(this.componentLoaders.get(t))return this.componentLoaders.get(t);if(t._loadedComponent)return Q(t._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(t);const i=vo(t.loadComponent()).pipe(Yt(o=>{this.onLoadEndListener&&this.onLoadEndListener(t),t._loadedComponent=o}),Qm(()=>{this.componentLoaders.delete(t)})),r=new gw(i,()=>new je).pipe(Jm());return this.componentLoaders.set(t,r),r}loadChildren(t,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return Q({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const o=this.loadModuleFactoryOrRoutes(i.loadChildren).pipe(ie(a=>{this.onLoadEndListener&&this.onLoadEndListener(i);let l,u,f=!1;Array.isArray(a)?u=a:(l=a.create(t).injector,u=Dw(l.get(D_,[],ee.Self|ee.Optional)));return{routes:u.map(m_),injector:l}}),Qm(()=>{this.childrenLoaders.delete(i)})),s=new gw(o,()=>new je).pipe(Jm());return this.childrenLoaders.set(i,s),s}loadModuleFactoryOrRoutes(t){return vo(t()).pipe(ke(i=>i instanceof XD||Array.isArray(i)?Q(i):dt(this.compiler.compileModuleAsync(i))))}}return e.\u0275fac=function(t){return new(t||e)(L(_n),L(um))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class pV{}class gV{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,t){return n}}function mV(e){throw e}function _V(e,n,t){return n.parse("/")}const vV={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},yV={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function gS(){const e=bt(Nw),n=bt(Ec),t=bt(Mm),i=bt(_n),r=bt(um),o=bt(D_,{optional:!0})??[],s=bt(Ef,{optional:!0})??{},a=bt(hS),l=bt(fS,{optional:!0}),u=bt(pV,{optional:!0}),f=bt(uV,{optional:!0}),p=new ln(null,e,n,t,i,r,Dw(o));return u&&(p.urlHandlingStrategy=u),f&&(p.routeReuseStrategy=f),p.titleStrategy=l??a,function bV(e,n){e.errorHandler&&(n.errorHandler=e.errorHandler),e.malformedUriErrorHandler&&(n.malformedUriErrorHandler=e.malformedUriErrorHandler),e.onSameUrlNavigation&&(n.onSameUrlNavigation=e.onSameUrlNavigation),e.paramsInheritanceStrategy&&(n.paramsInheritanceStrategy=e.paramsInheritanceStrategy),e.relativeLinkResolution&&(n.relativeLinkResolution=e.relativeLinkResolution),e.urlUpdateStrategy&&(n.urlUpdateStrategy=e.urlUpdateStrategy),e.canceledNavigationResolution&&(n.canceledNavigationResolution=e.canceledNavigationResolution)}(s,p),p}let ln=(()=>{class e{constructor(t,i,r,o,s,a,l){this.rootComponentType=t,this.urlSerializer=i,this.rootContexts=r,this.location=o,this.config=l,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.disposed=!1,this.navigationId=0,this.currentPageId=0,this.isNgZoneEnabled=!1,this.events=new je,this.errorHandler=mV,this.malformedUriErrorHandler=_V,this.navigated=!1,this.lastSuccessfulId=-1,this.afterPreactivation=()=>Q(void 0),this.urlHandlingStrategy=new gV,this.routeReuseStrategy=new fV,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="corrected",this.canceledNavigationResolution="replace",this.configLoader=s.get(C_),this.configLoader.onLoadEndListener=m=>this.triggerEvent(new e2(m)),this.configLoader.onLoadStartListener=m=>this.triggerEvent(new XL(m)),this.ngModule=s.get(ns),this.console=s.get(ZR);const p=s.get(Ye);this.isNgZoneEnabled=p instanceof Ye&&Ye.isInAngularZone(),this.resetConfig(l),this.currentUrlTree=function wL(){return new ss(new _e([],{}),{},null)}(),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=$w(this.currentUrlTree,this.rootComponentType),this.transitions=new zt({id:0,targetPageId:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}get browserPageId(){return this.location.getState()?.\u0275routerPageId}setupNavigations(t){const i=this.events;return t.pipe(yn(r=>0!==r.id),ie(r=>({...r,extractedUrl:this.urlHandlingStrategy.extract(r.rawUrl)})),pi(r=>{let o=!1,s=!1;return Q(r).pipe(Yt(a=>{this.currentNavigation={id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,trigger:a.source,extras:a.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}}),pi(a=>{const l=this.browserUrlTree.toString(),u=!this.navigated||a.extractedUrl.toString()!==l||l!==this.currentUrlTree.toString();if(("reload"===this.onSameUrlNavigation||u)&&this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return mS(a.source)&&(this.browserUrlTree=a.extractedUrl),Q(a).pipe(pi(p=>{const m=this.transitions.getValue();return i.next(new s_(p.id,this.serializeUrl(p.extractedUrl),p.source,p.restoredState)),m!==this.transitions.getValue()?Ft:Promise.resolve(p)}),function q2(e,n,t,i){return pi(r=>function z2(e,n,t,i,r){return new Y2(e,n,t,i,r).apply()}(e,n,t,r.extractedUrl,i).pipe(ie(o=>({...r,urlAfterRedirects:o}))))}(this.ngModule.injector,this.configLoader,this.urlSerializer,this.config),Yt(p=>{this.currentNavigation={...this.currentNavigation,finalUrl:p.urlAfterRedirects},r.urlAfterRedirects=p.urlAfterRedirects}),function rV(e,n,t,i,r,o){return ke(s=>function Q2(e,n,t,i,r,o,s="emptyOnly",a="legacy"){return new X2(e,n,t,i,r,s,a,o).recognize().pipe(pi(l=>null===l?function Z2(e){return new Ve(n=>n.error(e))}(new J2):Q(l)))}(e,n,t,s.urlAfterRedirects,i.serialize(s.urlAfterRedirects),i,r,o).pipe(ie(a=>({...s,targetSnapshot:a}))))}(this.ngModule.injector,this.rootComponentType,this.config,this.urlSerializer,this.paramsInheritanceStrategy,this.relativeLinkResolution),Yt(p=>{if(r.targetSnapshot=p.targetSnapshot,"eager"===this.urlUpdateStrategy){if(!p.extras.skipLocationChange){const v=this.urlHandlingStrategy.merge(p.urlAfterRedirects,p.rawUrl);this.setBrowserUrl(v,p)}this.browserUrlTree=p.urlAfterRedirects}const m=new YL(p.id,this.serializeUrl(p.extractedUrl),this.serializeUrl(p.urlAfterRedirects),p.targetSnapshot);i.next(m)}));if(u&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:m,extractedUrl:v,source:y,restoredState:D,extras:w}=a,S=new s_(m,this.serializeUrl(v),y,D);i.next(S);const O=$w(v,this.rootComponentType).snapshot;return Q(r={...a,targetSnapshot:O,urlAfterRedirects:v,extras:{...w,skipLocationChange:!1,replaceUrl:!1}})}return this.rawUrlTree=a.rawUrl,a.resolve(null),Ft}),Yt(a=>{const l=new qL(a.id,this.serializeUrl(a.extractedUrl),this.serializeUrl(a.urlAfterRedirects),a.targetSnapshot);this.triggerEvent(l)}),ie(a=>r={...a,guards:b2(a.targetSnapshot,a.currentSnapshot,this.rootContexts)}),function O2(e,n){return ke(t=>{const{targetSnapshot:i,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:s}}=t;return 0===s.length&&0===o.length?Q({...t,guardsResult:!0}):function k2(e,n,t,i){return dt(e).pipe(ke(r=>function V2(e,n,t,i,r){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?Q(o.map(a=>{const l=Mc(n)??r,u=Ha(a,l);return vo(function N2(e){return e&&Ac(e.canDeactivate)}(u)?u.canDeactivate(e,n,t,i):l.runInContext(()=>u(e,n,t,i))).pipe(mo())})).pipe(Ba()):Q(!0)}(r.component,r.route,t,n,i)),mo(r=>!0!==r,!0))}(s,i,r,e).pipe(ke(a=>a&&function S2(e){return"boolean"==typeof e}(a)?function R2(e,n,t,i){return dt(n).pipe(_o(r=>_c(function F2(e,n){return null!==e&&n&&n(new t2(e)),Q(!0)}(r.route.parent,i),function x2(e,n){return null!==e&&n&&n(new r2(e)),Q(!0)}(r.route,i),function L2(e,n,t){const i=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(s=>function D2(e){const n=e.routeConfig?e.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:e,guards:n}:null}(s)).filter(s=>null!==s).map(s=>pw(()=>Q(s.guards.map(l=>{const u=Mc(s.node)??t,f=Ha(l,u);return vo(function T2(e){return e&&Ac(e.canActivateChild)}(f)?f.canActivateChild(i,e):u.runInContext(()=>f(i,e))).pipe(mo())})).pipe(Ba())));return Q(o).pipe(Ba())}(e,r.path,t),function P2(e,n,t){const i=n.routeConfig?n.routeConfig.canActivate:null;if(!i||0===i.length)return Q(!0);const r=i.map(o=>pw(()=>{const s=Mc(n)??t,a=Ha(o,s);return vo(function M2(e){return e&&Ac(e.canActivate)}(a)?a.canActivate(n,e):s.runInContext(()=>a(n,e))).pipe(mo())}));return Q(r).pipe(Ba())}(e,r.route,t))),mo(r=>!0!==r,!0))}(i,o,e,n):Q(a)),ie(a=>({...t,guardsResult:a})))})}(this.ngModule.injector,a=>this.triggerEvent(a)),Yt(a=>{if(r.guardsResult=a.guardsResult,ls(a.guardsResult))throw Kw(0,a.guardsResult);const l=new JL(a.id,this.serializeUrl(a.extractedUrl),this.serializeUrl(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);this.triggerEvent(l)}),yn(a=>!!a.guardsResult||(this.restoreHistory(a),this.cancelNavigationTransition(a,"",3),!1)),b_(a=>{if(a.guards.canActivateChecks.length)return Q(a).pipe(Yt(l=>{const u=new ZL(l.id,this.serializeUrl(l.extractedUrl),this.serializeUrl(l.urlAfterRedirects),l.targetSnapshot);this.triggerEvent(u)}),pi(l=>{let u=!1;return Q(l).pipe(oV(this.paramsInheritanceStrategy,this.ngModule.injector),Yt({next:()=>u=!0,complete:()=>{u||(this.restoreHistory(l),this.cancelNavigationTransition(l,"",2))}}))}),Yt(l=>{const u=new QL(l.id,this.serializeUrl(l.extractedUrl),this.serializeUrl(l.urlAfterRedirects),l.targetSnapshot);this.triggerEvent(u)}))}),b_(a=>{const l=u=>{const f=[];u.routeConfig?.loadComponent&&!u.routeConfig._loadedComponent&&f.push(this.configLoader.loadComponent(u.routeConfig).pipe(Yt(p=>{u.component=p}),ie(()=>{})));for(const p of u.children)f.push(...l(p));return f};return sf(l(a.targetSnapshot.root)).pipe(lf(),sn(1))}),b_(()=>this.afterPreactivation()),ie(a=>{const l=function c2(e,n,t){const i=Sc(e,n._root,t?t._root:void 0);return new jw(i,n)}(this.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);return r={...a,targetRouterState:l}}),Yt(a=>{this.currentUrlTree=a.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(a.urlAfterRedirects,a.rawUrl),this.routerState=a.targetRouterState,"deferred"===this.urlUpdateStrategy&&(a.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,a),this.browserUrlTree=a.urlAfterRedirects)}),((e,n,t)=>ie(i=>(new y2(n,i.targetRouterState,i.currentRouterState,t).activate(e),i)))(this.rootContexts,this.routeReuseStrategy,a=>this.triggerEvent(a)),Yt({next(){o=!0},complete(){o=!0}}),Qm(()=>{o||s||this.cancelNavigationTransition(r,"",1),this.currentNavigation?.id===r.id&&(this.currentNavigation=null)}),Br(a=>{if(s=!0,qw(a)){Yw(a)||(this.navigated=!0,this.restoreHistory(r,!0));const l=new gf(r.id,this.serializeUrl(r.extractedUrl),a.message,a.cancellationCode);if(i.next(l),Yw(a)){const u=this.urlHandlingStrategy.merge(a.url,this.rawUrlTree),f={skipLocationChange:r.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy||mS(r.source)};this.scheduleNavigation(u,"imperative",null,f,{resolve:r.resolve,reject:r.reject,promise:r.promise})}else r.resolve(!1)}else{this.restoreHistory(r,!0);const l=new Vw(r.id,this.serializeUrl(r.extractedUrl),a,r.targetSnapshot??void 0);i.next(l);try{r.resolve(this.errorHandler(a))}catch(u){r.reject(u)}}return Ft}))}))}resetRootComponentType(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType}setTransition(t){this.transitions.next({...this.transitions.value,...t})}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(t=>{const i="popstate"===t.type?"popstate":"hashchange";"popstate"===i&&setTimeout(()=>{const r={replaceUrl:!0},o=t.state?.navigationId?t.state:null;if(o){const a={...o};delete a.navigationId,delete a.\u0275routerPageId,0!==Object.keys(a).length&&(r.state=a)}const s=this.parseUrl(t.url);this.scheduleNavigation(s,i,o,r)},0)}))}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(t){this.events.next(t)}resetConfig(t){this.config=t.map(m_),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.transitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(t,i={}){const{relativeTo:r,queryParams:o,fragment:s,queryParamsHandling:a,preserveFragment:l}=i,u=r||this.routerState.root,f=l?this.currentUrlTree.fragment:s;let p=null;switch(a){case"merge":p={...this.currentUrlTree.queryParams,...o};break;case"preserve":p=this.currentUrlTree.queryParams;break;default:p=o||null}return null!==p&&(p=this.removeEmptyProps(p)),$L(u,this.currentUrlTree,t,p,f??null)}navigateByUrl(t,i={skipLocationChange:!1}){const r=ls(t)?t:this.parseUrl(t),o=this.urlHandlingStrategy.merge(r,this.rawUrlTree);return this.scheduleNavigation(o,"imperative",null,i)}navigate(t,i={skipLocationChange:!1}){return function DV(e){for(let n=0;n{const o=t[r];return null!=o&&(i[r]=o),i},{})}processNavigations(){this.navigations.subscribe(t=>{this.navigated=!0,this.lastSuccessfulId=t.id,this.currentPageId=t.targetPageId,this.events.next(new cs(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,this.titleStrategy?.updateTitle(this.routerState.snapshot),t.resolve(!0)},t=>{this.console.warn(`Unhandled Navigation Error: ${t}`)})}scheduleNavigation(t,i,r,o,s){if(this.disposed)return Promise.resolve(!1);let a,l,u;s?(a=s.resolve,l=s.reject,u=s.promise):u=new Promise((m,v)=>{a=m,l=v});const f=++this.navigationId;let p;return"computed"===this.canceledNavigationResolution?(0===this.currentPageId&&(r=this.location.getState()),p=r&&r.\u0275routerPageId?r.\u0275routerPageId:o.replaceUrl||o.skipLocationChange?this.browserPageId??0:(this.browserPageId??0)+1):p=0,this.setTransition({id:f,targetPageId:p,source:i,restoredState:r,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:o,resolve:a,reject:l,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(m=>Promise.reject(m))}setBrowserUrl(t,i){const r=this.urlSerializer.serialize(t),o={...i.extras.state,...this.generateNgRouterState(i.id,i.targetPageId)};this.location.isCurrentPathEqualTo(r)||i.extras.replaceUrl?this.location.replaceState(r,"",o):this.location.go(r,"",o)}restoreHistory(t,i=!1){if("computed"===this.canceledNavigationResolution){const r=this.currentPageId-t.targetPageId;"popstate"!==t.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==this.currentNavigation?.finalUrl||0===r?this.currentUrlTree===this.currentNavigation?.finalUrl&&0===r&&(this.resetState(t),this.browserUrlTree=t.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(r)}else"replace"===this.canceledNavigationResolution&&(i&&this.resetState(t),this.resetUrlToCurrentUrlTree())}resetState(t){this.routerState=t.currentRouterState,this.currentUrlTree=t.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}cancelNavigationTransition(t,i,r){const o=new gf(t.id,this.serializeUrl(t.extractedUrl),i,r);this.triggerEvent(o),t.resolve(!1)}generateNgRouterState(t,i){return"computed"===this.canceledNavigationResolution?{navigationId:t,\u0275routerPageId:i}:{navigationId:t}}}return e.\u0275fac=function(t){lg()},e.\u0275prov=U({token:e,factory:function(){return gS()},providedIn:"root"}),e})();function mS(e){return"imperative"!==e}class _S{}let SV=(()=>{class e{constructor(t,i,r,o,s){this.router=t,this.injector=r,this.preloadingStrategy=o,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(yn(t=>t instanceof cs),_o(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(t,i){const r=[];for(const o of i){o.providers&&!o._injector&&(o._injector=Md(o.providers,t,`Route: ${o.path}`));const s=o._injector??t,a=o._loadedInjector??s;o.loadChildren&&!o._loadedRoutes&&void 0===o.canLoad||o.loadComponent&&!o._loadedComponent?r.push(this.preloadConfig(s,o)):(o.children||o._loadedRoutes)&&r.push(this.processRoutes(a,o.children??o._loadedRoutes))}return dt(r).pipe(fn())}preloadConfig(t,i){return this.preloadingStrategy.preload(i,()=>{let r;r=i.loadChildren&&void 0===i.canLoad?this.loader.loadChildren(t,i):Q(null);const o=r.pipe(ke(s=>null===s?Q(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,this.processRoutes(s.injector??t,s.routes))));return i.loadComponent&&!i._loadedComponent?dt([o,this.loader.loadComponent(i)]).pipe(fn()):o})}}return e.\u0275fac=function(t){return new(t||e)(L(ln),L(um),L(co),L(_S),L(C_))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const E_=new Y("");let vS=(()=>{class e{constructor(t,i,r={}){this.router=t,this.viewportScroller=i,this.options=r,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},r.scrollPositionRestoration=r.scrollPositionRestoration||"disabled",r.anchorScrolling=r.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(t=>{t instanceof s_?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof cs&&(this.lastId=t.id,this.scheduleScrollEvent(t,this.router.parseUrl(t.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(t=>{t instanceof Hw&&(t.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(t.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,i){this.router.triggerEvent(new Hw(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,i))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}return e.\u0275fac=function(t){lg()},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();function ja(e,n){return{\u0275kind:e,\u0275providers:n}}function M_(e){return[{provide:D_,multi:!0,useValue:e}]}function bS(){const e=bt(_n);return n=>{const t=e.get(lc);if(n!==t.components[0])return;const i=e.get(ln),r=e.get(DS);1===e.get(T_)&&i.initialNavigation(),e.get(CS,null,ee.Optional)?.setUpPreloading(),e.get(E_,null,ee.Optional)?.init(),i.resetRootComponentType(t.componentTypes[0]),r.closed||(r.next(),r.unsubscribe())}}const DS=new Y("",{factory:()=>new je}),T_=new Y("",{providedIn:"root",factory:()=>1});const CS=new Y("");function NV(e){return ja(0,[{provide:CS,useExisting:SV},{provide:_S,useExisting:e}])}const wS=new Y("ROUTER_FORROOT_GUARD"),AV=[Mm,{provide:Nw,useClass:e_},{provide:ln,useFactory:gS},Ec,{provide:us,useFactory:function yS(e){return e.routerState.root},deps:[ln]},C_];function IV(){return new q1("Router",ln)}let Af=(()=>{class e{constructor(t){}static forRoot(t,i){return{ngModule:e,providers:[AV,[],M_(t),{provide:wS,useFactory:xV,deps:[[ln,new Rl,new xl]]},{provide:Ef,useValue:i||{}},i?.useHash?{provide:rs,useClass:Hx}:{provide:rs,useClass:bC},{provide:E_,useFactory:()=>{const e=bt(ln),n=bt(tP),t=bt(Ef);return t.scrollOffset&&n.setOffset(t.scrollOffset),new vS(e,n,t)}},i?.preloadingStrategy?NV(i.preloadingStrategy).\u0275providers:[],{provide:q1,multi:!0,useFactory:IV},i?.initialNavigation?FV(i):[],[{provide:SS,useFactory:bS},{provide:$1,multi:!0,useExisting:SS}]]}}static forChild(t){return{ngModule:e,providers:[M_(t)]}}}return e.\u0275fac=function(t){return new(t||e)(L(wS,8))},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[p_]}),e})();function xV(e){return"guarded"}function FV(e){return["disabled"===e.initialNavigation?ja(3,[{provide:Fd,multi:!0,useFactory:()=>{const n=bt(ln);return()=>{n.setUpLocationChangeListener()}}},{provide:T_,useValue:2}]).\u0275providers:[],"enabledBlocking"===e.initialNavigation?ja(2,[{provide:T_,useValue:0},{provide:Fd,multi:!0,deps:[_n],useFactory:n=>{const t=n.get(Lx,Promise.resolve());let i=!1;return()=>t.then(()=>new Promise(o=>{const s=n.get(ln),a=n.get(DS);(function r(o){n.get(ln).events.pipe(yn(a=>a instanceof cs||a instanceof gf||a instanceof Vw),ie(a=>a instanceof cs||a instanceof gf&&(0===a.code||1===a.code)&&null),yn(a=>null!==a),sn(1)).subscribe(()=>{o()})})(()=>{o(!0),i=!0}),s.afterPreactivation=()=>(o(!0),i||a.closed?Q(void 0):a),s.initialNavigation()}))}}]).\u0275providers:[]]}const SS=new Y("");let ES=(()=>{class e{constructor(t,i){this._renderer=t,this._elementRef=i,this.onChange=r=>{},this.onTouched=()=>{}}setProperty(t,i){this._renderer.setProperty(this._elementRef.nativeElement,t,i)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty("disabled",t)}}return e.\u0275fac=function(t){return new(t||e)(C(ui),C(Qe))},e.\u0275dir=B({type:e}),e})(),ds=(()=>{class e extends ES{}return e.\u0275fac=function(){let n;return function(i){return(n||(n=gn(e)))(i||e)}}(),e.\u0275dir=B({type:e,features:[Le]}),e})();const lr=new Y("NgValueAccessor"),HV={provide:lr,useExisting:De(()=>Oc),multi:!0},jV=new Y("CompositionEventMode");let Oc=(()=>{class e extends ES{constructor(t,i,r){super(t,i),this._compositionMode=r,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function BV(){const e=sr()?sr().getUserAgent():"";return/android (\d+)/.test(e.toLowerCase())}())}writeValue(t){this.setProperty("value",t??"")}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}return e.\u0275fac=function(t){return new(t||e)(C(ui),C(Qe),C(jV,8))},e.\u0275dir=B({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(t,i){1&t&&K("input",function(o){return i._handleInput(o.target.value)})("blur",function(){return i.onTouched()})("compositionstart",function(){return i._compositionStart()})("compositionend",function(o){return i._compositionEnd(o.target.value)})},features:[it([HV]),Le]}),e})();const bn=new Y("NgValidators"),bo=new Y("NgAsyncValidators");function PS(e){return null!=e}function LS(e){return ql(e)?dt(e):e}function VS(e){let n={};return e.forEach(t=>{n=null!=t?{...n,...t}:n}),0===Object.keys(n).length?null:n}function HS(e,n){return n.map(t=>t(e))}function BS(e){return e.map(n=>function GV(e){return!e.validate}(n)?n:t=>n.validate(t))}function N_(e){return null!=e?function jS(e){if(!e)return null;const n=e.filter(PS);return 0==n.length?null:function(t){return VS(HS(t,n))}}(BS(e)):null}function A_(e){return null!=e?function $S(e){if(!e)return null;const n=e.filter(PS);return 0==n.length?null:function(t){return function LV(...e){const n=yr(e),{args:t,keys:i}=dw(e),r=new Ve(o=>{const{length:s}=t;if(!s)return void o.complete();const a=new Array(s);let l=s,u=s;for(let f=0;f{p||(p=!0,u--),a[f]=m},()=>l--,void 0,()=>{(!l||!p)&&(u||o.next(i?fw(i,a):a),o.complete())}))}});return n?r.pipe(qm(n)):r}(HS(t,n).map(LS)).pipe(ie(VS))}}(BS(e)):null}function US(e,n){return null===e?[n]:Array.isArray(e)?[...e,n]:[e,n]}function I_(e){return e?Array.isArray(e)?e:[e]:[]}function Of(e,n){return Array.isArray(e)?e.includes(n):e===n}function KS(e,n){const t=I_(n);return I_(e).forEach(r=>{Of(t,r)||t.push(r)}),t}function zS(e,n){return I_(n).filter(t=>!Of(e,t))}class YS{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=N_(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=A_(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n){this.control&&this.control.reset(n)}hasError(n,t){return!!this.control&&this.control.hasError(n,t)}getError(n,t){return this.control?this.control.getError(n,t):null}}class xn extends YS{get formDirective(){return null}get path(){return null}}class Do extends YS{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}let O_=(()=>{class e extends class qS{constructor(n){this._cd=n}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}}{constructor(t){super(t)}}return e.\u0275fac=function(t){return new(t||e)(C(Do,2))},e.\u0275dir=B({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(t,i){2&t&&ct("ng-untouched",i.isUntouched)("ng-touched",i.isTouched)("ng-pristine",i.isPristine)("ng-dirty",i.isDirty)("ng-valid",i.isValid)("ng-invalid",i.isInvalid)("ng-pending",i.isPending)},features:[Le]}),e})();const kc="VALID",Rf="INVALID",$a="PENDING",Rc="DISABLED";function ZS(e){return Array.isArray(e)?N_(e):e||null}function QS(e){return Array.isArray(e)?A_(e):e||null}function xf(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}function xc(e,n){(function V_(e,n){const t=function GS(e){return e._rawValidators}(e);null!==n.validator?e.setValidators(US(t,n.validator)):"function"==typeof t&&e.setValidators([t]);const i=function WS(e){return e._rawAsyncValidators}(e);null!==n.asyncValidator?e.setAsyncValidators(US(i,n.asyncValidator)):"function"==typeof i&&e.setAsyncValidators([i]);const r=()=>e.updateValueAndValidity();Lf(n._rawValidators,r),Lf(n._rawAsyncValidators,r)})(e,n),n.valueAccessor.writeValue(e.value),e.disabled&&n.valueAccessor.setDisabledState?.(!0),function eH(e,n){n.valueAccessor.registerOnChange(t=>{e._pendingValue=t,e._pendingChange=!0,e._pendingDirty=!0,"change"===e.updateOn&&nE(e,n)})}(e,n),function nH(e,n){const t=(i,r)=>{n.valueAccessor.writeValue(i),r&&n.viewToModelUpdate(i)};e.registerOnChange(t),n._registerOnDestroy(()=>{e._unregisterOnChange(t)})}(e,n),function tH(e,n){n.valueAccessor.registerOnTouched(()=>{e._pendingTouched=!0,"blur"===e.updateOn&&e._pendingChange&&nE(e,n),"submit"!==e.updateOn&&e.markAsTouched()})}(e,n),function XV(e,n){if(n.valueAccessor.setDisabledState){const t=i=>{n.valueAccessor.setDisabledState(i)};e.registerOnDisabledChange(t),n._registerOnDestroy(()=>{e._unregisterOnDisabledChange(t)})}}(e,n)}function Lf(e,n){e.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(n)})}function nE(e,n){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(e._pendingValue),e._pendingChange=!1}function sE(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)}function aE(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e}const uH={provide:Do,useExisting:De(()=>Hf)},dE=(()=>Promise.resolve())();let Hf=(()=>{class e extends Do{constructor(t,i,r,o,s){super(),this._changeDetectorRef=s,this.control=new class extends class tE{constructor(n,t){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._rawValidators=n,this._rawAsyncValidators=t,this._composedValidatorFn=ZS(this._rawValidators),this._composedAsyncValidatorFn=QS(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get valid(){return this.status===kc}get invalid(){return this.status===Rf}get pending(){return this.status==$a}get disabled(){return this.status===Rc}get enabled(){return this.status!==Rc}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._rawValidators=n,this._composedValidatorFn=ZS(n)}setAsyncValidators(n){this._rawAsyncValidators=n,this._composedAsyncValidatorFn=QS(n)}addValidators(n){this.setValidators(KS(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(KS(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(zS(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(zS(n,this._rawAsyncValidators))}hasValidator(n){return Of(this._rawValidators,n)}hasAsyncValidator(n){return Of(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){this.touched=!0,this._parent&&!n.onlySelf&&this._parent.markAsTouched(n)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(n=>n.markAllAsTouched())}markAsUntouched(n={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}markAsDirty(n={}){this.pristine=!1,this._parent&&!n.onlySelf&&this._parent.markAsDirty(n)}markAsPristine(n={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}markAsPending(n={}){this.status=$a,!1!==n.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!n.onlySelf&&this._parent.markAsPending(n)}disable(n={}){const t=this._parentMarkedDirty(n.onlySelf);this.status=Rc,this.errors=null,this._forEachChild(i=>{i.disable({...n,onlySelf:!0})}),this._updateValue(),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:t}),this._onDisabledChange.forEach(i=>i(!0))}enable(n={}){const t=this._parentMarkedDirty(n.onlySelf);this.status=kc,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:t}),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===kc||this.status===$a)&&this._runAsyncValidator(n.emitEvent)),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity(n)}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Rc:kc}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n){if(this.asyncValidator){this.status=$a,this._hasOwnPendingAsyncValidator=!0;const t=LS(this.asyncValidator(this));this._asyncValidationSubscription=t.subscribe(i=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(i,{emitEvent:n})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(n,t={}){this.errors=n,this._updateControlsErrors(!1!==t.emitEvent)}get(n){let t=n;return null==t||(Array.isArray(t)||(t=t.split(".")),0===t.length)?null:t.reduce((i,r)=>i&&i._find(r),this)}getError(n,t){const i=t?this.get(t):this;return i&&i.errors?i.errors[n]:null}hasError(n,t){return!!this.getError(n,t)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(n)}_initObservables(){this.valueChanges=new de,this.statusChanges=new de}_calculateStatus(){return this._allControlsDisabled()?Rc:this.errors?Rf:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus($a)?$a:this._anyControlsHaveStatus(Rf)?Rf:kc}_anyControlsHaveStatus(n){return this._anyControls(t=>t.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n={}){this.pristine=!this._anyControlsDirty(),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}_updateTouched(n={}){this.touched=this._anyControlsTouched(),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){xf(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(n){return null}}{constructor(n=null,t,i){super(function F_(e){return(xf(e)?e.validators:e)||null}(t),function P_(e,n){return(xf(n)?n.asyncValidators:e)||null}(i,t)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),xf(t)&&(t.nonNullable||t.initialValueIsDefault)&&(this.defaultValue=aE(n)?n.value:n)}setValue(n,t={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==t.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==t.emitViewToModelChange)),this.updateValueAndValidity(t)}patchValue(n,t={}){this.setValue(n,t)}reset(n=this.defaultValue,t={}){this._applyFormState(n),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){sE(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){sE(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(n){aE(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}},this._registered=!1,this.update=new de,this._parent=t,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=function B_(e,n){if(!n)return null;let t,i,r;return Array.isArray(n),n.forEach(o=>{o.constructor===Oc?t=o:function oH(e){return Object.getPrototypeOf(e.constructor)===ds}(o)?i=o:r=o}),r||i||t||null}(0,o)}ngOnChanges(t){if(this._checkForErrors(),!this._registered||"name"in t){if(this._registered&&(this._checkName(),this.formDirective)){const i=t.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in t&&this._updateDisabled(t),function H_(e,n){if(!e.hasOwnProperty("model"))return!1;const t=e.model;return!!t.isFirstChange()||!Object.is(n,t.currentValue)}(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){xc(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(t){dE.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){const i=t.isDisabled.currentValue,r=0!==i&&function Lr(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}(i);dE.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?function Ff(e,n){return[...n.path,e]}(t,this._parent):[t]}}return e.\u0275fac=function(t){return new(t||e)(C(xn,9),C(bn,10),C(bo,10),C(lr,10),C(Pr,8))},e.\u0275dir=B({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[it([uH]),Le,Wt]}),e})();const fH={provide:lr,useExisting:De(()=>$_),multi:!0};let $_=(()=>{class e extends ds{writeValue(t){this.setProperty("value",t??"")}registerOnChange(t){this.onChange=i=>{t(""==i?null:parseFloat(i))}}}return e.\u0275fac=function(){let n;return function(i){return(n||(n=gn(e)))(i||e)}}(),e.\u0275dir=B({type:e,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(t,i){1&t&&K("input",function(o){return i.onChange(o.target.value)})("blur",function(){return i.onTouched()})},features:[it([fH]),Le]}),e})(),fE=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({}),e})(),FH=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[fE]}),e})(),IE=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[FH]}),e})();const OE=new Y("ngx-mask config"),kE=new Y("new ngx-mask config"),RE=new Y("initial ngx-mask config"),LH={suffix:"",prefix:"",thousandSeparator:" ",decimalMarker:[".",","],clearIfNotMatch:!1,showTemplate:!1,showMaskTyped:!1,placeHolderCharacter:"_",dropSpecialCharacters:!0,hiddenInput:void 0,shownMaskExpression:"",separatorLimit:"",allowNegativeNumbers:!1,validation:!0,specialCharacters:["-","/","(",")",".",":"," ","+",",","@","[","]",'"',"'"],leadZeroDateTime:!1,triggerOnMaskChange:!1,maskFilled:new de,patterns:{0:{pattern:new RegExp("\\d")},9:{pattern:new RegExp("\\d"),optional:!0},X:{pattern:new RegExp("\\d"),symbol:"*"},A:{pattern:new RegExp("[a-zA-Z0-9]")},S:{pattern:new RegExp("[a-zA-Z]")},U:{pattern:new RegExp("[A-Z]")},L:{pattern:new RegExp("[a-z]")},d:{pattern:new RegExp("\\d")},m:{pattern:new RegExp("\\d")},M:{pattern:new RegExp("\\d")},H:{pattern:new RegExp("\\d")},h:{pattern:new RegExp("\\d")},s:{pattern:new RegExp("\\d")}}};let VH=(()=>{class e{constructor(t){this._config=t,this.maskExpression="",this.actualValue="",this.shownMaskExpression="",this._formatWithSeparators=(i,r,o,s)=>{let a=[],l="";if(Array.isArray(o)){const v=new RegExp(o.map(y=>"[\\^$.|?*+()".indexOf(y)>=0?`\\${y}`:y).join("|"));a=i.split(v),l=i.match(v)?.[0]??""}else a=i.split(o),l=o;const u=a.length>1?`${l}${a[1]}`:"";let f=a[0]??"";const p=this.separatorLimit.replace(/\s/g,"");p&&+p&&(f="-"===f[0]?`-${f.slice(1,f.length).slice(0,p.length)}`:f.slice(0,p.length));const m=/(\d+)(\d{3})/;for(;r&&m.test(f);)f=f.replace(m,"$1"+r+"$2");return void 0===s?f+u:0===s?f:f+u.substring(0,s+1)},this.percentage=i=>Number(i)>=0&&Number(i)<=100,this.getPrecision=i=>{const r=i.split(".");return r.length>1?Number(r[r.length-1]):1/0},this.checkAndRemoveSuffix=i=>{for(let r=this.suffix?.length-1;r>=0;r--){const o=this.suffix.substring(r,this.suffix?.length);if(i.includes(o)&&r!==this.suffix?.length-1&&(r-1<0||!i.includes(this.suffix.substring(r-1,this.suffix?.length))))return i.replace(o,"")}return i},this.checkInputPrecision=(i,r,o)=>{if(r<1/0){if(Array.isArray(o)){const u=o.find(f=>f!==this.thousandSeparator);o=u||o[0]}const s=new RegExp(this._charToRegExpExpression(o)+`\\d{${r}}.*$`),l=(i.match(s)??[])[0]?.length??0;l-1>r&&(i=i.substring(0,i.length-(l-1-r))),0===r&&this._compareOrIncludes(i[i.length-1],o,this.thousandSeparator)&&(i=i.substring(0,i.length-1))}return i},this._shift=new Set,this.clearIfNotMatch=this._config.clearIfNotMatch,this.dropSpecialCharacters=this._config.dropSpecialCharacters,this.maskSpecialCharacters=this._config.specialCharacters,this.maskAvailablePatterns=this._config.patterns,this.prefix=this._config.prefix,this.suffix=this._config.suffix,this.thousandSeparator=this._config.thousandSeparator,this.decimalMarker=this._config.decimalMarker,this.hiddenInput=this._config.hiddenInput,this.showMaskTyped=this._config.showMaskTyped,this.placeHolderCharacter=this._config.placeHolderCharacter,this.validation=this._config.validation,this.separatorLimit=this._config.separatorLimit,this.allowNegativeNumbers=this._config.allowNegativeNumbers,this.leadZeroDateTime=this._config.leadZeroDateTime}applyMaskWithPattern(t,i){const[r,o]=i;return this.customPattern=o,this.applyMask(t,r)}applyMask(t,i,r=0,o=!1,s=!1,a=(()=>{})){if(!i||"string"!=typeof t)return"";let l=0,u="",f=!1,p=!1,m=1,v=!1;t.slice(0,this.prefix.length)===this.prefix&&(t=t.slice(this.prefix.length,t.length)),this.suffix&&t?.length>0&&(t=this.checkAndRemoveSuffix(t));const y=t.toString().split("");if("IP"===i){const A=t.split(".");this.ipError=this._validIP(A),i="099.099.099.099"}const D=[];for(let A=0;A11?"00.000.000/0000-00":"000.000.000-00"),i.startsWith("percent")){if(t.match("[a-z]|[A-Z]")||t.match(/[-!$%^&*()_+|~=`{}\[\]:";'<>?,\/.]/)){t=this._stripToDecimal(t);const A=this.getPrecision(i);t=this.checkInputPrecision(t,A,this.decimalMarker)}t.indexOf(".")>0&&!this.percentage(t.substring(0,t.indexOf(".")))&&(t=`${t.substring(0,t.indexOf(".")-1)}${t.substring(t.indexOf("."),t.length)}`),u=this.percentage(t)?t:t.substring(0,t.length-1)}else if(i.startsWith("separator")){(t.match("[w\u0430-\u044f\u0410-\u042f]")||t.match("[\u0401\u0451\u0410-\u044f]")||t.match("[a-z]|[A-Z]")||t.match(/[-@#!$%\\^&*()_\xa3\xac'+|~=`{}\]:";<>.?/]/)||t.match("[^A-Za-z0-9,]"))&&(t=this._stripToDecimal(t)),t=t.length>1&&"0"===t[0]&&t[1]!==this.thousandSeparator&&!this._compareOrIncludes(t[1],this.decimalMarker,this.thousandSeparator)&&!s?t.slice(0,t.length-1):t,s&&(t=this._compareOrIncludes(t[t.length-1],this.decimalMarker,this.thousandSeparator)?t.slice(0,t.length-1):t);const A=this._charToRegExpExpression(this.thousandSeparator);let R='@#!$%^&*()_+|~=`{}\\[\\]:\\s,\\.";<>?\\/'.replace(A,"");if(Array.isArray(this.decimalMarker))for(const We of this.decimalMarker)R=R.replace(this._charToRegExpExpression(We),"");else R=R.replace(this._charToRegExpExpression(this.decimalMarker),"");const W=new RegExp("["+R+"]");(t.match(W)||1===t.length&&this._compareOrIncludes(t,this.decimalMarker,this.thousandSeparator))&&(t=t.substring(0,t.length-1));const ve=this.getPrecision(i),Te=(t=this.checkInputPrecision(t,ve,this.decimalMarker)).replace(new RegExp(A,"g"),"");u=this._formatWithSeparators(Te,this.thousandSeparator,this.decimalMarker,ve);const et=u.indexOf(",")-t.indexOf(","),Fe=u.length-t.length;if(Fe>0&&","!==u[r]){p=!0;let We=0;do{this._shift.add(r+We),We++}while(We0&&!(u.indexOf(",")>=r&&r>3)||!(u.indexOf(".")>=r&&r>3)&&Fe<=0?(this._shift.clear(),p=!0,m=Fe,this._shift.add(r+=Fe)):this._shift.clear()}else for(let A=0,R=y[0];A2){l+=1,this._shiftStep(i,l,y.length),A--,this.leadZeroDateTime&&(u+="0");continue}if("h"===i[l]&&"2"===u&&Number(R)>3){l+=1,A--;continue}if("m"===i[l]&&Number(R)>5){l+=1,this._shiftStep(i,l,y.length),A--,this.leadZeroDateTime&&(u+="0");continue}if("s"===i[l]&&Number(R)>5){l+=1,this._shiftStep(i,l,y.length),A--,this.leadZeroDateTime&&(u+="0");continue}const W=31;if("d"===i[l]&&(Number(R)>3&&this.leadZeroDateTime||Number(t.slice(l,l+2))>W||"/"===t[l+1])){l+=1,this._shiftStep(i,l,y.length),A--,this.leadZeroDateTime&&(u+="0");continue}if("M"===i[l]){const Te=0===l&&(Number(R)>2||Number(t.slice(l,l+2))>12||"/"===t[l+1]),et=t.slice(l-3,l-1).includes("/")&&("/"===t[l-2]&&Number(t.slice(l-1,l+1))>12&&"/"!==t[l]||"/"===t[l]||"/"===t[l-3]&&Number(t.slice(l-2,l))>12&&"/"!==t[l-1]||"/"===t[l-1]),Fe=Number(t.slice(l-3,l-1))<=W&&!t.slice(l-3,l-1).includes("/")&&"/"===t[l-1]&&(Number(t.slice(l,l+2))>12||"/"===t[l+1]),We=Number(t.slice(l-3,l-1))>W&&!t.slice(l-3,l-1).includes("/")&&!t.slice(l-2,l).includes("/")&&Number(t.slice(l-2,l))>12,cn=Number(t.slice(l-3,l-1))<=W&&!t.slice(l-3,l-1).includes("/")&&"/"!==t[l-1]&&Number(t.slice(l-1,l+1))>12;if(Number(R)>1&&this.leadZeroDateTime||Te||et||Fe||We||cn){l+=1,this._shiftStep(i,l,y.length),A--,this.leadZeroDateTime&&(u+="0");continue}}u+=R,l++}else" "===R&&" "===i[l]?(u+=R,l++):-1!==this.maskSpecialCharacters.indexOf(i[l]??"")?(u+=i[l],l++,this._shiftStep(i,l,y.length),A--):this.maskSpecialCharacters.indexOf(R)>-1&&this.maskAvailablePatterns[i[l]??""]&&this.maskAvailablePatterns[i[l]??""]?.optional?(!!y[l]&&"099.099.099.099"!==i&&"000.000.000-00"!==i&&"00.000.000/0000-00"!==i&&!i.match(/^9+\.0+$/)&&(u+=y[l]),l++,A--):"*"===this.maskExpression[l+1]&&this._findSpecialChar(this.maskExpression[l+2]??"")&&this._findSpecialChar(R)===this.maskExpression[l+2]&&f||"?"===this.maskExpression[l+1]&&this._findSpecialChar(this.maskExpression[l+2]??"")&&this._findSpecialChar(R)===this.maskExpression[l+2]&&f?(l+=3,u+=R):this.showMaskTyped&&this.maskSpecialCharacters.indexOf(R)<0&&R!==this.placeHolderCharacter&&(v=!0);u.length+1===i.length&&-1!==this.maskSpecialCharacters.indexOf(i[i.length-1]??"")&&(u+=i[i.length-1]);let w=r+1;for(;this._shift.has(w);)m++,w++;let S=o&&!i.startsWith("separator")?l:this._shift.has(r)?m:0;v&&S--,a(S,p),m<0&&this._shift.clear();let O=!1;s&&(O=y.every(A=>this.maskSpecialCharacters.includes(A)));let E=`${this.prefix}${O?"":u}${this.suffix}`;return 0===u.length&&(E=`${this.prefix}${u}`),E}_findSpecialChar(t){return this.maskSpecialCharacters.find(i=>i===t)}_checkSymbolMask(t,i){return this.maskAvailablePatterns=this.customPattern?this.customPattern:this.maskAvailablePatterns,(this.maskAvailablePatterns[i]?.pattern&&this.maskAvailablePatterns[i]?.pattern.test(t))??!1}_stripToDecimal(t){return t.split("").filter((i,r)=>{const o="string"==typeof this.decimalMarker?i===this.decimalMarker:this.decimalMarker.includes(i);return i.match("^-?\\d")||i===this.thousandSeparator||o||"-"===i&&0===r&&this.allowNegativeNumbers}).join("")}_charToRegExpExpression(t){return t&&(" "===t?"\\s":"[\\^$.|?*+()".indexOf(t)>=0?`\\${t}`:t)}_shiftStep(t,i,r){const o=/[*?]/g.test(t.slice(0,i))?r:i;this._shift.add(o+this.prefix.length||0)}_compareOrIncludes(t,i,r){return Array.isArray(i)?i.filter(o=>o!==r).includes(t):t===i}_validIP(t){return!(4===t.length&&!t.some((i,r)=>t.length!==r+1?""===i||Number(i)>255:""===i||Number(i.substring(0,3))>255))}}return e.\u0275fac=function(t){return new(t||e)(L(OE))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();function HH(e,n){return n instanceof Function?{...e,...n()}:{...e,...n}}let BH=(()=>{class e{static forRoot(t){return{ngModule:e,providers:[{provide:kE,useValue:t},{provide:RE,useValue:LH},{provide:OE,useFactory:HH,deps:[RE,kE]},VH]}}static forChild(){return{ngModule:e}}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({}),e})();const xE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};xE.KeyboardEvent||(xE.KeyboardEvent=function(e,n){});let FE=(()=>{class e{constructor(t,i){this.document=t,this.platformId=i,this.documentIsAccessible=function BC(e){return e===HC}(this.platformId)}static getCookieRegExp(t){const i=t.replace(/([\[\]\{\}\(\)\|\=\;\+\?\,\.\*\^\$])/gi,"\\$1");return new RegExp("(?:^"+i+"|;\\s*"+i+")=(.*?)(?:;|$)","g")}static safeDecodeURIComponent(t){try{return decodeURIComponent(t)}catch{return t}}check(t){return!!this.documentIsAccessible&&(t=encodeURIComponent(t),e.getCookieRegExp(t).test(this.document.cookie))}get(t){if(this.documentIsAccessible&&this.check(t)){t=encodeURIComponent(t);const r=e.getCookieRegExp(t).exec(this.document.cookie);return r[1]?e.safeDecodeURIComponent(r[1]):""}return""}getAll(){if(!this.documentIsAccessible)return{};const t={},i=this.document;return i.cookie&&""!==i.cookie&&i.cookie.split(";").forEach(r=>{const[o,s]=r.split("=");t[e.safeDecodeURIComponent(o.replace(/^ /,""))]=e.safeDecodeURIComponent(s)}),t}set(t,i,r,o,s,a,l){if(!this.documentIsAccessible)return;if("number"==typeof r||r instanceof Date||o||s||a||l)return void this.set(t,i,{expires:r,path:o,domain:s,secure:a,sameSite:l||"Lax"});let u=encodeURIComponent(t)+"="+encodeURIComponent(i)+";";const f=r||{};f.expires&&(u+="number"==typeof f.expires?"expires="+new Date((new Date).getTime()+1e3*f.expires*60*60*24).toUTCString()+";":"expires="+f.expires.toUTCString()+";"),f.path&&(u+="path="+f.path+";"),f.domain&&(u+="domain="+f.domain+";"),!1===f.secure&&"None"===f.sameSite&&(f.secure=!0,console.warn(`[ngx-cookie-service] Cookie ${t} was forced with secure flag because sameSite=None.More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`)),f.secure&&(u+="secure;"),f.sameSite||(f.sameSite="Lax"),u+="sameSite="+f.sameSite+";",this.document.cookie=u}delete(t,i,r,o,s="Lax"){if(!this.documentIsAccessible)return;const a=new Date("Thu, 01 Jan 1970 00:00:01 GMT");this.set(t,"",{expires:a,path:i,domain:r,secure:o,sameSite:s})}deleteAll(t,i,r,o="Lax"){if(!this.documentIsAccessible)return;const s=this.getAll();for(const a in s)s.hasOwnProperty(a)&&this.delete(a,t,i,r,o)}}return e.\u0275fac=function(t){return new(t||e)(L(mt),L(ac))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const jH=[];let $H=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Af.forRoot(jH),Af]}),e})(),UH=(()=>{class e{constructor(){this.title="dashboard"}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275cmp=lt({type:e,selectors:[["app-root"]],decls:1,vars:0,template:function(t,i){1&t&&Ri(0,"router-outlet")},dependencies:[h_],encapsulation:2}),e})();const GH=["addListener","removeListener"],WH=["addEventListener","removeEventListener"],KH=["on","off"];function Fn(e,n,t,i){if(be(t)&&(i=t,t=void 0),i)return Fn(e,n,t).pipe(qm(i));const[r,o]=function qH(e){return be(e.addEventListener)&&be(e.removeEventListener)}(e)?WH.map(s=>a=>e[s](n,a,t)):function zH(e){return be(e.addListener)&&be(e.removeListener)}(e)?GH.map(PE(e,n)):function YH(e){return be(e.on)&&be(e.off)}(e)?KH.map(PE(e,n)):[];if(!r&&Yr(e))return ke(s=>Fn(s,n,t))(Et(e));if(!r)throw new TypeError("Invalid event target");return new Ve(s=>{const a=(...l)=>s.next(1o(a)})}function PE(e,n){return t=>i=>e[t](n,i)}class JH extends _t{constructor(n,t){super()}schedule(n,t=0){return this}}const Bf={setInterval(e,n,...t){const{delegate:i}=Bf;return i?.setInterval?i.setInterval(e,n,...t):setInterval(e,n,...t)},clearInterval(e){const{delegate:n}=Bf;return(n?.clearInterval||clearInterval)(e)},delegate:void 0},LE={now:()=>(LE.delegate||Date).now(),delegate:void 0};class Pc{constructor(n,t=Pc.now){this.schedulerActionCtor=n,this.now=t}schedule(n,t=0,i){return new this.schedulerActionCtor(this,n).schedule(i,t)}}Pc.now=LE.now;const jf=new class QH extends Pc{constructor(n,t=Pc.now){super(n,t),this.actions=[],this._active=!1}flush(n){const{actions:t}=this;if(this._active)return void t.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=t.shift());if(this._active=!1,i){for(;n=t.shift();)n.unsubscribe();throw i}}}(class ZH extends JH{constructor(n,t){super(n,t),this.scheduler=n,this.work=t,this.pending=!1}schedule(n,t=0){var i;if(this.closed)return this;this.state=n;const r=this.id,o=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(o,r,t)),this.pending=!0,this.delay=t,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(o,this.id,t),this}requestAsyncId(n,t,i=0){return Bf.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,t,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return t;null!=t&&Bf.clearInterval(t)}execute(n,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,t);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,t){let r,i=!1;try{this.work(n)}catch(o){i=!0,r=o||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),r}unsubscribe(){if(!this.closed){const{id:n,scheduler:t}=this,{actions:i}=t;this.work=this.state=this.scheduler=null,this.pending=!1,dn(i,this),null!=n&&(this.id=this.recycleAsyncId(t,n,null)),this.delay=null,super.unsubscribe()}}}),XH=jf;function Lc(e=0,n,t=XH){let i=-1;return null!=n&&(gu(n)?t=n:i=n),new Ve(r=>{let o=function eB(e){return e instanceof Date&&!isNaN(e)}(e)?+e-t.now():e;o<0&&(o=0);let s=0;return t.schedule(function(){r.closed||(r.next(s++),0<=i?this.schedule(void 0,i):r.complete())},o)})}const{isArray:tB}=Array;function VE(e){return 1===e.length&&tB(e[0])?e[0]:e}function $f(...e){const n=yr(e),t=VE(e);return t.length?new Ve(i=>{let r=t.map(()=>[]),o=t.map(()=>!1);i.add(()=>{r=o=null});for(let s=0;!i.closed&&s{if(r[s].push(a),r.every(l=>l.length)){const l=r.map(u=>u.shift());i.next(n?n(...l):l),r.some((u,f)=>!u.length&&o[f])&&i.complete()}},()=>{o[s]=!0,!r[s].length&&i.complete()}));return()=>{r=o=null}}):Ft}function Ht(e){return qe((n,t)=>{Et(e).subscribe(Oe(t,()=>t.complete(),Cn)),!t.closed&&n.subscribe(t)})}function J_(...e){const n=yr(e);return qe((t,i)=>{const r=e.length,o=new Array(r);let s=e.map(()=>!1),a=!1;for(let l=0;l{o[l]=u,!a&&!s[l]&&(s[l]=!0,(a=s.every(Pn))&&(s=null))},Cn));t.subscribe(Oe(i,l=>{if(a){const u=[l,...o];i.next(n?n(...u):u)}}))})}function vj(e,n){if(1&e){const t=It();M(0,"button",1),K("click",function(){return nt(t),ht(z().close())}),N()}}new Ve(Cn),Math,Math,Math;const rM=["*"],Pj=["dialog"];function lv(e){return"string"==typeof e}function gs(e){return null!=e}function za(e){return(e||document.body).getBoundingClientRect()}const sM={animation:!0,transitionTimerDelayMs:5},I$=()=>{},{transitionTimerDelayMs:O$}=sM,Gc=new Map,Dn=(e,n,t,i)=>{let r=i.context||{};const o=Gc.get(n);if(o)switch(i.runningTransition){case"continue":return Ft;case"stop":e.run(()=>o.transition$.complete()),r=Object.assign(o.context,r),Gc.delete(n)}const s=t(n,i.animation,r)||I$;if(!i.animation||"none"===window.getComputedStyle(n).transitionProperty)return e.run(()=>s()),Q(void 0).pipe(function N$(e){return n=>new Ve(t=>n.subscribe({next:s=>e.run(()=>t.next(s)),error:s=>e.run(()=>t.error(s)),complete:()=>e.run(()=>t.complete())}))}(e));const a=new je,l=new je,u=a.pipe(function iB(...e){return n=>_c(n,Q(...e))}(!0));Gc.set(n,{transition$:a,complete:()=>{l.next(),l.complete()},context:r});const f=function A$(e){const{transitionDelay:n,transitionDuration:t}=window.getComputedStyle(e);return 1e3*(parseFloat(n)+parseFloat(t))}(n);return e.runOutsideAngular(()=>{const p=Fn(n,"transitionend").pipe(Ht(u),yn(({target:v})=>v===n));(function HE(...e){return 1===(e=VE(e)).length?Et(e[0]):new Ve(function nB(e){return n=>{let t=[];for(let i=0;t&&!n.closed&&i{if(t){for(let o=0;o{Gc.delete(n),e.run(()=>{s(),a.next(),a.complete()})})}),a.asObservable()};let Wc=(()=>{class e{constructor(){this.animation=sM.animation}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),fM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})();const L$=({classList:e})=>{e.remove("show")};let V$=(()=>{class e{constructor(t){this._ngbConfig=t,this.dismissible=!0,this.type="warning"}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(t){this._animation=t}}return e.\u0275fac=function(t){return new(t||e)(L(Wc))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),H$=(()=>{class e{constructor(t,i,r,o){this._renderer=i,this._element=r,this._zone=o,this.closed=new de,this.dismissible=t.dismissible,this.type=t.type,this.animation=t.animation}close(){const t=Dn(this._zone,this._element.nativeElement,L$,{animation:this.animation,runningTransition:"continue"});return t.subscribe(()=>this.closed.emit()),t}ngOnChanges(t){const i=t.type;i&&!i.firstChange&&(this._renderer.removeClass(this._element.nativeElement,`alert-${i.previousValue}`),this._renderer.addClass(this._element.nativeElement,`alert-${i.currentValue}`))}ngOnInit(){this._renderer.addClass(this._element.nativeElement,`alert-${this.type}`)}}return e.\u0275fac=function(t){return new(t||e)(C(V$),C(ui),C(Qe),C(Ye))},e.\u0275cmp=lt({type:e,selectors:[["ngb-alert"]],hostAttrs:["role","alert",1,"alert","show"],hostVars:4,hostBindings:function(t,i){2&t&&ct("fade",i.animation)("alert-dismissible",i.dismissible)},inputs:{animation:"animation",dismissible:"dismissible",type:"type"},outputs:{closed:"closed"},exportAs:["ngbAlert"],features:[Wt],ngContentSelectors:rM,decls:2,vars:1,consts:function(){let n;return n=$localize`:@@ngb.alert.close:Close`,[["type","button","class","btn-close","aria-label",n,3,"click",4,"ngIf"],["type","button","aria-label",n,1,"btn-close",3,"click"]]},template:function(t,i){1&t&&(Lg(),Vg(0),Z(1,vj,1,0,"button",0)),2&t&&(P(1),X("ngIf",i.dismissible))},dependencies:[os],styles:["ngb-alert{display:block}\n"],encapsulation:2,changeDetection:0}),e})(),hM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),mM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),_M=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({}),e})();var Bt=(()=>{return(e=Bt||(Bt={}))[e.Tab=9]="Tab",e[e.Enter=13]="Enter",e[e.Escape=27]="Escape",e[e.Space=32]="Space",e[e.PageUp=33]="PageUp",e[e.PageDown=34]="PageDown",e[e.End=35]="End",e[e.Home=36]="Home",e[e.ArrowLeft=37]="ArrowLeft",e[e.ArrowUp=38]="ArrowUp",e[e.ArrowRight=39]="ArrowRight",e[e.ArrowDown=40]="ArrowDown",Bt;var e})();typeof navigator<"u"&&navigator.userAgent&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||/Macintosh/.test(navigator.userAgent)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2||/Android/.test(navigator.userAgent));const yM=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","[contenteditable]",'[tabindex]:not([tabindex="-1"])'].join(", ");function bM(e){const n=Array.from(e.querySelectorAll(yM)).filter(t=>-1!==t.tabIndex);return[n[0],n[n.length-1]]}new Date(1882,10,12),new Date(2174,10,25);let NM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn,IE]}),e})(),gv=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275dir=B({type:e,selectors:[["",8,"navbar"]]}),e})(),OM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({}),e})();class ys{constructor(n,t,i){this.nodes=n,this.viewRef=t,this.componentRef=i}}let S3=(()=>{class e{constructor(t,i){this._el=t,this._zone=i}ngOnInit(){this._zone.onStable.asObservable().pipe(sn(1)).subscribe(()=>{Dn(this._zone,this._el.nativeElement,(t,i)=>{i&&za(t),t.classList.add("show")},{animation:this.animation,runningTransition:"continue"})})}hide(){return Dn(this._zone,this._el.nativeElement,({classList:t})=>t.remove("show"),{animation:this.animation,runningTransition:"stop"})}}return e.\u0275fac=function(t){return new(t||e)(C(Qe),C(Ye))},e.\u0275cmp=lt({type:e,selectors:[["ngb-modal-backdrop"]],hostAttrs:[2,"z-index","1055"],hostVars:6,hostBindings:function(t,i){2&t&&(es("modal-backdrop"+(i.backdropClass?" "+i.backdropClass:"")),ct("show",!i.animation)("fade",i.animation))},inputs:{animation:"animation",backdropClass:"backdropClass"},decls:0,vars:0,template:function(t,i){},encapsulation:2}),e})();class fr{close(n){}dismiss(n){}}class E3{constructor(n,t,i,r){this._windowCmptRef=n,this._contentRef=t,this._backdropCmptRef=i,this._beforeDismiss=r,this._closed=new je,this._dismissed=new je,this._hidden=new je,n.instance.dismissEvent.subscribe(o=>{this.dismiss(o)}),this.result=new Promise((o,s)=>{this._resolve=o,this._reject=s}),this.result.then(null,()=>{})}get componentInstance(){if(this._contentRef&&this._contentRef.componentRef)return this._contentRef.componentRef.instance}get closed(){return this._closed.asObservable().pipe(Ht(this._hidden))}get dismissed(){return this._dismissed.asObservable().pipe(Ht(this._hidden))}get hidden(){return this._hidden.asObservable()}get shown(){return this._windowCmptRef.instance.shown.asObservable()}close(n){this._windowCmptRef&&(this._closed.next(n),this._resolve(n),this._removeModalElements())}_dismiss(n){this._dismissed.next(n),this._reject(n),this._removeModalElements()}dismiss(n){if(this._windowCmptRef)if(this._beforeDismiss){const t=this._beforeDismiss();!function oM(e){return e&&e.then}(t)?!1!==t&&this._dismiss(n):t.then(i=>{!1!==i&&this._dismiss(n)},()=>{})}else this._dismiss(n)}_removeModalElements(){const n=this._windowCmptRef.instance.hide(),t=this._backdropCmptRef?this._backdropCmptRef.instance.hide():Q(void 0);n.subscribe(()=>{const{nativeElement:i}=this._windowCmptRef.location;i.parentNode.removeChild(i),this._windowCmptRef.destroy(),this._contentRef&&this._contentRef.viewRef&&this._contentRef.viewRef.destroy(),this._windowCmptRef=null,this._contentRef=null}),t.subscribe(()=>{if(this._backdropCmptRef){const{nativeElement:i}=this._backdropCmptRef.location;i.parentNode.removeChild(i),this._backdropCmptRef.destroy(),this._backdropCmptRef=null}}),$f(n,t).subscribe(()=>{this._hidden.next(),this._hidden.complete()})}}var qc=(()=>{return(e=qc||(qc={}))[e.BACKDROP_CLICK=0]="BACKDROP_CLICK",e[e.ESC=1]="ESC",qc;var e})();let M3=(()=>{class e{constructor(t,i,r){this._document=t,this._elRef=i,this._zone=r,this._closed$=new je,this._elWithFocus=null,this.backdrop=!0,this.keyboard=!0,this.dismissEvent=new de,this.shown=new je,this.hidden=new je}get fullscreenClass(){return!0===this.fullscreen?" modal-fullscreen":lv(this.fullscreen)?` modal-fullscreen-${this.fullscreen}-down`:""}dismiss(t){this.dismissEvent.emit(t)}ngOnInit(){this._elWithFocus=this._document.activeElement,this._zone.onStable.asObservable().pipe(sn(1)).subscribe(()=>{this._show()})}ngOnDestroy(){this._disableEventHandling()}hide(){const{nativeElement:t}=this._elRef,i={animation:this.animation,runningTransition:"stop"},s=$f(Dn(this._zone,t,()=>t.classList.remove("show"),i),Dn(this._zone,this._dialogEl.nativeElement,()=>{},i));return s.subscribe(()=>{this.hidden.next(),this.hidden.complete()}),this._disableEventHandling(),this._restoreFocus(),s}_show(){const t={animation:this.animation,runningTransition:"continue"};$f(Dn(this._zone,this._elRef.nativeElement,(o,s)=>{s&&za(o),o.classList.add("show")},t),Dn(this._zone,this._dialogEl.nativeElement,()=>{},t)).subscribe(()=>{this.shown.next(),this.shown.complete()}),this._enableEventHandling(),this._setFocus()}_enableEventHandling(){const{nativeElement:t}=this._elRef;this._zone.runOutsideAngular(()=>{Fn(t,"keydown").pipe(Ht(this._closed$),yn(r=>r.which===Bt.Escape)).subscribe(r=>{this.keyboard?requestAnimationFrame(()=>{r.defaultPrevented||this._zone.run(()=>this.dismiss(qc.ESC))}):"static"===this.backdrop&&this._bumpBackdrop()});let i=!1;Fn(this._dialogEl.nativeElement,"mousedown").pipe(Ht(this._closed$),Yt(()=>i=!1),pi(()=>Fn(t,"mouseup").pipe(Ht(this._closed$),sn(1))),yn(({target:r})=>t===r)).subscribe(()=>{i=!0}),Fn(t,"click").pipe(Ht(this._closed$)).subscribe(({target:r})=>{t===r&&("static"===this.backdrop?this._bumpBackdrop():!0===this.backdrop&&!i&&this._zone.run(()=>this.dismiss(qc.BACKDROP_CLICK))),i=!1})})}_disableEventHandling(){this._closed$.next()}_setFocus(){const{nativeElement:t}=this._elRef;if(!t.contains(document.activeElement)){const i=t.querySelector("[ngbAutofocus]"),r=bM(t)[0];(i||r||t).focus()}}_restoreFocus(){const t=this._document.body,i=this._elWithFocus;let r;r=i&&i.focus&&t.contains(i)?i:t,this._zone.runOutsideAngular(()=>{setTimeout(()=>r.focus()),this._elWithFocus=null})}_bumpBackdrop(){"static"===this.backdrop&&Dn(this._zone,this._elRef.nativeElement,({classList:t})=>(t.add("modal-static"),()=>t.remove("modal-static")),{animation:this.animation,runningTransition:"continue"})}}return e.\u0275fac=function(t){return new(t||e)(C(mt),C(Qe),C(Ye))},e.\u0275cmp=lt({type:e,selectors:[["ngb-modal-window"]],viewQuery:function(t,i){if(1&t&&kd(Pj,7),2&t){let r;ot(r=st())&&(i._dialogEl=r.first)}},hostAttrs:["role","dialog","tabindex","-1"],hostVars:7,hostBindings:function(t,i){2&t&&(ze("aria-modal",!0)("aria-labelledby",i.ariaLabelledBy)("aria-describedby",i.ariaDescribedBy),es("modal d-block"+(i.windowClass?" "+i.windowClass:"")),ct("fade",i.animation))},inputs:{animation:"animation",ariaLabelledBy:"ariaLabelledBy",ariaDescribedBy:"ariaDescribedBy",backdrop:"backdrop",centered:"centered",fullscreen:"fullscreen",keyboard:"keyboard",scrollable:"scrollable",size:"size",windowClass:"windowClass",modalDialogClass:"modalDialogClass"},outputs:{dismissEvent:"dismiss"},ngContentSelectors:rM,decls:4,vars:2,consts:[["role","document"],["dialog",""],[1,"modal-content"]],template:function(t,i){1&t&&(Lg(),M(0,"div",0,1)(2,"div",2),Vg(3),N()()),2&t&&es("modal-dialog"+(i.size?" modal-"+i.size:"")+(i.centered?" modal-dialog-centered":"")+i.fullscreenClass+(i.scrollable?" modal-dialog-scrollable":"")+(i.modalDialogClass?" "+i.modalDialogClass:""))},styles:["ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\n"],encapsulation:2}),e})(),T3=(()=>{class e{constructor(t){this._document=t}hide(){const t=Math.abs(window.innerWidth-this._document.documentElement.clientWidth),i=this._document.body,r=i.style,{overflow:o,paddingRight:s}=r;if(t>0){const a=parseFloat(window.getComputedStyle(i).paddingRight);r.paddingRight=`${a+t}px`}return r.overflow="hidden",()=>{t>0&&(r.paddingRight=s),r.overflow=o}}}return e.\u0275fac=function(t){return new(t||e)(L(mt))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),N3=(()=>{class e{constructor(t,i,r,o,s,a){this._applicationRef=t,this._injector=i,this._document=r,this._scrollBar=o,this._rendererFactory=s,this._ngZone=a,this._activeWindowCmptHasChanged=new je,this._ariaHiddenValues=new Map,this._scrollBarRestoreFn=null,this._backdropAttributes=["animation","backdropClass"],this._modalRefs=[],this._windowAttributes=["animation","ariaLabelledBy","ariaDescribedBy","backdrop","centered","fullscreen","keyboard","scrollable","size","windowClass","modalDialogClass"],this._windowCmpts=[],this._activeInstances=new de,this._activeWindowCmptHasChanged.subscribe(()=>{if(this._windowCmpts.length){const l=this._windowCmpts[this._windowCmpts.length-1];((e,n,t,i=!1)=>{this._ngZone.runOutsideAngular(()=>{const r=Fn(n,"focusin").pipe(Ht(t),ie(o=>o.target));Fn(n,"keydown").pipe(Ht(t),yn(o=>o.which===Bt.Tab),J_(r)).subscribe(([o,s])=>{const[a,l]=bM(n);(s===a||s===n)&&o.shiftKey&&(l.focus(),o.preventDefault()),s===l&&!o.shiftKey&&(a.focus(),o.preventDefault())}),i&&Fn(n,"click").pipe(Ht(t),J_(r),ie(o=>o[1])).subscribe(o=>o.focus())})})(0,l.location.nativeElement,this._activeWindowCmptHasChanged),this._revertAriaHidden(),this._setAriaHidden(l.location.nativeElement)}})}_restoreScrollBar(){const t=this._scrollBarRestoreFn;t&&(this._scrollBarRestoreFn=null,t())}_hideScrollBar(){this._scrollBarRestoreFn||(this._scrollBarRestoreFn=this._scrollBar.hide())}open(t,i,r){const o=r.container instanceof HTMLElement?r.container:gs(r.container)?this._document.querySelector(r.container):this._document.body,s=this._rendererFactory.createRenderer(null,null);if(!o)throw new Error(`The specified modal container "${r.container||"body"}" was not found in the DOM.`);this._hideScrollBar();const a=new fr,l=this._getContentRef(r.injector||t,i,a,r);let u=!1!==r.backdrop?this._attachBackdrop(o):void 0,f=this._attachWindowComponent(o,l.nodes),p=new E3(f,l,u,r.beforeDismiss);return this._registerModalRef(p),this._registerWindowCmpt(f),p.hidden.pipe(sn(1)).subscribe(()=>Promise.resolve(!0).then(()=>{this._modalRefs.length||(s.removeClass(this._document.body,"modal-open"),this._restoreScrollBar(),this._revertAriaHidden())})),a.close=m=>{p.close(m)},a.dismiss=m=>{p.dismiss(m)},this._applyWindowOptions(f.instance,r),1===this._modalRefs.length&&s.addClass(this._document.body,"modal-open"),u&&u.instance&&(this._applyBackdropOptions(u.instance,r),u.changeDetectorRef.detectChanges()),f.changeDetectorRef.detectChanges(),p}get activeInstances(){return this._activeInstances}dismissAll(t){this._modalRefs.forEach(i=>i.dismiss(t))}hasOpenModals(){return this._modalRefs.length>0}_attachBackdrop(t){let i=wm(S3,{environmentInjector:this._applicationRef.injector,elementInjector:this._injector});return this._applicationRef.attachView(i.hostView),t.appendChild(i.location.nativeElement),i}_attachWindowComponent(t,i){let r=wm(M3,{environmentInjector:this._applicationRef.injector,elementInjector:this._injector,projectableNodes:i});return this._applicationRef.attachView(r.hostView),t.appendChild(r.location.nativeElement),r}_applyWindowOptions(t,i){this._windowAttributes.forEach(r=>{gs(i[r])&&(t[r]=i[r])})}_applyBackdropOptions(t,i){this._backdropAttributes.forEach(r=>{gs(i[r])&&(t[r]=i[r])})}_getContentRef(t,i,r,o){return i?i instanceof gt?this._createFromTemplateRef(i,r):lv(i)?this._createFromString(i):this._createFromComponent(t,i,r,o):new ys([])}_createFromTemplateRef(t,i){const o=t.createEmbeddedView({$implicit:i,close(s){i.close(s)},dismiss(s){i.dismiss(s)}});return this._applicationRef.attachView(o),new ys([o.rootNodes],o)}_createFromString(t){const i=this._document.createTextNode(`${t}`);return new ys([[i]])}_createFromComponent(t,i,r,o){const s=_n.create({providers:[{provide:fr,useValue:r}],parent:t}),a=wm(i,{environmentInjector:this._applicationRef.injector,elementInjector:s}),l=a.location.nativeElement;return o.scrollable&&l.classList.add("component-host-scrollable"),this._applicationRef.attachView(a.hostView),new ys([[l]],a.hostView,a)}_setAriaHidden(t){const i=t.parentElement;i&&t!==this._document.body&&(Array.from(i.children).forEach(r=>{r!==t&&"SCRIPT"!==r.nodeName&&(this._ariaHiddenValues.set(r,r.getAttribute("aria-hidden")),r.setAttribute("aria-hidden","true"))}),this._setAriaHidden(i))}_revertAriaHidden(){this._ariaHiddenValues.forEach((t,i)=>{t?i.setAttribute("aria-hidden",t):i.removeAttribute("aria-hidden")}),this._ariaHiddenValues.clear()}_registerModalRef(t){const i=()=>{const r=this._modalRefs.indexOf(t);r>-1&&(this._modalRefs.splice(r,1),this._activeInstances.emit(this._modalRefs))};this._modalRefs.push(t),this._activeInstances.emit(this._modalRefs),t.result.then(i,i)}_registerWindowCmpt(t){this._windowCmpts.push(t),this._activeWindowCmptHasChanged.next(),t.onDestroy(()=>{const i=this._windowCmpts.indexOf(t);i>-1&&(this._windowCmpts.splice(i,1),this._activeWindowCmptHasChanged.next())})}}return e.\u0275fac=function(t){return new(t||e)(L(lc),L(_n),L(mt),L(T3),L(eg),L(Ye))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),A3=(()=>{class e{constructor(t){this._ngbConfig=t,this.backdrop=!0,this.fullscreen=!1,this.keyboard=!0}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(t){this._animation=t}}return e.\u0275fac=function(t){return new(t||e)(L(Wc))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),kM=(()=>{class e{constructor(t,i,r){this._injector=t,this._modalStack=i,this._config=r}open(t,i={}){const r={...this._config,animation:this._config.animation,...i};return this._modalStack.open(this._injector,t,r)}get activeInstances(){return this._modalStack.activeInstances}dismissAll(t){this._modalStack.dismissAll(t)}hasOpenModals(){return this._modalStack.hasOpenModals()}}return e.\u0275fac=function(t){return new(t||e)(L(_n),L(N3),L(A3))},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),RM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({providers:[kM]}),e})(),LM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),WM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),zM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),YM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),qM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),JM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),ZM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),QM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({}),e})();new Y("live announcer delay",{providedIn:"root",factory:function $3(){return 100}});let XM=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[Qn]}),e})(),eT=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({}),e})();const U3=[fM,hM,mM,_M,NM,OM,RM,LM,eT,WM,zM,YM,qM,JM,ZM,QM,XM];let G3=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({imports:[U3,fM,hM,mM,_M,NM,OM,RM,LM,eT,WM,zM,YM,qM,JM,ZM,QM,XM]}),e})(),z3=(()=>{class e{constructor(t){this.activeModal=t,this.save=()=>{this.activeModal.close(this.rewindDate)}}}return e.\u0275fac=function(t){return new(t||e)(C(fr))},e.\u0275cmp=lt({type:e,selectors:[["app-rewind-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName",topic:"topic"},decls:26,vars:4,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","rewindDate"],[1,"input-group"],["id","rewindDate","placeholder","yyyy-mm-dd hh:MM:ss","type","datetime-local",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(M(0,"div",0)(1,"h4",1),I(2,"Rewind consumers offset"),N(),M(3,"button",2),K("click",function(){return i.activeModal.dismiss()}),M(4,"span",3),I(5,"\xd7"),N()()(),M(6,"div",4)(7,"div",5)(8,"label",6),I(9,"Select the datetime to rewind all the partition-offsets of the topic "),M(10,"b"),I(11),N(),I(12," from consumers "),M(13,"b"),I(14),N(),I(15," with group id "),M(16,"b"),I(17),N(),I(18,"' "),N(),M(19,"div",7)(20,"input",8),K("ngModelChange",function(o){return i.rewindDate=o}),N()()()(),M(21,"div",9)(22,"button",10),K("click",function(){return i.activeModal.dismiss()}),I(23,"Cancel"),N(),M(24,"button",11),K("click",function(){return i.save()}),I(25,"OK"),N()()),2&t&&(P(11),Be("'",i.topic,"'"),P(3),Be("'",i.consumerName,"'"),P(3),Be("'",i.groupId,""),P(3),X("ngModel",i.rewindDate))},dependencies:[Oc,O_,Hf],encapsulation:2}),e})(),Y3=(()=>{class e{constructor(t){this.activeModal=t,this.save=()=>{this.activeModal.close(this.workersCount)}}}return e.\u0275fac=function(t){return new(t||e)(C(fr))},e.\u0275cmp=lt({type:e,selectors:[["app-workers-count-modal"]],inputs:{workersCount:"workersCount",groupId:"groupId",consumerName:"consumerName"},decls:24,vars:3,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","workersCount"],[1,"input-group"],["id","workersCount","type","number",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(M(0,"div",0)(1,"h4",1),I(2,"Consumer workers running"),N(),M(3,"button",2),K("click",function(){return i.activeModal.dismiss()}),M(4,"span",3),I(5,"\xd7"),N()()(),M(6,"div",4)(7,"div",5)(8,"label"),I(9,"Update the number of workers in consumers "),M(10,"b"),I(11),N(),I(12," from group id "),M(13,"b"),I(14),N()(),M(15,"label",6),I(16,"New Value"),N(),M(17,"div",7)(18,"input",8),K("ngModelChange",function(o){return i.workersCount=o}),N()()()(),M(19,"div",9)(20,"button",10),K("click",function(){return i.activeModal.dismiss()}),I(21,"Cancel"),N(),M(22,"button",11),K("click",function(){return i.save()}),I(23,"OK"),N()()),2&t&&(P(11),Be("'",i.consumerName,"'"),P(3),Be("'",i.groupId,"'"),P(4),X("ngModel",i.workersCount))},dependencies:[Oc,$_,O_,Hf],encapsulation:2}),e})(),q3=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(fr))},e.\u0275cmp=lt({type:e,selectors:[["app-reset-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName",topic:"topic"},decls:26,vars:3,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(M(0,"div",0)(1,"h4",1),I(2,"Reset consumers offset"),N(),M(3,"button",2),K("click",function(){return i.activeModal.dismiss()}),M(4,"span",3),I(5,"\xd7"),N()()(),M(6,"div",4)(7,"div",5)(8,"span"),I(9,"Reset the partition-offsets can generate a huge lag at the topic "),M(10,"b"),I(11),N(),I(12," to consumers "),M(13,"b"),I(14),N(),I(15," with group id "),M(16,"b"),I(17),N(),I(18,"'. "),N(),M(19,"h5",6),I(20,"Are you really sure about it?"),N()()(),M(21,"div",7)(22,"button",8),K("click",function(){return i.activeModal.dismiss()}),I(23,"No, cancel"),N(),M(24,"button",9),K("click",function(){return i.activeModal.close()}),I(25,"Yes"),N()()),2&t&&(P(11),Be("'",i.topic,"'"),P(3),Be("'",i.consumerName,"'"),P(3),Be("'",i.groupId,""))},encapsulation:2}),e})(),J3=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(fr))},e.\u0275cmp=lt({type:e,selectors:[["app-pause-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName",topic:"topic"},decls:26,vars:3,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(M(0,"div",0)(1,"h4",1),I(2,"Pause consumers"),N(),M(3,"button",2),K("click",function(){return i.activeModal.dismiss()}),M(4,"span",3),I(5,"\xd7"),N()()(),M(6,"div",4)(7,"div",5)(8,"span"),I(9,"Pause all the partitions of the topic "),M(10,"b"),I(11),N(),I(12," from consumers "),M(13,"b"),I(14),N(),I(15," with group id "),M(16,"b"),I(17),N(),I(18,"' will interrupt the kafka data processing and, probably, generate lag. "),N(),M(19,"h5",6),I(20,"Are you really sure about it?"),N()()(),M(21,"div",7)(22,"button",8),K("click",function(){return i.activeModal.dismiss()}),I(23,"No, cancel"),N(),M(24,"button",9),K("click",function(){return i.activeModal.close()}),I(25,"Yes"),N()()),2&t&&(P(11),Be("'",i.topic,"'"),P(3),Be("'",i.consumerName,"'"),P(3),Be("'",i.groupId,""))},encapsulation:2}),e})(),Z3=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(fr))},e.\u0275cmp=lt({type:e,selectors:[["app-resume-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName",topic:"topic"},decls:26,vars:3,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(M(0,"div",0)(1,"h4",1),I(2,"Resume consumers"),N(),M(3,"button",2),K("click",function(){return i.activeModal.dismiss()}),M(4,"span",3),I(5,"\xd7"),N()()(),M(6,"div",4)(7,"div",5)(8,"span"),I(9,"Resume all the partitions of the topic "),M(10,"b"),I(11),N(),I(12," from consumers "),M(13,"b"),I(14),N(),I(15," with group id "),M(16,"b"),I(17),N(),I(18,"' will restart to process the messages. "),N(),M(19,"h5",6),I(20,"Are you really sure about it?"),N()()(),M(21,"div",7)(22,"button",8),K("click",function(){return i.activeModal.dismiss()}),I(23,"No, cancel"),N(),M(24,"button",9),K("click",function(){return i.activeModal.close()}),I(25,"Yes"),N()()),2&t&&(P(11),Be("'",i.topic,"'"),P(3),Be("'",i.consumerName,"'"),P(3),Be("'",i.groupId,""))},encapsulation:2}),e})(),Q3=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(fr))},e.\u0275cmp=lt({type:e,selectors:[["app-restart-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName"},decls:23,vars:2,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(M(0,"div",0)(1,"h4",1),I(2,"Restart consumers"),N(),M(3,"button",2),K("click",function(){return i.activeModal.dismiss()}),M(4,"span",3),I(5,"\xd7"),N()()(),M(6,"div",4)(7,"div",5)(8,"span"),I(9,"Restart the consumers "),M(10,"b"),I(11),N(),I(12," from group id "),M(13,"b"),I(14),N(),I(15,"' will can generate a temporary instability in your system. "),N(),M(16,"h5",6),I(17,"Are you really sure about it?"),N()()(),M(18,"div",7)(19,"button",8),K("click",function(){return i.activeModal.dismiss()}),I(20,"No, cancel"),N(),M(21,"button",9),K("click",function(){return i.activeModal.close()}),I(22,"Yes"),N()()),2&t&&(P(11),Be("'",i.consumerName,"'"),P(3),Be("'",i.groupId,""))},encapsulation:2}),e})(),X3=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(fr))},e.\u0275cmp=lt({type:e,selectors:[["app-start-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName"},decls:22,vars:2,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(M(0,"div",0)(1,"h4",1),I(2,"Start consumers"),N(),M(3,"button",2),K("click",function(){return i.activeModal.dismiss()}),M(4,"span",3),I(5,"\xd7"),N()()(),M(6,"div",4)(7,"div",5)(8,"span"),I(9,"Start the consumer "),M(10,"b"),I(11),N(),I(12," from group id "),M(13,"b"),I(14),N()(),M(15,"h5",6),I(16,"Are you really sure about it?"),N()()(),M(17,"div",7)(18,"button",8),K("click",function(){return i.activeModal.dismiss()}),I(19,"No, cancel"),N(),M(20,"button",9),K("click",function(){return i.activeModal.close()}),I(21,"Yes"),N()()),2&t&&(P(11),Be("'",i.consumerName,"'"),P(3),Be("'",i.groupId,"'"))},encapsulation:2}),e})(),eU=(()=>{class e{constructor(t){this.activeModal=t}}return e.\u0275fac=function(t){return new(t||e)(C(fr))},e.\u0275cmp=lt({type:e,selectors:[["app-stop-modal"]],inputs:{groupId:"groupId",consumerName:"consumerName"},decls:22,vars:2,consts:[[1,"modal-header"],["id","modal-basic-title",1,"modal-title"],["type","button","aria-label","Close",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],[1,"mt-3"],[1,"modal-footer"],["type","button",1,"btn","btn-outline-dark",3,"click"],["type","button",1,"btn","btn-success",3,"click"]],template:function(t,i){1&t&&(M(0,"div",0)(1,"h4",1),I(2,"Stop consumer"),N(),M(3,"button",2),K("click",function(){return i.activeModal.dismiss()}),M(4,"span",3),I(5,"\xd7"),N()()(),M(6,"div",4)(7,"div",5)(8,"span"),I(9,"Stop the consumer "),M(10,"b"),I(11),N(),I(12," from group id "),M(13,"b"),I(14),N()(),M(15,"h5",6),I(16,"Are you really sure about it?"),N()()(),M(17,"div",7)(18,"button",8),K("click",function(){return i.activeModal.dismiss()}),I(19,"No, cancel"),N(),M(20,"button",9),K("click",function(){return i.activeModal.close()}),I(21,"Yes"),N()()),2&t&&(P(11),Be("'",i.consumerName,"'"),P(3),Be("'",i.groupId,"'"))},encapsulation:2}),e})();var tT=Xc(439);function nT(e,n,t,i,r,o,s){try{var a=e[o](s),l=a.value}catch(u){return void t(u)}a.done?n(l):Promise.resolve(l).then(i,r)}function Wr(e){return function(){var n=this,t=arguments;return new Promise(function(i,r){var o=e.apply(n,t);function s(l){nT(o,i,r,s,a,"next",l)}function a(l){nT(o,i,r,s,a,"throw",l)}s(void 0)})}}function Kr(e,n){const t="object"==typeof n;return new Promise((i,r)=>{const o=new mr({next:s=>{i(s),o.unsubscribe()},error:r,complete:()=>{t?i(n.defaultValue):r(new mc)}});e.subscribe(o)})}let rT=(()=>{class e{constructor(){this.rootUrl="http://localhost:5000/kafkaflow"}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class oT{}class sT{}class zr{constructor(n){this.normalizedNames=new Map,this.lazyUpdate=null,n?this.lazyInit="string"==typeof n?()=>{this.headers=new Map,n.split("\n").forEach(t=>{const i=t.indexOf(":");if(i>0){const r=t.slice(0,i),o=r.toLowerCase(),s=t.slice(i+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:()=>{this.headers=new Map,Object.keys(n).forEach(t=>{let i=n[t];const r=t.toLowerCase();"string"==typeof i&&(i=[i]),i.length>0&&(this.headers.set(r,i),this.maybeSetNormalizedName(t,r))})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const t=this.headers.get(n.toLowerCase());return t&&t.length>0?t[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,t){return this.clone({name:n,value:t,op:"a"})}set(n,t){return this.clone({name:n,value:t,op:"s"})}delete(n,t){return this.clone({name:n,value:t,op:"d"})}maybeSetNormalizedName(n,t){this.normalizedNames.has(t)||this.normalizedNames.set(t,n)}init(){this.lazyInit&&(this.lazyInit instanceof zr?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(t=>{this.headers.set(t,n.headers.get(t)),this.normalizedNames.set(t,n.normalizedNames.get(t))})}clone(n){const t=new zr;return t.lazyInit=this.lazyInit&&this.lazyInit instanceof zr?this.lazyInit:this,t.lazyUpdate=(this.lazyUpdate||[]).concat([n]),t}applyUpdate(n){const t=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,t);const r=("a"===n.op?this.headers.get(t):void 0)||[];r.push(...i),this.headers.set(t,r);break;case"d":const o=n.value;if(o){let s=this.headers.get(t);if(!s)return;s=s.filter(a=>-1===o.indexOf(a)),0===s.length?(this.headers.delete(t),this.normalizedNames.delete(t)):this.headers.set(t,s)}else this.headers.delete(t),this.normalizedNames.delete(t)}}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(t=>n(this.normalizedNames.get(t),this.headers.get(t)))}}class tU{encodeKey(n){return aT(n)}encodeValue(n){return aT(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const iU=/%(\d[a-f0-9])/gi,rU={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function aT(e){return encodeURIComponent(e).replace(iU,(n,t)=>rU[t]??n)}function th(e){return`${e}`}class So{constructor(n={}){if(this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new tU,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function nU(e,n){const t=new Map;return e.length>0&&e.replace(/^\?/,"").split("&").forEach(r=>{const o=r.indexOf("="),[s,a]=-1==o?[n.decodeKey(r),""]:[n.decodeKey(r.slice(0,o)),n.decodeValue(r.slice(o+1))],l=t.get(s)||[];l.push(a),t.set(s,l)}),t}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(t=>{const i=n.fromObject[t],r=Array.isArray(i)?i.map(th):[th(i)];this.map.set(t,r)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const t=this.map.get(n);return t?t[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,t){return this.clone({param:n,value:t,op:"a"})}appendAll(n){const t=[];return Object.keys(n).forEach(i=>{const r=n[i];Array.isArray(r)?r.forEach(o=>{t.push({param:i,value:o,op:"a"})}):t.push({param:i,value:r,op:"a"})}),this.clone(t)}set(n,t){return this.clone({param:n,value:t,op:"s"})}delete(n,t){return this.clone({param:n,value:t,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const t=this.encoder.encodeKey(n);return this.map.get(n).map(i=>t+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const t=new So({encoder:this.encoder});return t.cloneFrom=this.cloneFrom||this,t.updates=(this.updates||[]).concat(n),t}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const t=("a"===n.op?this.map.get(n.param):void 0)||[];t.push(th(n.value)),this.map.set(n.param,t);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const r=i.indexOf(th(n.value));-1!==r&&i.splice(r,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}class oU{constructor(){this.map=new Map}set(n,t){return this.map.set(n,t),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}function lT(e){return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer}function cT(e){return typeof Blob<"u"&&e instanceof Blob}function uT(e){return typeof FormData<"u"&&e instanceof FormData}class Jc{constructor(n,t,i,r){let o;if(this.url=t,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=n.toUpperCase(),function sU(e){switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==i?i:null,o=r):o=i,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params)),this.headers||(this.headers=new zr),this.context||(this.context=new oU),this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=t;else{const a=t.indexOf("?");this.urlWithParams=t+(-1===a?"?":ap.set(m,n.setHeaders[m]),l)),n.setParams&&(u=Object.keys(n.setParams).reduce((p,m)=>p.set(m,n.setParams[m]),u)),new Jc(t,i,o,{params:u,headers:l,context:f,reportProgress:a,responseType:r,withCredentials:s})}}var Rt=(()=>((Rt=Rt||{})[Rt.Sent=0]="Sent",Rt[Rt.UploadProgress=1]="UploadProgress",Rt[Rt.ResponseHeader=2]="ResponseHeader",Rt[Rt.DownloadProgress=3]="DownloadProgress",Rt[Rt.Response=4]="Response",Rt[Rt.User=5]="User",Rt))();class yv{constructor(n,t=200,i="OK"){this.headers=n.headers||new zr,this.status=void 0!==n.status?n.status:t,this.statusText=n.statusText||i,this.url=n.url||null,this.ok=this.status>=200&&this.status<300}}class bv extends yv{constructor(n={}){super(n),this.type=Rt.ResponseHeader}clone(n={}){return new bv({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class nh extends yv{constructor(n={}){super(n),this.type=Rt.Response,this.body=void 0!==n.body?n.body:null}clone(n={}){return new nh({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class dT extends yv{constructor(n){super(n,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}}function Dv(e,n){return{body:n,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials}}let fT=(()=>{class e{constructor(t){this.handler=t}request(t,i,r={}){let o;if(t instanceof Jc)o=t;else{let l,u;l=r.headers instanceof zr?r.headers:new zr(r.headers),r.params&&(u=r.params instanceof So?r.params:new So({fromObject:r.params})),o=new Jc(t,i,void 0!==r.body?r.body:null,{headers:l,context:r.context,params:u,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials})}const s=Q(o).pipe(_o(l=>this.handler.handle(l)));if(t instanceof Jc||"events"===r.observe)return s;const a=s.pipe(yn(l=>l instanceof nh));switch(r.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return a.pipe(ie(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return l.body}));case"blob":return a.pipe(ie(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new Error("Response is not a Blob.");return l.body}));case"text":return a.pipe(ie(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new Error("Response is not a string.");return l.body}));default:return a.pipe(ie(l=>l.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${r.observe}}`)}}delete(t,i={}){return this.request("DELETE",t,i)}get(t,i={}){return this.request("GET",t,i)}head(t,i={}){return this.request("HEAD",t,i)}jsonp(t,i){return this.request("JSONP",t,{params:(new So).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,i={}){return this.request("OPTIONS",t,i)}patch(t,i,r={}){return this.request("PATCH",t,Dv(r,i))}post(t,i,r={}){return this.request("POST",t,Dv(r,i))}put(t,i,r={}){return this.request("PUT",t,Dv(r,i))}}return e.\u0275fac=function(t){return new(t||e)(L(oT))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();class hT{constructor(n,t){this.next=n,this.interceptor=t}handle(n){return this.interceptor.intercept(n,this.next)}}const Cv=new Y("HTTP_INTERCEPTORS");let lU=(()=>{class e{intercept(t,i){return i.handle(t)}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();const cU=/^\)\]\}',?\n/;let pT=(()=>{class e{constructor(t){this.xhrFactory=t}handle(t){if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new Ve(i=>{const r=this.xhrFactory.build();if(r.open(t.method,t.urlWithParams),t.withCredentials&&(r.withCredentials=!0),t.headers.forEach((v,y)=>r.setRequestHeader(v,y.join(","))),t.headers.has("Accept")||r.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){const v=t.detectContentTypeHeader();null!==v&&r.setRequestHeader("Content-Type",v)}if(t.responseType){const v=t.responseType.toLowerCase();r.responseType="json"!==v?v:"text"}const o=t.serializeBody();let s=null;const a=()=>{if(null!==s)return s;const v=r.statusText||"OK",y=new zr(r.getAllResponseHeaders()),D=function uU(e){return"responseURL"in e&&e.responseURL?e.responseURL:/^X-Request-URL:/m.test(e.getAllResponseHeaders())?e.getResponseHeader("X-Request-URL"):null}(r)||t.url;return s=new bv({headers:y,status:r.status,statusText:v,url:D}),s},l=()=>{let{headers:v,status:y,statusText:D,url:w}=a(),S=null;204!==y&&(S=typeof r.response>"u"?r.responseText:r.response),0===y&&(y=S?200:0);let O=y>=200&&y<300;if("json"===t.responseType&&"string"==typeof S){const E=S;S=S.replace(cU,"");try{S=""!==S?JSON.parse(S):null}catch(A){S=E,O&&(O=!1,S={error:A,text:S})}}O?(i.next(new nh({body:S,headers:v,status:y,statusText:D,url:w||void 0})),i.complete()):i.error(new dT({error:S,headers:v,status:y,statusText:D,url:w||void 0}))},u=v=>{const{url:y}=a(),D=new dT({error:v,status:r.status||0,statusText:r.statusText||"Unknown Error",url:y||void 0});i.error(D)};let f=!1;const p=v=>{f||(i.next(a()),f=!0);let y={type:Rt.DownloadProgress,loaded:v.loaded};v.lengthComputable&&(y.total=v.total),"text"===t.responseType&&!!r.responseText&&(y.partialText=r.responseText),i.next(y)},m=v=>{let y={type:Rt.UploadProgress,loaded:v.loaded};v.lengthComputable&&(y.total=v.total),i.next(y)};return r.addEventListener("load",l),r.addEventListener("error",u),r.addEventListener("timeout",u),r.addEventListener("abort",u),t.reportProgress&&(r.addEventListener("progress",p),null!==o&&r.upload&&r.upload.addEventListener("progress",m)),r.send(o),i.next({type:Rt.Sent}),()=>{r.removeEventListener("error",u),r.removeEventListener("abort",u),r.removeEventListener("load",l),r.removeEventListener("timeout",u),t.reportProgress&&(r.removeEventListener("progress",p),null!==o&&r.upload&&r.upload.removeEventListener("progress",m)),r.readyState!==r.DONE&&r.abort()}})}}return e.\u0275fac=function(t){return new(t||e)(L($C))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();const wv=new Y("XSRF_COOKIE_NAME"),Sv=new Y("XSRF_HEADER_NAME");class gT{}let dU=(()=>{class e{constructor(t,i,r){this.doc=t,this.platform=i,this.cookieName=r,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=IC(t,this.cookieName),this.lastCookieString=t),this.lastToken}}return e.\u0275fac=function(t){return new(t||e)(L(mt),L(ac),L(wv))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})(),Ev=(()=>{class e{constructor(t,i){this.tokenService=t,this.headerName=i}intercept(t,i){const r=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||r.startsWith("http://")||r.startsWith("https://"))return i.handle(t);const o=this.tokenService.getToken();return null!==o&&!t.headers.has(this.headerName)&&(t=t.clone({headers:t.headers.set(this.headerName,o)})),i.handle(t)}}return e.\u0275fac=function(t){return new(t||e)(L(gT),L(Sv))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})(),fU=(()=>{class e{constructor(t,i){this.backend=t,this.injector=i,this.chain=null}handle(t){if(null===this.chain){const i=this.injector.get(Cv,[]);this.chain=i.reduceRight((r,o)=>new hT(r,o),this.backend)}return this.chain.handle(t)}}return e.\u0275fac=function(t){return new(t||e)(L(sT),L(_n))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})(),hU=(()=>{class e{static disable(){return{ngModule:e,providers:[{provide:Ev,useClass:lU}]}}static withOptions(t={}){return{ngModule:e,providers:[t.cookieName?{provide:wv,useValue:t.cookieName}:[],t.headerName?{provide:Sv,useValue:t.headerName}:[]]}}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({providers:[Ev,{provide:Cv,useExisting:Ev,multi:!0},{provide:gT,useClass:dU},{provide:wv,useValue:"XSRF-TOKEN"},{provide:Sv,useValue:"X-XSRF-TOKEN"}]}),e})(),pU=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e}),e.\u0275inj=Me({providers:[fT,{provide:oT,useClass:fU},pT,{provide:sT,useExisting:pT}],imports:[hU.withOptions({cookieName:"XSRF-TOKEN",headerName:"X-XSRF-TOKEN"})]}),e})(),mT=(()=>{class e{constructor(t,i){this.config=t,this.http=i}pauseConsumerTopic(t,i){var r=this;return Wr(function*(){yield Kr(r.http.put(r.config.rootUrl+`/consumers/${t}/topics/${i}/pause`,""))})()}resumeConsumerTopic(t,i){var r=this;return Wr(function*(){yield Kr(r.http.put(r.config.rootUrl+`/consumers/${t}/topics/${i}/resume`,""))})()}resetConsumerTopic(t,i){var r=this;return Wr(function*(){yield Kr(r.http.put(r.config.rootUrl+`/consumers/${t}/topics/${i}/reset`,""))})()}rewindConsumerTopic(t,i,r){var o=this;return Wr(function*(){const s=tT(r).format("YYYY-MM-DD HH:mm:ss");yield Kr(o.http.put(o.config.rootUrl+`/consumers/${t}/topics/${i}/rewind/${s}`,""))})()}stopConsumer(t){var i=this;return Wr(function*(){yield Kr(i.http.put(i.config.rootUrl+`/consumers/${t}/stop`,""))})()}startConsumer(t){var i=this;return Wr(function*(){yield Kr(i.http.put(i.config.rootUrl+`/consumers/${t}/start`,""))})()}restartConsumer(t){var i=this;return Wr(function*(){yield Kr(i.http.put(i.config.rootUrl+`/consumers/${t}/restart`,""))})()}changeWorkers(t,i){var r=this;return Wr(function*(){yield Kr(r.http.put(r.config.rootUrl+`/consumers/${t}/changeWorkers/${i}`,""))})()}getTelemetry(){var t=this;return Wr(function*(){return yield Kr(t.http.get(t.config.rootUrl+"/consumers/telemetry"))})()}}return e.\u0275fac=function(t){return new(t||e)(L(rT),L(fT))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})(),gU=(()=>{class e{transform(t,i){if(!t)return null;const r=t.reduce((o,s)=>(o[s[i]]?o[s[i]].push(s):o[s[i]]=[s],o),{});return Object.keys(r).map(o=>({key:o,value:r[o]}))}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275pipe=Tt({name:"groupBy",type:e,pure:!0}),e})(),mU=(()=>{class e{transform(t,i,r="asc"){return"asc"!==(r=r.toLowerCase())&&"desc"!==r?t:Array.isArray(t)?(t.sort((o,s)=>o[i]s[i]?"asc"===r?1:-1:0),t):null}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275pipe=Tt({name:"sort",type:e,pure:!0}),e})();const _U=["successAlert"];function vU(e,n){if(1&e){const t=It();M(0,"ngb-alert",2,3),K("closed",function(){return nt(t),ht(z().successMessage="")}),M(2,"div",4)(3,"b"),I(4,"Success! "),N(),M(5,"span",4),I(6),N()()()}if(2&e){const t=z();P(6),Rr(t.successMessage)}}function yU(e,n){if(1&e){const t=It();M(0,"button",14),K("click",function(){nt(t);const r=z().$implicit,o=z().$implicit;return ht(z().openStartModal(o.groupId,r.name))}),I(1,"Start"),N()}}function bU(e,n){if(1&e){const t=It();M(0,"button",15),K("click",function(){nt(t);const r=z().$implicit,o=z().$implicit;return ht(z().openStopModal(o.groupId,r.name))}),I(1,"Stop"),N()}}function DU(e,n){if(1&e){const t=It();M(0,"button",15),K("click",function(){nt(t);const r=z().$implicit,o=z().$implicit;return ht(z().openRestartModal(o.groupId,r.name))}),I(1,"Restart"),N()}}function CU(e,n){if(1&e){const t=It();M(0,"button",16),K("click",function(){nt(t);const r=z().$implicit,o=z().$implicit;return ht(z().openWorkersCountModal(o.groupId,r.name))}),I(1,"Force number of workers"),N()}}function wU(e,n){if(1&e){const t=It();M(0,"button",14),K("click",function(){nt(t);const r=z().$implicit,o=z().$implicit,s=z().$implicit;return ht(z().openResumeModal(s.groupId,o.name,r.key))}),I(1,"Resume"),N()}}function SU(e,n){if(1&e){const t=It();M(0,"button",15),K("click",function(){nt(t);const r=z().$implicit,o=z().$implicit,s=z().$implicit;return ht(z().openPauseModal(s.groupId,o.name,r.key))}),I(1,"Pause"),N()}}function EU(e,n){if(1&e){const t=It();M(0,"button",20),K("click",function(){nt(t);const r=z().$implicit,o=z().$implicit,s=z().$implicit;return ht(z().openRewindModal(s.groupId,o.name,r.key))}),I(1,"Rewind Offset"),N()}}function MU(e,n){if(1&e){const t=It();M(0,"button",21),K("click",function(){nt(t);const r=z().$implicit,o=z().$implicit,s=z().$implicit;return ht(z().openResetModal(s.groupId,o.name,r.key))}),I(1,"Reset Offset"),N()}}function TU(e,n){1&e&&Ri(0,"div")}function NU(e,n){1&e&&(M(0,"span"),I(1,"Offline"),N())}function AU(e,n){1&e&&(M(0,"span",27),I(1,"Paused"),N())}function IU(e,n){1&e&&(M(0,"span",28),I(1,"Running"),N())}function OU(e,n){if(1&e&&(Z(0,AU,2,0,"ng-template",26),Z(1,IU,2,0,"ng-template",26)),2&e){const t=z().$implicit,i=z(4);X("ngIf",i.hasPausedPartition(t)),P(1),X("ngIf",i.hasRunningPartition(t))}}function kU(e,n){if(1&e&&(M(0,"tr")(1,"td",22),I(2),N(),M(3,"td",22),I(4),N(),M(5,"td",22),I(6),N(),M(7,"td",22),I(8),N(),M(9,"td",22),Z(10,TU,1,0,"div",23),Z(11,NU,2,0,"ng-template",null,24,Li),Z(13,OU,2,2,"ng-template",null,25,Li),N(),M(15,"td",22)(16,"span",9),I(17),Ad(18,"date"),N()()()),2&e){const t=n.$implicit,i=ki(12),r=ki(14),o=z(4);P(2),Rr(t.instanceName),P(2),Rr(t.workers),P(2),Rr(o.hasRunningPartition(t)?t.runningPartitions:t.pausedPartitions),P(2),Rr(t.lag),P(2),X("ngIf",t.isLost)("ngIfThen",i)("ngIfElse",r),P(6),X("ngClass",t.isLost?"text-secondary":"text-success"),P(1),Rr(Id(18,9,t.lastUpdate+"Z","medium"))}}function RU(e,n){if(1&e&&(Ri(0,"hr"),M(1,"h5"),I(2),Z(3,wU,2,0,"button",10),Z(4,SU,2,0,"button",11),Z(5,EU,2,0,"button",17),Z(6,MU,2,0,"button",18),N(),M(7,"table",19)(8,"thead")(9,"tr")(10,"th"),I(11,"Consumer instance"),N(),M(12,"th"),I(13,"Workers"),N(),M(14,"th"),I(15,"Partitions"),N(),M(16,"th"),I(17,"Lag"),N(),M(18,"th"),I(19,"Status"),N(),M(20,"th"),I(21,"LastUpdate"),N()()(),M(22,"tbody"),Z(23,kU,19,12,"ng-template",13),Ad(24,"sort"),N()()),2&e){const t=n.$implicit,i=z().$implicit,r=z(2);P(2),Be(" Topic: ",t.key," "),P(1),X("ngIf",t.value.some(r.hasPausedPartition)),P(1),X("ngIf",t.value.some(r.hasRunningPartition)),P(1),X("ngIf","Running"===i.status),P(1),X("ngIf","Running"===i.status),P(17),X("ngForOf",Id(24,6,t.value,"instanceName"))}}const xU=function(e,n,t){return{"text-success":e,"text-warning":n,"text-danger":t}},FU=function(){return[]};function PU(e,n){if(1&e&&(M(0,"div")(1,"h4"),I(2),N(),M(3,"h4"),I(4,"Status: "),M(5,"span",9),I(6),N(),Z(7,yU,2,0,"button",10),Z(8,bU,2,0,"button",11),Z(9,DU,2,0,"button",11),Z(10,CU,2,0,"button",12),N(),M(11,"h4"),I(12),N(),Z(13,RU,25,9,"ng-template",13),Ad(14,"groupBy"),Ri(15,"hr"),N()),2&e){const t=n.$implicit;P(2),Be("Consumer: ",t.name,""),P(3),X("ngClass",Nd(12,xU,"Running"===t.status,"Paused"===t.status,"Not Running"===t.status)),P(1),Rr(t.status),P(1),X("ngIf","Not Running"===t.status),P(1),X("ngIf","Running"===t.status),P(1),X("ngIf","Running"===t.status),P(1),X("ngIf","Running"===t.status),P(2),Be("Lag: ",t.lag,""),P(1),X("ngForOf",Id(14,9,t.assignments||function l1(e,n,t){const i=rn()+e,r=k();return r[i]===ae?ir(r,i,t?n.call(t):n()):function Yl(e,n){return e[n]}(r,i)}(16,FU),"topicName"))}}function LU(e,n){if(1&e&&(M(0,"div",5)(1,"div",6)(2,"div",7)(3,"h3"),I(4),N(),Z(5,PU,16,17,"div",8),N()()()),2&e){const t=n.$implicit;P(4),Be("Group Id: ",t.groupId,""),P(1),X("ngForOf",t.consumers)}}let VU=(()=>{class e{constructor(t,i){this.modalService=t,this.gateway=i,this.successSubject=new je,this.delayMs=5e3,this.successMessage="",this.updateData=()=>{this.gateway.getTelemetry().then(r=>{this.telemetryResponse=this.updateConsumersStatus(r)})},this.hasRunningPartition=r=>r.runningPartitions?.length>0,this.hasPausedPartition=r=>r.pausedPartitions?.length>0,this.isActive=r=>Math.abs(((new Date).getTime()-new Date(r+"Z").getTime())/1e3)<30,this.openWorkersCountModal=(r,o)=>{const s=this.modalService.open(Y3);s.componentInstance.groupId=r,s.componentInstance.consumerName=o,s.result.then(a=>{this.gateway.changeWorkers(o,a).then(()=>this.successSubject.next("The number of workers was updated successfully"))})},this.openResetModal=(r,o,s)=>{const a=this.modalService.open(q3);a.componentInstance.groupId=r,a.componentInstance.consumerName=o,a.componentInstance.topic=s,a.result.then(()=>{this.gateway.resetConsumerTopic(o,s).then(()=>this.successSubject.next("The partition-offsets of your consumer were reseted successfully"))})},this.openPauseModal=(r,o,s)=>{const a=this.modalService.open(J3);a.componentInstance.groupId=r,a.componentInstance.topic=s,a.componentInstance.consumerName=o,a.result.then(()=>{this.gateway.pauseConsumerTopic(o,s).then(()=>this.successSubject.next("Your consumer was paused successfully"))})},this.openRestartModal=(r,o)=>{const s=this.modalService.open(Q3);s.componentInstance.groupId=r,s.componentInstance.consumerName=o,s.result.then(()=>{this.gateway.restartConsumer(o).then(()=>this.successSubject.next("Your consumer was restarted successfully"))})},this.openStartModal=(r,o)=>{const s=this.modalService.open(X3);s.componentInstance.groupId=r,s.componentInstance.consumerName=o,s.result.then(()=>{this.gateway.startConsumer(o).then(()=>this.successSubject.next("Your consumer was started successfully"))})},this.openStopModal=(r,o)=>{const s=this.modalService.open(eU);s.componentInstance.groupId=r,s.componentInstance.consumerName=o,s.result.then(()=>{this.gateway.stopConsumer(o).then(()=>this.successSubject.next("Your consumer was stopped successfully"))})},this.openResumeModal=(r,o,s)=>{const a=this.modalService.open(Z3);a.componentInstance.groupId=r,a.componentInstance.consumerName=o,a.componentInstance.topic=s,a.result.then(()=>{this.gateway.resumeConsumerTopic(o,s).then(()=>this.successSubject.next("Your consumer was resumed successfully"))})},this.openRewindModal=(r,o,s)=>{const a=this.modalService.open(z3);a.componentInstance.consumerName=o,a.componentInstance.groupId=r,a.componentInstance.topic=s,a.result.then(l=>{const u=tT(l,"YYYY-MM-DDTHH:mm").toDate();this.gateway.rewindConsumerTopic(o,s,u).then(()=>this.successSubject.next("The partition-offset of your consumer were rewound successfully"))})}}ngOnInit(){this.successSubject.subscribe(t=>this.successMessage=t),this.successSubject.pipe(function K3(e,n=jf){return qe((t,i)=>{let r=null,o=null,s=null;const a=()=>{if(r){r.unsubscribe(),r=null;const u=o;o=null,i.next(u)}};function l(){const u=s+e,f=n.now();if(f{o=u,s=n.now(),r||(r=n.schedule(l,e),i.add(r))},()=>{a(),i.complete()},void 0,()=>{o=r=null}))})}(5e3)).subscribe(()=>this.successAlert?.close()),this.updateData(),function W3(e=0,n=jf){return e<0&&(e=0),Lc(e,e,n)}(this.delayMs).subscribe(this.updateData)}updateConsumersStatus(t){const i=this;return t.groups?.forEach(r=>{r.consumers?.forEach(o=>{o.status=o.assignments.some(s=>s.runningPartitions?.length>0&&i.isActive(s.lastUpdate))?"Running":o.assignments.some(s=>s.pausedPartitions?.length>0&&i.isActive(s.lastUpdate))?"Paused":"Not Running",o.lag=o.assignments.map(s=>s.lag).reduce((s,a)=>s+a),o.assignments.forEach(s=>s.isLost=!i.isActive(s.lastUpdate))})}),t}}return e.\u0275fac=function(t){return new(t||e)(C(kM),C(mT))},e.\u0275cmp=lt({type:e,selectors:[["app-consumer"]],viewQuery:function(t,i){if(1&t&&kd(_U,5),2&t){let r;ot(r=st())&&(i.successAlert=r.first)}},decls:2,vars:2,consts:[["type","success",3,"closed",4,"ngIf"],["class","container",4,"ngFor","ngForOf"],["type","success",3,"closed"],["successAlert",""],[1,"text-center"],[1,"container"],[1,"card","my-3"],[1,"card-body"],[4,"ngFor","ngForOf"],[3,"ngClass"],["class","btn btn-sm btn-outline-success ml-2","type","button",3,"click",4,"ngIf"],["class","btn btn-sm btn-outline-warning ml-2","type","button",3,"click",4,"ngIf"],["class","btn btn-sm btn-outline-success ml-3","type","button",3,"click",4,"ngIf"],["ngFor","",3,"ngForOf"],["type","button",1,"btn","btn-sm","btn-outline-success","ml-2",3,"click"],["type","button",1,"btn","btn-sm","btn-outline-warning","ml-2",3,"click"],["type","button",1,"btn","btn-sm","btn-outline-success","ml-3",3,"click"],["class","btn btn-sm btn-outline-info ml-2","type","button",3,"click",4,"ngIf"],["class","btn btn-sm btn-outline-secondary ml-2","type","button",3,"click",4,"ngIf"],[1,"table","table-striped","table-hover","mt-1"],["type","button",1,"btn","btn-sm","btn-outline-info","ml-2",3,"click"],["type","button",1,"btn","btn-sm","btn-outline-secondary","ml-2",3,"click"],[1,"text-left"],[4,"ngIf","ngIfThen","ngIfElse"],["consumer_lost",""],["consumer_on",""],[3,"ngIf"],[1,"font-weight-bold","text-warning"],[1,"font-weight-bold","text-success"]],template:function(t,i){1&t&&(Z(0,vU,7,1,"ngb-alert",0),Z(1,LU,6,2,"div",1)),2&t&&(X("ngIf",i.successMessage),P(1),X("ngForOf",null==i.telemetryResponse?null:i.telemetryResponse.groups))},dependencies:[OC,Ra,os,H$,LC,gU,mU],encapsulation:2}),e})(),HU=(()=>{class e{constructor(){}}return e.\u0275fac=function(t){return new(t||e)},e.\u0275cmp=lt({type:e,selectors:[["app-home"]],decls:12,vars:0,consts:[[1,"navbar","navbar-expand-lg","navbar-light","bg-light"],[1,"container-fluid"],["href","#",1,"navbar-brand"],["type","button","data-bs-toggle","collapse","data-bs-target","#navbarSupportedContent","aria-controls","navbarSupportedContent","aria-expanded","false","aria-label","Toggle navigation",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","navbarSupportedContent",1,"collapse","navbar-collapse"],[1,"navbar-nav","me-auto","mb-2","mb-lg-0"],[1,"nav-item"],["aria-current","page","href","#",1,"nav-link","active"]],template:function(t,i){1&t&&(M(0,"nav",0)(1,"div",1)(2,"a",2),I(3,"KafkaFlow - Dashboard"),N(),M(4,"button",3),Ri(5,"span",4),N(),M(6,"div",5)(7,"ul",6)(8,"li",7)(9,"a",8),I(10,"Consumers"),N()()()()()(),Ri(11,"app-consumer"))},dependencies:[gv,VU],encapsulation:2}),e})(),jU=(()=>{class e{constructor(t){this.cookieService=t}intercept(t,i){return t=t.clone({setHeaders:this.cookieService.getAll()}),i.handle(t).pipe(function BU(e=1/0){let n;n=e&&"object"==typeof e?e:{count:e};const{count:t=1/0,delay:i,resetOnSuccess:r=!1}=n;return t<=0?Pn:qe((o,s)=>{let l,a=0;const u=()=>{let f=!1;l=o.subscribe(Oe(s,p=>{r&&(a=0),s.next(p)},void 0,p=>{if(a++{l?(l.unsubscribe(),l=null,u()):f=!0};if(null!=i){const v="number"==typeof i?Lc(i):Et(i(p,a)),y=Oe(s,()=>{y.unsubscribe(),m()},()=>{s.complete()});v.subscribe(y)}else m()}else s.error(p)})),f&&(l.unsubscribe(),l=null,u())};u()})}(1),Br(r=>{let o="";return o=r.error instanceof ErrorEvent?`Error: ${r.error.message}`:`Error Code: ${r.status}\nMessage: ${r.message}`,console.error(o),xa(o)}))}}return e.\u0275fac=function(t){return new(t||e)(L(FE))},e.\u0275prov=U({token:e,factory:e.\u0275fac}),e})();const $U={validation:!1},UU=[{path:"",component:HU}];let GU=(()=>{class e{}return e.\u0275fac=function(t){return new(t||e)},e.\u0275mod=ge({type:e,bootstrap:[UH]}),e.\u0275inj=Me({providers:[rT,FE,mT,{provide:Cv,useClass:jU,multi:!0}],imports:[QP,$H,Af.forRoot(UU),pU,IE,G3,BH.forRoot($U),Af]}),e})();ZP().bootstrapModule(GU).catch(e=>console.error(e))},439:function(hr,lh,Xc){(hr=Xc.nmd(hr)).exports=function(){"use strict";var be,Mo;function V(){return be.apply(null,arguments)}function dn(c){return c instanceof Array||"[object Array]"===Object.prototype.toString.call(c)}function _t(c){return null!=c&&"[object Object]"===Object.prototype.toString.call(c)}function we(c,d){return Object.prototype.hasOwnProperty.call(c,d)}function ws(c){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(c).length;var d;for(d in c)if(we(c,d))return!1;return!0}function qt(c){return void 0===c}function Jt(c){return"number"==typeof c||"[object Number]"===Object.prototype.toString.call(c)}function zi(c){return c instanceof Date||"[object Date]"===Object.prototype.toString.call(c)}function Za(c,d){var g,h=[],_=c.length;for(g=0;g<_;++g)h.push(d(c[g],g));return h}function Cn(c,d){for(var h in d)we(d,h)&&(c[h]=d[h]);return we(d,"toString")&&(c.toString=d.toString),we(d,"valueOf")&&(c.valueOf=d.valueOf),c}function ni(c,d,h,g){return H(c,d,h,g,!0).utc()}function le(c){return null==c._pf&&(c._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),c._pf}function _i(c){if(null==c._isValid){var d=le(c),h=Mo.call(d.parsedDateParts,function(_){return null!=_}),g=!isNaN(c._d.getTime())&&d.overflow<0&&!d.empty&&!d.invalidEra&&!d.invalidMonth&&!d.invalidWeekday&&!d.weekdayMismatch&&!d.nullInput&&!d.invalidFormat&&!d.userInvalidated&&(!d.meridiem||d.meridiem&&h);if(c._strict&&(g=g&&0===d.charsLeftOver&&0===d.unusedTokens.length&&void 0===d.bigHour),null!=Object.isFrozen&&Object.isFrozen(c))return g;c._isValid=g}return c._isValid}function pr(c){var d=ni(NaN);return null!=c?Cn(le(d),c):le(d).userInvalidated=!0,d}Mo=Array.prototype.some?Array.prototype.some:function(c){var g,d=Object(this),h=d.length>>>0;for(g=0;g0)for(h=0;h=0?h?"+":"":"-")+Math.pow(10,Math.max(0,d-g.length)).toString().substr(1)+g}var tl=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Ms=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,je={},_r={};function q(c,d,h,g){var _=g;"string"==typeof g&&(_=function(){return this[g]()}),c&&(_r[c]=_),d&&(_r[d[0]]=function(){return ri(_.apply(this,arguments),d[1],d[2])}),h&&(_r[h]=function(){return this.localeData().ordinal(_.apply(this,arguments),c)})}function qe(c){return c.match(/\[[\s\S]/)?c.replace(/^\[|\]$/g,""):c.replace(/\\/g,"")}function Ts(c,d){return c.isValid()?(d=ie(d,c.localeData()),je[d]=je[d]||function Oe(c){var h,g,d=c.match(tl);for(h=0,g=d.length;h=0&&Ms.test(c);)c=c.replace(Ms,g),Ms.lastIndex=0,h-=1;return c}var No={};function xt(c,d){var h=c.toLowerCase();No[h]=No[h+"s"]=No[d]=c}function Ln(c){return"string"==typeof c?No[c]||No[c.toLowerCase()]:void 0}function Ao(c){var h,g,d={};for(g in c)we(c,g)&&(h=Ln(g))&&(d[h]=c[g]);return d}var iu={};function St(c,d){iu[c]=d}function Ns(c){return c%4==0&&c%100!=0||c%400==0}function Vn(c){return c<0?Math.ceil(c)||0:Math.floor(c)}function he(c){var d=+c,h=0;return 0!==d&&isFinite(d)&&(h=Vn(d)),h}function wn(c,d){return function(h){return null!=h?(ou(this,c,h),V.updateOffset(this,d),this):Io(this,c)}}function Io(c,d){return c.isValid()?c._d["get"+(c._isUTC?"UTC":"")+d]():NaN}function ou(c,d,h){c.isValid()&&!isNaN(h)&&("FullYear"===d&&Ns(c.year())&&1===c.month()&&29===c.date()?(h=he(h),c._d["set"+(c._isUTC?"UTC":"")+d](h,c.month(),yr(h,c.month()))):c._d["set"+(c._isUTC?"UTC":"")+d](h))}var Ro,au=/\d/,Sn=/\d\d/,lu=/\d{3}/,rl=/\d{4}/,As=/[+-]?\d{6}/,Ke=/\d\d?/,cu=/\d\d\d\d?/,uu=/\d\d\d\d\d\d?/,Is=/\d{1,3}/,du=/\d{1,4}/,Yr=/[+-]?\d{1,6}/,vr=/\d+/,Oo=/[+-]?\d+/,fu=/Z|[+-]\d\d:?\d\d/gi,ko=/Z|[+-]\d\d(?::?\d\d)?/gi,qr=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function $(c,d,h){Ro[c]=ii(d)?d:function(g,_){return g&&h?h:d}}function hu(c,d){return we(Ro,c)?Ro[c](d._strict,d._locale):new RegExp(function Et(c){return En(c.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(d,h,g,_,b){return h||g||_||b}))}(c))}function En(c){return c.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}Ro={};var ol={};function Pe(c,d){var h,_,g=d;for("string"==typeof c&&(c=[c]),Jt(d)&&(g=function(b,T){T[d]=he(b)}),_=c.length,h=0;h<_;h++)ol[c[h]]=g}function xo(c,d){Pe(c,function(h,g,_,b){_._w=_._w||{},d(h,_._w,_,b)})}function pu(c,d,h){null!=d&&we(ol,c)&&ol[c](d,h._a,h,c)}var tt;function yr(c,d){if(isNaN(c)||isNaN(d))return NaN;var h=function gu(c,d){return(c%d+d)%d}(d,12);return c+=(d-h)/12,1===h?Ns(c)?29:28:31-h%7%2}tt=Array.prototype.indexOf?Array.prototype.indexOf:function(c){var d;for(d=0;d68?1900:2e3)};var ks=wn("FullYear",!0);function al(c,d,h,g,_,b,T){var J;return c<100&&c>=0?(J=new Date(c+400,d,h,g,_,b,T),isFinite(J.getFullYear())&&J.setFullYear(c)):J=new Date(c,d,h,g,_,b,T),J}function Po(c){var d,h;return c<100&&c>=0?((h=Array.prototype.slice.call(arguments))[0]=c+400,d=new Date(Date.UTC.apply(null,h)),isFinite(d.getUTCFullYear())&&d.setUTCFullYear(c)):d=new Date(Date.UTC.apply(null,arguments)),d}function De(c,d,h){var g=7+d-h;return-(7+Po(c,0,g).getUTCDay()-d)%7+g-1}function te(c,d,h,g,_){var ue,xe,J=1+7*(d-1)+(7+h-g)%7+De(c,g,_);return J<=0?xe=Ne(ue=c-1)+J:J>Ne(c)?(ue=c+1,xe=J-Ne(c)):(ue=c,xe=J),{year:ue,dayOfYear:xe}}function br(c,d,h){var b,T,g=De(c.year(),d,h),_=Math.floor((c.dayOfYear()-g-1)/7)+1;return _<1?b=_+Yi(T=c.year()-1,d,h):_>Yi(c.year(),d,h)?(b=_-Yi(c.year(),d,h),T=c.year()+1):(T=c.year(),b=_),{week:b,year:T}}function Yi(c,d,h){var g=De(c,d,h),_=De(c+1,d,h);return(Ne(c)-g+_)/7}q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),xt("week","w"),xt("isoWeek","W"),St("week",5),St("isoWeek",5),$("w",Ke),$("ww",Ke,Sn),$("W",Ke),$("WW",Ke,Sn),xo(["w","ww","W","WW"],function(c,d,h,g){d[g.substr(0,1)]=he(c)});function Qt(c,d){return c.slice(d,7).concat(c.slice(0,d))}q("d",0,"do","day"),q("dd",0,0,function(c){return this.localeData().weekdaysMin(this,c)}),q("ddd",0,0,function(c){return this.localeData().weekdaysShort(this,c)}),q("dddd",0,0,function(c){return this.localeData().weekdays(this,c)}),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),xt("day","d"),xt("weekday","e"),xt("isoWeekday","E"),St("day",11),St("weekday",11),St("isoWeekday",11),$("d",Ke),$("e",Ke),$("E",Ke),$("dd",function(c,d){return d.weekdaysMinRegex(c)}),$("ddd",function(c,d){return d.weekdaysShortRegex(c)}),$("dddd",function(c,d){return d.weekdaysRegex(c)}),xo(["dd","ddd","dddd"],function(c,d,h,g){var _=h._locale.weekdaysParse(c,g,h._strict);null!=_?d.d=_:le(h).invalidWeekday=c}),xo(["d","e","E"],function(c,d,h,g){d[g]=he(c)});var Pv="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Du="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Lv="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),yi=qr,Vv=qr,Hv=qr;function $v(c,d,h){var g,_,b,T=c.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],g=0;g<7;++g)b=ni([2e3,1]).day(g),this._minWeekdaysParse[g]=this.weekdaysMin(b,"").toLocaleLowerCase(),this._shortWeekdaysParse[g]=this.weekdaysShort(b,"").toLocaleLowerCase(),this._weekdaysParse[g]=this.weekdays(b,"").toLocaleLowerCase();return h?"dddd"===d?-1!==(_=tt.call(this._weekdaysParse,T))?_:null:"ddd"===d?-1!==(_=tt.call(this._shortWeekdaysParse,T))?_:null:-1!==(_=tt.call(this._minWeekdaysParse,T))?_:null:"dddd"===d?-1!==(_=tt.call(this._weekdaysParse,T))||-1!==(_=tt.call(this._shortWeekdaysParse,T))||-1!==(_=tt.call(this._minWeekdaysParse,T))?_:null:"ddd"===d?-1!==(_=tt.call(this._shortWeekdaysParse,T))||-1!==(_=tt.call(this._weekdaysParse,T))||-1!==(_=tt.call(this._minWeekdaysParse,T))?_:null:-1!==(_=tt.call(this._minWeekdaysParse,T))||-1!==(_=tt.call(this._weekdaysParse,T))||-1!==(_=tt.call(this._shortWeekdaysParse,T))?_:null}function U(){function c(Kt,ci){return ci.length-Kt.length}var b,T,J,ue,xe,d=[],h=[],g=[],_=[];for(b=0;b<7;b++)T=ni([2e3,1]).day(b),J=En(this.weekdaysMin(T,"")),ue=En(this.weekdaysShort(T,"")),xe=En(this.weekdays(T,"")),d.push(J),h.push(ue),g.push(xe),_.push(J),_.push(ue),_.push(xe);d.sort(c),h.sort(c),g.sort(c),_.sort(c),this._weekdaysRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+g.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+d.join("|")+")","i")}function Cu(){return this.hours()%12||12}function Lo(c,d){q(c,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),d)})}function wu(c,d){return d._meridiemParse}q("H",["HH",2],0,"hour"),q("h",["hh",2],0,Cu),q("k",["kk",2],0,function Me(){return this.hours()||24}),q("hmm",0,0,function(){return""+Cu.apply(this)+ri(this.minutes(),2)}),q("hmmss",0,0,function(){return""+Cu.apply(this)+ri(this.minutes(),2)+ri(this.seconds(),2)}),q("Hmm",0,0,function(){return""+this.hours()+ri(this.minutes(),2)}),q("Hmmss",0,0,function(){return""+this.hours()+ri(this.minutes(),2)+ri(this.seconds(),2)}),Lo("a",!0),Lo("A",!1),xt("hour","h"),St("hour",13),$("a",wu),$("A",wu),$("H",Ke),$("h",Ke),$("k",Ke),$("HH",Ke,Sn),$("hh",Ke,Sn),$("kk",Ke,Sn),$("hmm",cu),$("hmmss",uu),$("Hmm",cu),$("Hmmss",uu),Pe(["H","HH"],3),Pe(["k","kk"],function(c,d,h){var g=he(c);d[3]=24===g?0:g}),Pe(["a","A"],function(c,d,h){h._isPm=h._locale.isPM(c),h._meridiem=c}),Pe(["h","hh"],function(c,d,h){d[3]=he(c),le(h).bigHour=!0}),Pe("hmm",function(c,d,h){var g=c.length-2;d[3]=he(c.substr(0,g)),d[4]=he(c.substr(g)),le(h).bigHour=!0}),Pe("hmmss",function(c,d,h){var g=c.length-4,_=c.length-2;d[3]=he(c.substr(0,g)),d[4]=he(c.substr(g,2)),d[5]=he(c.substr(_)),le(h).bigHour=!0}),Pe("Hmm",function(c,d,h){var g=c.length-2;d[3]=he(c.substr(0,g)),d[4]=he(c.substr(g))}),Pe("Hmmss",function(c,d,h){var g=c.length-4,_=c.length-2;d[3]=he(c.substr(0,g)),d[4]=he(c.substr(g,2)),d[5]=he(c.substr(_))});var Nh=wn("Hours",!0);var Ho,Vo={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Fo,monthsShort:mu,week:{dow:0,doy:6},weekdays:Pv,weekdaysMin:Lv,weekdaysShort:Du,meridiemParse:/[ap]\.?m?\.?/i},$e={},Jr={};function ee(c,d){var h,g=Math.min(c.length,d.length);for(h=0;h0;){if(_=Bo(b.slice(0,h).join("-")))return _;if(g&&g.length>=h&&ee(b,g)>=h-1)break;h--}d++}return Ho}(c)}function Bn(c){var d,h=c._a;return h&&-2===le(c).overflow&&(d=h[1]<0||h[1]>11?1:h[2]<1||h[2]>yr(h[0],h[1])?2:h[3]<0||h[3]>24||24===h[3]&&(0!==h[4]||0!==h[5]||0!==h[6])?3:h[4]<0||h[4]>59?4:h[5]<0||h[5]>59?5:h[6]<0||h[6]>999?6:-1,le(c)._overflowDayOfYear&&(d<0||d>2)&&(d=2),le(c)._overflowWeeks&&-1===d&&(d=7),le(c)._overflowWeekday&&-1===d&&(d=8),le(c).overflow=d),c}var Ue=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Yv=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,qv=/Z|[+-]\d\d(?::?\d\d)?/,bi=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Se=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ps=/^\/?Date\((-?\d+)/i,ll=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,cl={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ul(c){var d,h,b,T,J,ue,g=c._i,_=Ue.exec(g)||Yv.exec(g),xe=bi.length,Kt=Se.length;if(_){for(le(c).iso=!0,d=0,h=xe;d7)&&(ue=!0)):(b=c._locale._week.dow,T=c._locale._week.doy,xe=br(G(),b,T),h=ge(d.gg,c._a[0],xe.year),g=ge(d.w,xe.week),null!=d.d?((_=d.d)<0||_>6)&&(ue=!0):null!=d.e?(_=d.e+b,(d.e<0||d.e>6)&&(ue=!0)):_=b),g<1||g>Yi(h,b,T)?le(c)._overflowWeeks=!0:null!=ue?le(c)._overflowWeekday=!0:(J=te(h,g,_,b,T),c._a[0]=J.year,c._dayOfYear=J.dayOfYear)}(c),null!=c._dayOfYear&&(T=ge(c._a[0],_[0]),(c._dayOfYear>Ne(T)||0===c._dayOfYear)&&(le(c)._overflowDayOfYear=!0),h=Po(T,0,c._dayOfYear),c._a[1]=h.getUTCMonth(),c._a[2]=h.getUTCDate()),d=0;d<3&&null==c._a[d];++d)c._a[d]=g[d]=_[d];for(;d<7;d++)c._a[d]=g[d]=c._a[d]??(2===d?1:0);24===c._a[3]&&0===c._a[4]&&0===c._a[5]&&0===c._a[6]&&(c._nextDay=!0,c._a[3]=0),c._d=(c._useUTC?Po:al).apply(null,g),b=c._useUTC?c._d.getUTCDay():c._d.getDay(),null!=c._tzm&&c._d.setUTCMinutes(c._d.getUTCMinutes()-c._tzm),c._nextDay&&(c._a[3]=24),c._w&&typeof c._w.d<"u"&&c._w.d!==b&&(le(c).weekdayMismatch=!0)}}function Tt(c){if(c._f!==V.ISO_8601)if(c._f!==V.RFC_2822){c._a=[],le(c).empty=!0;var h,g,_,b,T,xe,Kt,d=""+c._i,J=d.length,ue=0;for(Kt=(_=ie(c._f,c._locale).match(tl)||[]).length,h=0;h0&&le(c).unusedInput.push(T),d=d.slice(d.indexOf(g)+g.length),ue+=g.length),_r[b]?(g?le(c).empty=!1:le(c).unusedTokens.push(b),pu(b,g,c)):c._strict&&!g&&le(c).unusedTokens.push(b);le(c).charsLeftOver=J-ue,d.length>0&&le(c).unusedInput.push(d),c._a[3]<=12&&!0===le(c).bigHour&&c._a[3]>0&&(le(c).bigHour=void 0),le(c).parsedDateParts=c._a.slice(0),le(c).meridiem=c._meridiem,c._a[3]=function Re(c,d,h){var g;return null==h?d:null!=c.meridiemHour?c.meridiemHour(d,h):(null!=c.isPM&&((g=c.isPM(h))&&d<12&&(d+=12),!g&&12===d&&(d=0)),d)}(c._locale,c._a[3],c._meridiem),null!==(xe=le(c).era)&&(c._a[0]=c._locale.erasConvertYear(xe,c._a[0])),Ls(c),Bn(c)}else dl(c);else ul(c)}function hn(c){var d=c._i,h=c._f;return c._locale=c._locale||qi(c._l),null===d||void 0===h&&""===d?pr({nullInput:!0}):("string"==typeof d&&(c._i=d=c._locale.preparse(d)),Wn(d)?new gr(Bn(d)):(zi(d)?c._d=d:dn(h)?function Xt(c){var d,h,g,_,b,T,J=!1,ue=c._f.length;if(0===ue)return le(c).invalidFormat=!0,void(c._d=new Date(NaN));for(_=0;_this?this:c:pr()});function Ji(c,d){var h,g;if(1===d.length&&dn(d[0])&&(d=d[0]),!d.length)return G();for(h=d[0],g=1;g=0?new Date(c+400,d,h)-$s:new Date(c,d,h).valueOf()}function Ou(c,d,h){return c<100&&c>=0?Date.UTC(c+400,d,h)-$s:Date.UTC(c,d,h)}function Ks(c,d){return d.erasAbbrRegex(c)}function me(){var _,b,c=[],d=[],h=[],g=[],T=this.eras();for(_=0,b=T.length;_(b=Yi(c,g,_))&&(d=b),py.call(this,c,d,h,g,_))}function py(c,d,h,g,_){var b=te(c,d,h,g,_),T=Po(b.year,0,b.dayOfYear);return this.year(T.getUTCFullYear()),this.month(T.getUTCMonth()),this.date(T.getUTCDate()),this}q("N",0,0,"eraAbbr"),q("NN",0,0,"eraAbbr"),q("NNN",0,0,"eraAbbr"),q("NNNN",0,0,"eraName"),q("NNNNN",0,0,"eraNarrow"),q("y",["y",1],"yo","eraYear"),q("y",["yy",2],0,"eraYear"),q("y",["yyy",3],0,"eraYear"),q("y",["yyyy",4],0,"eraYear"),$("N",Ks),$("NN",Ks),$("NNN",Ks),$("NNNN",function Jh(c,d){return d.erasNameRegex(c)}),$("NNNNN",function Zh(c,d){return d.erasNarrowRegex(c)}),Pe(["N","NN","NNN","NNNN","NNNNN"],function(c,d,h,g){var _=h._locale.erasParse(c,g,h._strict);_?le(h).era=_:le(h).invalidEra=c}),$("y",vr),$("yy",vr),$("yyy",vr),$("yyyy",vr),$("yo",function k(c,d){return d._eraYearOrdinalRegex||vr}),Pe(["y","yy","yyy","yyyy"],0),Pe(["yo"],function(c,d,h,g){var _;h._locale._eraYearOrdinalRegex&&(_=c.match(h._locale._eraYearOrdinalRegex)),d[0]=h._locale.eraYearOrdinalParse?h._locale.eraYearOrdinalParse(c,_):parseInt(c,10)}),q(0,["gg",2],0,function(){return this.weekYear()%100}),q(0,["GG",2],0,function(){return this.isoWeekYear()%100}),nt("gggg","weekYear"),nt("ggggg","weekYear"),nt("GGGG","isoWeekYear"),nt("GGGGG","isoWeekYear"),xt("weekYear","gg"),xt("isoWeekYear","GG"),St("weekYear",1),St("isoWeekYear",1),$("G",Oo),$("g",Oo),$("GG",Ke,Sn),$("gg",Ke,Sn),$("GGGG",du,rl),$("gggg",du,rl),$("GGGGG",Yr,As),$("ggggg",Yr,As),xo(["gggg","ggggg","GGGG","GGGGG"],function(c,d,h,g){d[g.substr(0,2)]=he(c)}),xo(["gg","GG"],function(c,d,h,g){d[g]=V.parseTwoDigitYear(c)}),q("Q",0,"Qo","quarter"),xt("quarter","Q"),St("quarter",7),$("Q",au),Pe("Q",function(c,d){d[1]=3*(he(c)-1)}),q("D",["DD",2],"Do","date"),xt("date","D"),St("date",9),$("D",Ke),$("DD",Ke,Sn),$("Do",function(c,d){return c?d._dayOfMonthOrdinalParse||d._ordinalParse:d._dayOfMonthOrdinalParseLenient}),Pe(["D","DD"],2),Pe("Do",function(c,d){d[2]=he(c.match(Ke)[0])});var Xh=wn("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),xt("dayOfYear","DDD"),St("dayOfYear",4),$("DDD",Is),$("DDDD",lu),Pe(["DDD","DDDD"],function(c,d,h){h._dayOfYear=he(c)}),q("m",["mm",2],0,"minute"),xt("minute","m"),St("minute",14),$("m",Ke),$("mm",Ke,Sn),Pe(["m","mm"],4);var rn=wn("Minutes",!1);q("s",["ss",2],0,"second"),xt("second","s"),St("second",15),$("s",Ke),$("ss",Ke,Sn),Pe(["s","ss"],5);var Mi,Er,Ei=wn("Seconds",!1);for(q("S",0,0,function(){return~~(this.millisecond()/100)}),q(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,function(){return 10*this.millisecond()}),q(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),q(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),q(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),q(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),q(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),xt("millisecond","ms"),St("millisecond",16),$("S",Is,au),$("SS",Is,Sn),$("SSS",Is,lu),Mi="SSSS";Mi.length<=9;Mi+="S")$(Mi,vr);function Ti(c,d){d[6]=he(1e3*("0."+c))}for(Mi="S";Mi.length<=9;Mi+="S")Pe(Mi,Ti);Er=wn("Milliseconds",!1),q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");var x=gr.prototype;function Ys(c){return c}x.add=Vh,x.calendar=function ny(c,d){1===arguments.length&&(arguments[0]?Zv(arguments[0])?(c=arguments[0],d=void 0):ey(arguments[0])&&(d=arguments[0],c=void 0):(c=void 0,d=void 0));var h=c||G(),g=Zi(h,this).startOf("day"),_=V.calendarFormat(this,g)||"sameElse",b=d&&(ii(d[_])?d[_].call(this,h):d[_]);return this.format(b||this.localeData().calendar(_,this,G(h)))},x.clone=function iy(){return new gr(this)},x.diff=function pl(c,d,h){var g,_,b;if(!this.isValid())return NaN;if(!(g=Zi(c,this)).isValid())return NaN;switch(_=6e4*(g.utcOffset()-this.utcOffset()),d=Ln(d)){case"year":b=gl(this,g)/12;break;case"month":b=gl(this,g);break;case"quarter":b=gl(this,g)/3;break;case"second":b=(this-g)/1e3;break;case"minute":b=(this-g)/6e4;break;case"hour":b=(this-g)/36e5;break;case"day":b=(this-g-_)/864e5;break;case"week":b=(this-g-_)/6048e5;break;default:b=this-g}return h?b:Vn(b)},x.endOf=function ft(c){var d,h;if(void 0===(c=Ln(c))||"millisecond"===c||!this.isValid())return this;switch(h=this._isUTC?Ou:Us,c){case"year":d=h(this.year()+1,0,1)-1;break;case"quarter":d=h(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":d=h(this.year(),this.month()+1,1)-1;break;case"week":d=h(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":d=h(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":d=h(this.year(),this.month(),this.date()+1)-1;break;case"hour":d=this._d.valueOf(),d+=nn-io(d+(this._isUTC?0:this.utcOffset()*no),nn)-1;break;case"minute":d=this._d.valueOf(),d+=no-io(d,no)-1;break;case"second":d=this._d.valueOf(),d+=1e3-io(d,1e3)-1}return this._d.setTime(d),V.updateOffset(this,!0),this},x.format=function Bh(c){c||(c=this.isUtc()?V.defaultFormatUtc:V.defaultFormat);var d=Ts(this,c);return this.localeData().postformat(d)},x.from=function Wt(c,d){return this.isValid()&&(Wn(c)&&c.isValid()||G(c).isValid())?pn({to:this,from:c}).locale(this.locale()).humanize(!d):this.localeData().invalidDate()},x.fromNow=function Au(c){return this.from(G(),c)},x.to=function jh(c,d){return this.isValid()&&(Wn(c)&&c.isValid()||G(c).isValid())?pn({from:this,to:c}).locale(this.locale()).humanize(!d):this.localeData().invalidDate()},x.toNow=function $h(c){return this.to(G(),c)},x.get=function su(c){return ii(this[c=Ln(c)])?this[c]():this},x.invalidAt=function Wh(){return le(this).overflow},x.isAfter=function ry(c,d){var h=Wn(c)?c:G(c);return!(!this.isValid()||!h.isValid())&&("millisecond"===(d=Ln(d)||"millisecond")?this.valueOf()>h.valueOf():h.valueOf()9999?Ts(h,d?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):ii(Date.prototype.toISOString)?d?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",Ts(h,"Z")):Ts(h,d?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},x.inspect=function Sr(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var h,g,c="moment",d="";return this.isLocal()||(c=0===this.utcOffset()?"moment.utc":"moment.parseZone",d="Z"),h="["+c+'("]',g=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(h+g+"-MM-DD[T]HH:mm:ss.SSS"+d+'[")]')},typeof Symbol<"u"&&null!=Symbol.for&&(x[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),x.toJSON=function vl(){return this.isValid()?this.toISOString():null},x.toString=function cy(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},x.unix=function fy(){return Math.floor(this.valueOf()/1e3)},x.valueOf=function Uh(){return this._d.valueOf()-6e4*(this._offset||0)},x.creationData=function Ws(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},x.eraName=function yl(){var c,d,h,g=this.localeData().eras();for(c=0,d=g.length;cthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},x.isLocal=function Gt(){return!!this.isValid()&&!this._isUTC},x.isUtcOffset=function Fh(){return!!this.isValid()&&this._isUTC},x.isUtc=tn,x.isUTC=tn,x.zoneAbbr=function ep(){return this._isUTC?"UTC":""},x.zoneName=function Pu(){return this._isUTC?"Coordinated Universal Time":""},x.dates=Zt("dates accessor is deprecated. Use date instead.",Xh),x.months=Zt("months accessor is deprecated. Use month instead",bu),x.years=Zt("years accessor is deprecated. Use year instead",ks),x.zone=Zt("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function Rh(c,d){return null!=c?("string"!=typeof c&&(c=-c),this.utcOffset(c,d),this):-this.utcOffset()}),x.isDSTShifted=Zt("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function wr(){if(!qt(this._isDSTShifted))return this._isDSTShifted;var d,c={};return Qa(c,this),(c=hn(c))._a?(d=c._isUTC?ni(c._a):G(c._a),this._isDSTShifted=this.isValid()&&function Ut(c,d,h){var T,g=Math.min(c.length,d.length),_=Math.abs(c.length-d.length),b=0;for(T=0;T0):this._isDSTShifted=!1,this._isDSTShifted});var Ee=el.prototype;function oo(c,d,h,g){var _=qi(),b=ni().set(g,d);return _[h](b,c)}function Lu(c,d,h){if(Jt(c)&&(d=c,c=void 0),c=c||"",null!=d)return oo(c,d,h,"month");var g,_=[];for(g=0;g<12;g++)_[g]=oo(c,g,h,"month");return _}function qs(c,d,h,g){"boolean"==typeof c?(Jt(d)&&(h=d,d=void 0),d=d||""):(h=d=c,c=!1,Jt(d)&&(h=d,d=void 0),d=d||"");var T,_=qi(),b=c?_._week.dow:0,J=[];if(null!=h)return oo(d,(h+b)%7,g,"day");for(T=0;T<7;T++)J[T]=oo(d,(T+b)%7,g,"day");return J}Ee.calendar=function nu(c,d,h){var g=this._calendar[c]||this._calendar.sameElse;return ii(g)?g.call(d,h):g},Ee.longDateFormat=function uh(c){var d=this._longDateFormat[c],h=this._longDateFormat[c.toUpperCase()];return d||!h?d:(this._longDateFormat[c]=h.match(tl).map(function(g){return"MMMM"===g||"MM"===g||"DD"===g||"dddd"===g?g.slice(1):g}).join(""),this._longDateFormat[c])},Ee.invalidDate=function dh(){return this._invalidDate},Ee.ordinal=function Iv(c){return this._ordinal.replace("%d",c)},Ee.preparse=Ys,Ee.postformat=Ys,Ee.relativeTime=function kv(c,d,h,g){var _=this._relativeTime[h];return ii(_)?_(c,d,h,g):_.replace(/%d/i,c)},Ee.pastFuture=function Rv(c,d){var h=this._relativeTime[c>0?"future":"past"];return ii(h)?h(d):h.replace(/%s/i,d)},Ee.set=function Xa(c){var d,h;for(h in c)we(c,h)&&(ii(d=c[h])?this[h]=d:this["_"+h]=d);this._config=c,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Ee.eras=function Kh(c,d){var h,g,_,b=this._eras||qi("en")._eras;for(h=0,g=b.length;h=0)return b[g]},Ee.erasConvertYear=function ku(c,d){var h=c.since<=c.until?1:-1;return void 0===d?V(c.since).year():V(c.since).year()+(d-c.offset)*h},Ee.erasAbbrRegex=function Yh(c){return we(this,"_erasAbbrRegex")||me.call(this),c?this._erasAbbrRegex:this._erasRegex},Ee.erasNameRegex=function zh(c){return we(this,"_erasNameRegex")||me.call(this),c?this._erasNameRegex:this._erasRegex},Ee.erasNarrowRegex=function qh(c){return we(this,"_erasNarrowRegex")||me.call(this),c?this._erasNarrowRegex:this._erasRegex},Ee.months=function vh(c,d){return c?dn(this._months)?this._months[c.month()]:this._months[(this._months.isFormat||sl).test(d)?"format":"standalone"][c.month()]:dn(this._months)?this._months:this._months.standalone},Ee.monthsShort=function yh(c,d){return c?dn(this._monthsShort)?this._monthsShort[c.month()]:this._monthsShort[sl.test(d)?"format":"standalone"][c.month()]:dn(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Ee.monthsParse=function vu(c,d,h){var g,_,b;if(this._monthsParseExact)return bh.call(this,c,d,h);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),g=0;g<12;g++){if(_=ni([2e3,g]),h&&!this._longMonthsParse[g]&&(this._longMonthsParse[g]=new RegExp("^"+this.months(_,"").replace(".","")+"$","i"),this._shortMonthsParse[g]=new RegExp("^"+this.monthsShort(_,"").replace(".","")+"$","i")),!h&&!this._monthsParse[g]&&(b="^"+this.months(_,"")+"|^"+this.monthsShort(_,""),this._monthsParse[g]=new RegExp(b.replace(".",""),"i")),h&&"MMMM"===d&&this._longMonthsParse[g].test(c))return g;if(h&&"MMM"===d&&this._shortMonthsParse[g].test(c))return g;if(!h&&this._monthsParse[g].test(c))return g}},Ee.monthsRegex=function Ch(c){return this._monthsParseExact?(we(this,"_monthsRegex")||Os.call(this),c?this._monthsStrictRegex:this._monthsRegex):(we(this,"_monthsRegex")||(this._monthsRegex=_h),this._monthsStrictRegex&&c?this._monthsStrictRegex:this._monthsRegex)},Ee.monthsShortRegex=function Dh(c){return this._monthsParseExact?(we(this,"_monthsRegex")||Os.call(this),c?this._monthsShortStrictRegex:this._monthsShortRegex):(we(this,"_monthsShortRegex")||(this._monthsShortRegex=_u),this._monthsShortStrictRegex&&c?this._monthsShortStrictRegex:this._monthsShortRegex)},Ee.week=function F(c){return br(c,this._week.dow,this._week.doy).week},Ee.firstDayOfYear=function Ae(){return this._week.doy},Ee.firstDayOfWeek=function se(){return this._week.dow},Ee.weekdays=function Bv(c,d){var h=dn(this._weekdays)?this._weekdays:this._weekdays[c&&!0!==c&&this._weekdays.isFormat.test(d)?"format":"standalone"];return!0===c?Qt(h,this._week.dow):c?h[c.day()]:h},Ee.weekdaysMin=function Eh(c){return!0===c?Qt(this._weekdaysMin,this._week.dow):c?this._weekdaysMin[c.day()]:this._weekdaysMin},Ee.weekdaysShort=function jv(c){return!0===c?Qt(this._weekdaysShort,this._week.dow):c?this._weekdaysShort[c.day()]:this._weekdaysShort},Ee.weekdaysParse=function Mh(c,d,h){var g,_,b;if(this._weekdaysParseExact)return $v.call(this,c,d,h);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),g=0;g<7;g++){if(_=ni([2e3,1]).day(g),h&&!this._fullWeekdaysParse[g]&&(this._fullWeekdaysParse[g]=new RegExp("^"+this.weekdays(_,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[g]=new RegExp("^"+this.weekdaysShort(_,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[g]=new RegExp("^"+this.weekdaysMin(_,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[g]||(b="^"+this.weekdays(_,"")+"|^"+this.weekdaysShort(_,"")+"|^"+this.weekdaysMin(_,""),this._weekdaysParse[g]=new RegExp(b.replace(".",""),"i")),h&&"dddd"===d&&this._fullWeekdaysParse[g].test(c))return g;if(h&&"ddd"===d&&this._shortWeekdaysParse[g].test(c))return g;if(h&&"dd"===d&&this._minWeekdaysParse[g].test(c))return g;if(!h&&this._weekdaysParse[g].test(c))return g}},Ee.weekdaysRegex=function Gv(c){return this._weekdaysParseExact?(we(this,"_weekdaysRegex")||U.call(this),c?this._weekdaysStrictRegex:this._weekdaysRegex):(we(this,"_weekdaysRegex")||(this._weekdaysRegex=yi),this._weekdaysStrictRegex&&c?this._weekdaysStrictRegex:this._weekdaysRegex)},Ee.weekdaysShortRegex=function Wv(c){return this._weekdaysParseExact?(we(this,"_weekdaysRegex")||U.call(this),c?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(we(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Vv),this._weekdaysShortStrictRegex&&c?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Ee.weekdaysMinRegex=function Kv(c){return this._weekdaysParseExact?(we(this,"_weekdaysRegex")||U.call(this),c?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(we(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Hv),this._weekdaysMinStrictRegex&&c?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Ee.isPM=function Su(c){return"p"===(c+"").toLowerCase().charAt(0)},Ee.meridiem=function Eu(c,d,h){return c>11?h?"pm":"PM":h?"am":"AM"},Dr("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(c){var d=c%10;return c+(1===he(c%100/10)?"th":1===d?"st":2===d?"nd":3===d?"rd":"th")}}),V.lang=Zt("moment.lang is deprecated. Use moment.locale instead.",Dr),V.langData=Zt("moment.langData is deprecated. Use moment.localeData instead.",qi);var Yn=Math.abs;function $u(c,d,h,g){var _=pn(d,h);return c._milliseconds+=g*_._milliseconds,c._days+=g*_._days,c._months+=g*_._months,c._bubble()}function Ze(c){return c<0?Math.floor(c):Math.ceil(c)}function Uu(c){return 4800*c/146097}function wl(c){return 146097*c/4800}function Ni(c){return function(){return this.as(c)}}var Js=Ni("ms"),Zs=Ni("s"),Qs=Ni("m"),Sl=Ni("h"),Gu=Ni("d"),sp=Ni("w"),er=Ni("M"),Wo=Ni("Q"),ap=Ni("y");function Ai(c){return function(){return this.isValid()?this._data[c]:NaN}}var cp=Ai("milliseconds"),up=Ai("seconds"),gy=Ai("minutes"),my=Ai("hours"),Xs=Ai("days"),Wu=Ai("months"),Ku=Ai("years");var li=Math.round,Mr={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function so(c,d,h,g,_){return _.relativeTime(d||1,!!h,c,g)}var zu=Math.abs;function Tr(c){return(c>0)-(c<0)||+c}function zo(){if(!this.isValid())return this.localeData().invalidDate();var g,_,b,T,ue,xe,Kt,ci,c=zu(this._milliseconds)/1e3,d=zu(this._days),h=zu(this._months),J=this.asSeconds();return J?(g=Vn(c/60),_=Vn(g/60),c%=60,g%=60,b=Vn(h/12),h%=12,T=c?c.toFixed(3).replace(/\.?0+$/,""):"",ue=J<0?"-":"",xe=Tr(this._months)!==Tr(J)?"-":"",Kt=Tr(this._days)!==Tr(J)?"-":"",ci=Tr(this._milliseconds)!==Tr(J)?"-":"",ue+"P"+(b?xe+b+"Y":"")+(h?xe+h+"M":"")+(d?Kt+d+"D":"")+(_||g||c?"T":"")+(_?ci+_+"H":"")+(g?ci+g+"M":"")+(c?ci+T+"S":"")):"P0D"}var Ce=wi.prototype;return Ce.isValid=function ce(){return this._isValid},Ce.abs=function np(){var c=this._data;return this._milliseconds=Yn(this._milliseconds),this._days=Yn(this._days),this._months=Yn(this._months),c.milliseconds=Yn(c.milliseconds),c.seconds=Yn(c.seconds),c.minutes=Yn(c.minutes),c.hours=Yn(c.hours),c.months=Yn(c.months),c.years=Yn(c.years),this},Ce.add=function on(c,d){return $u(this,c,d,1)},Ce.subtract=function Xi(c,d){return $u(this,c,d,-1)},Ce.as=function rp(c){if(!this.isValid())return NaN;var d,h,g=this._milliseconds;if("month"===(c=Ln(c))||"quarter"===c||"year"===c)switch(d=this._days+g/864e5,h=this._months+Uu(d),c){case"month":return h;case"quarter":return h/3;case"year":return h/12}else switch(d=this._days+Math.round(wl(this._months)),c){case"week":return d/7+g/6048e5;case"day":return d+g/864e5;case"hour":return 24*d+g/36e5;case"minute":return 1440*d+g/6e4;case"second":return 86400*d+g/1e3;case"millisecond":return Math.floor(864e5*d)+g;default:throw new Error("Unknown unit "+c)}},Ce.asMilliseconds=Js,Ce.asSeconds=Zs,Ce.asMinutes=Qs,Ce.asHours=Sl,Ce.asDays=Gu,Ce.asWeeks=sp,Ce.asMonths=er,Ce.asQuarters=Wo,Ce.asYears=ap,Ce.valueOf=function op(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*he(this._months/12):NaN},Ce._bubble=function ip(){var _,b,T,J,ue,c=this._milliseconds,d=this._days,h=this._months,g=this._data;return c>=0&&d>=0&&h>=0||c<=0&&d<=0&&h<=0||(c+=864e5*Ze(wl(h)+d),d=0,h=0),g.milliseconds=c%1e3,_=Vn(c/1e3),g.seconds=_%60,b=Vn(_/60),g.minutes=b%60,T=Vn(b/60),g.hours=T%24,d+=Vn(T/24),h+=ue=Vn(Uu(d)),d-=Ze(wl(ue)),J=Vn(h/12),h%=12,g.days=d,g.months=h,g.years=J,this},Ce.clone=function lp(){return pn(this)},Ce.get=function Ko(c){return c=Ln(c),this.isValid()?this[c+"s"]():NaN},Ce.milliseconds=cp,Ce.seconds=up,Ce.minutes=gy,Ce.hours=my,Ce.days=Xs,Ce.weeks=function ea(){return Vn(this.days()/7)},Ce.months=Wu,Ce.years=Ku,Ce.humanize=function ta(c,d){if(!this.isValid())return this.localeData().invalidDate();var _,b,h=!1,g=Mr;return"object"==typeof c&&(d=c,c=!1),"boolean"==typeof c&&(h=c),"object"==typeof d&&(g=Object.assign({},Mr,d),null!=d.s&&null==d.ss&&(g.ss=d.s-1)),b=function dp(c,d,h,g){var _=pn(c).abs(),b=li(_.as("s")),T=li(_.as("m")),J=li(_.as("h")),ue=li(_.as("d")),xe=li(_.as("M")),Kt=li(_.as("w")),ci=li(_.as("y")),tr=b<=h.ss&&["s",b]||b0,tr[4]=g,so.apply(null,tr)}(this,!h,g,_=this.localeData()),h&&(b=_.pastFuture(+this,b)),_.postformat(b)},Ce.toISOString=zo,Ce.toString=zo,Ce.toJSON=zo,Ce.locale=ml,Ce.localeData=Iu,Ce.toIsoString=Zt("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",zo),Ce.lang=_l,q("X",0,0,"unix"),q("x",0,0,"valueOf"),$("x",Oo),$("X",/[+-]?\d+(\.\d{1,3})?/),Pe("X",function(c,d,h){h._d=new Date(1e3*parseFloat(c))}),Pe("x",function(c,d,h){h._d=new Date(he(c))}),V.version="2.29.4",function Ja(c){be=c}(G),V.fn=x,V.min=function Nt(){return Ji("isBefore",[].slice.call(arguments,0))},V.max=function Cr(){return Ji("isAfter",[].slice.call(arguments,0))},V.now=function(){return Date.now?Date.now():+new Date},V.utc=ni,V.unix=function tp(c){return G(1e3*c)},V.months=function Cl(c,d){return Lu(c,d,"months")},V.isDate=zi,V.locale=Dr,V.invalid=pr,V.duration=pn,V.isMoment=Wn,V.weekdays=function Hu(c,d,h){return qs(c,d,h,"weekdays")},V.parseZone=function Dl(){return G.apply(null,arguments).parseZone()},V.localeData=qi,V.isDuration=Qr,V.monthsShort=function Vu(c,d){return Lu(c,d,"monthsShort")},V.weekdaysMin=function ju(c,d,h){return qs(c,d,h,"weekdaysMin")},V.defineLocale=oi,V.updateLocale=function Kn(c,d){if(null!=d){var h,g,_=Vo;null!=$e[c]&&null!=$e[c].parentLocale?$e[c].set(Pn($e[c]._config,d)):(null!=(g=Bo(c))&&(_=g._config),d=Pn(_,d),null==g&&(d.abbr=c),(h=new el(d)).parentLocale=$e[c],$e[c]=h),Dr(c)}else null!=$e[c]&&(null!=$e[c].parentLocale?($e[c]=$e[c].parentLocale,c===Dr()&&Dr(c)):null!=$e[c]&&delete $e[c]);return $e[c]},V.locales=function zv(){return Es($e)},V.weekdaysShort=function Bu(c,d,h){return qs(c,d,h,"weekdaysShort")},V.normalizeUnits=Ln,V.relativeTimeRounding=function ao(c){return void 0===c?li:"function"==typeof c&&(li=c,!0)},V.relativeTimeThreshold=function El(c,d){return void 0!==Mr[c]&&(void 0===d?Mr[c]:(Mr[c]=d,"s"===c&&(Mr.ss=d-1),!0))},V.calendarFormat=function ty(c,d){var h=c.diff(d,"days",!0);return h<-6?"sameElse":h<-1?"lastWeek":h<0?"lastDay":h<1?"sameDay":h<2?"nextDay":h<7?"nextWeek":"sameElse"},V.prototype=x,V.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},V}()}},hr=>{hr(hr.s=631)}]); \ No newline at end of file diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/polyfills.js b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/polyfills.js index 1536f9c60..6263d3963 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/polyfills.js +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/polyfills.js @@ -1,197 +1 @@ -"use strict";(self.webpackChunkdashboard=self.webpackChunkdashboard||[]).push([[429],{565:(rr,Ar,ds)=>{Error; -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const jo=function(r,...e){if(jo.translate){const n=jo.translate(r,e);r=n[0],e=n[1]}let t=Kl(r[0],r.raw[0]);for(let n=1;ntypeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)().$localize=jo,ds(609)},609:function(rr,Ar,ds){var Fe,at,bt=this&&this.__spreadArray||function(St,Ot,yn){if(yn||2===arguments.length)for(var Dt,It=0,ue=Ot.length;It",this._properties=v&&v.properties||{},this._zoneDelegate=new q(this,this._parent&&this._parent._zoneDelegate,v)}return k.assertZonePatched=function(){if(p.Promise!==re.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(k,"root",{get:function(){for(var y=k.current;y.parent;)y=y.parent;return y},enumerable:!1,configurable:!0}),Object.defineProperty(k,"current",{get:function(){return Me.zone},enumerable:!1,configurable:!0}),Object.defineProperty(k,"currentTask",{get:function(){return Ze},enumerable:!1,configurable:!0}),k.__load_patch=function(y,v,S){if(void 0===S&&(S=!1),re.hasOwnProperty(y)){if(!S&&b)throw Error("Already loaded patch: "+y)}else if(!p["__Zone_disable_"+y]){var K="Zone:"+y;m(K),re[y]=v(p,k,Ie),d(K,K)}},Object.defineProperty(k.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(k.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),k.prototype.get=function(y){var v=this.getZoneWith(y);if(v)return v._properties[y]},k.prototype.getZoneWith=function(y){for(var v=this;v;){if(v._properties.hasOwnProperty(y))return v;v=v._parent}return null},k.prototype.fork=function(y){if(!y)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,y)},k.prototype.wrap=function(y,v){if("function"!=typeof y)throw new Error("Expecting function got: "+y);var S=this._zoneDelegate.intercept(this,y,v),K=this;return function(){return K.runGuarded(S,this,arguments,v)}},k.prototype.run=function(y,v,S,K){Me={parent:Me,zone:this};try{return this._zoneDelegate.invoke(this,y,v,S,K)}finally{Me=Me.parent}},k.prototype.runGuarded=function(y,v,S,K){void 0===v&&(v=null),Me={parent:Me,zone:this};try{try{return this._zoneDelegate.invoke(this,y,v,S,K)}catch(be){if(this._zoneDelegate.handleError(this,be))throw be}}finally{Me=Me.parent}},k.prototype.runTask=function(y,v,S){if(y.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(y.zone||H).name+"; Execution: "+this.name+")");if(y.state!==Ae||y.type!==de&&y.type!==ne){var K=y.state!=Ce;K&&y._transitionTo(Ce,Te),y.runCount++;var be=Ze;Ze=y,Me={parent:Me,zone:this};try{y.type==ne&&y.data&&!y.data.isPeriodic&&(y.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,y,v,S)}catch(ut){if(this._zoneDelegate.handleError(this,ut))throw ut}}finally{y.state!==Ae&&y.state!==Ne&&(y.type==de||y.data&&y.data.isPeriodic?K&&y._transitionTo(Te,Ce):(y.runCount=0,this._updateTaskCount(y,-1),K&&y._transitionTo(Ae,Ce,Ae))),Me=Me.parent,Ze=be}}},k.prototype.scheduleTask=function(y){if(y.zone&&y.zone!==this)for(var v=this;v;){if(v===y.zone)throw Error("can not reschedule task to ".concat(this.name," which is descendants of the original zone ").concat(y.zone.name));v=v.parent}y._transitionTo(_e,Ae);var S=[];y._zoneDelegates=S,y._zone=this;try{y=this._zoneDelegate.scheduleTask(this,y)}catch(K){throw y._transitionTo(Ne,_e,Ae),this._zoneDelegate.handleError(this,K),K}return y._zoneDelegates===S&&this._updateTaskCount(y,1),y.state==_e&&y._transitionTo(Te,_e),y},k.prototype.scheduleMicroTask=function(y,v,S,K){return this.scheduleTask(new C(he,y,v,S,K,void 0))},k.prototype.scheduleMacroTask=function(y,v,S,K,be){return this.scheduleTask(new C(ne,y,v,S,K,be))},k.prototype.scheduleEventTask=function(y,v,S,K,be){return this.scheduleTask(new C(de,y,v,S,K,be))},k.prototype.cancelTask=function(y){if(y.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(y.zone||H).name+"; Execution: "+this.name+")");y._transitionTo(X,Te,Ce);try{this._zoneDelegate.cancelTask(this,y)}catch(v){throw y._transitionTo(Ne,X),this._zoneDelegate.handleError(this,v),v}return this._updateTaskCount(y,-1),y._transitionTo(Ae,X),y.runCount=0,y},k.prototype._updateTaskCount=function(y,v){var S=y._zoneDelegates;-1==v&&(y._zoneDelegates=null);for(var K=0;K0,macroTask:S.macroTask>0,eventTask:S.eventTask>0,change:y})},k}(),C=function(){function k(y,v,S,K,be,ut){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=y,this.source=v,this.data=K,this.scheduleFn=be,this.cancelFn=ut,!S)throw new Error("callback is not defined");this.callback=S;var I=this;this.invoke=y===de&&K&&K.useG?k.invokeTask:function(){return k.invokeTask.call(p,I,this,arguments)}}return k.invokeTask=function(y,v,S){y||(y=this),Pe++;try{return y.runCount++,y.zone.runTask(y,v,S)}finally{1==Pe&&me(),Pe--}},Object.defineProperty(k.prototype,"zone",{get:function(){return this._zone},enumerable:!1,configurable:!0}),Object.defineProperty(k.prototype,"state",{get:function(){return this._state},enumerable:!1,configurable:!0}),k.prototype.cancelScheduleRequest=function(){this._transitionTo(Ae,_e)},k.prototype._transitionTo=function(y,v,S){if(this._state!==v&&this._state!==S)throw new Error("".concat(this.type," '").concat(this.source,"': can not transition to '").concat(y,"', expecting state '").concat(v,"'").concat(S?" or '"+S+"'":"",", was '").concat(this._state,"'."));this._state=y,y==Ae&&(this._zoneDelegates=null)},k.prototype.toString=function(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)},k.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}},k}(),W=x("setTimeout"),U=x("Promise"),te=x("then"),Q=[],fe=!1;function pe(k){if(Re||p[U]&&(Re=p[U].resolve(0)),Re){var y=Re[te];y||(y=Re.then),y.call(Re,k)}else p[W](k,0)}function Le(k){0===Pe&&0===Q.length&&pe(me),k&&Q.push(k)}function me(){if(!fe){for(fe=!0;Q.length;){var k=Q;Q=[];for(var y=0;y=0;m--)"function"==typeof p[m]&&(p[m]=br(p[m],f+"_"+m));return p}function fs(p){return!p||!1!==p.writable&&!("function"==typeof p.get&&typeof p.set>"u")}var ms=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,ir=!("nw"in Ve)&&typeof Ve.process<"u"&&"[object process]"==={}.toString.call(Ve.process),Sn=!ir&&!ms&&!(!st||!Zt.HTMLElement),hi=typeof Ve.process<"u"&&"[object process]"==={}.toString.call(Ve.process)&&!ms&&!(!st||!Zt.HTMLElement),or={},gs=function(p){if(p=p||Ve.event){var f=or[p.type];f||(f=or[p.type]=ee("ON_PROPERTY"+p.type));var T,m=this||p.target||Ve,d=m[f];return Sn&&m===Zt&&"error"===p.type?!0===(T=d&&d.call(this,p.message,p.filename,p.lineno,p.colno,p.error))&&p.preventDefault():null!=(T=d&&d.apply(this,arguments))&&!T&&p.preventDefault(),T}};function vs(p,f,m){var d=St(p,f);if(!d&&m&&St(m,f)&&(d={enumerable:!0,configurable:!0}),d&&d.configurable){var x=ee("on"+f+"patched");if(!p.hasOwnProperty(x)||!p[x]){delete d.writable,delete d.value;var b=d.get,P=d.set,O=f.slice(2),q=or[O];q||(q=or[O]=ee("ON_PROPERTY"+O)),d.set=function(C){var W=this;!W&&p===Ve&&(W=Ve),W&&("function"==typeof W[q]&&W.removeEventListener(O,gs),P&&P.call(W,null),W[q]=C,"function"==typeof C&&W.addEventListener(O,gs,!1))},d.get=function(){var C=this;if(!C&&p===Ve&&(C=Ve),!C)return null;var W=C[q];if(W)return W;if(b){var U=b.call(this);if(U)return d.set.call(this,U),"function"==typeof C.removeAttribute&&C.removeAttribute(f),U}return null},Ot(p,f,d),p[x]=!0}}}function Es(p,f,m){if(f)for(var d=0;d=0&&"function"==typeof P[O.cbIdx]?Ir(O.name,P[O.cbIdx],O,T):x.apply(b,P)}})}function wt(p,f){p[ee("OriginalDelegate")]=f}var Dr=!1,Nr=!1;function di(){if(Dr)return Nr;Dr=!0;try{var p=Zt.navigator.userAgent;(-1!==p.indexOf("MSIE ")||-1!==p.indexOf("Trident/")||-1!==p.indexOf("Edge/"))&&(Nr=!0)}catch{}return Nr} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */Zone.__load_patch("ZoneAwarePromise",function(p,f,m){var d=Object.getOwnPropertyDescriptor,T=Object.defineProperty;var b=m.symbol,P=[],O=!0===p[b("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],q=b("Promise"),C=b("then");m.onUnhandledError=function(I){if(m.showUncaughtError()){var B=I&&I.rejection;B?console.error("Unhandled Promise rejection:",B instanceof Error?B.message:B,"; Zone:",I.zone.name,"; Task:",I.task&&I.task.source,"; Value:",B,B instanceof Error?B.stack:void 0):console.error(I)}},m.microtaskDrainDone=function(){for(var I=function(){var B=P.shift();try{B.zone.runGuarded(function(){throw B.throwOriginal?B.rejection:B})}catch(L){!function te(I){m.onUnhandledError(I);try{var B=f[U];"function"==typeof B&&B.call(this,I)}catch{}}(L)}};P.length;)I()};var U=b("unhandledPromiseRejectionHandler");function Q(I){return I&&I.then}function fe(I){return I}function Re(I){return v.reject(I)}var pe=b("state"),Le=b("value"),me=b("finally"),H=b("parentPromiseValue"),Ae=b("parentPromiseState"),Te=null,X=!1;function he(I,B){return function(L){try{Ie(I,B,L)}catch(A){Ie(I,!1,A)}}}var ne=function(){var I=!1;return function(L){return function(){I||(I=!0,L.apply(null,arguments))}}},re=b("currentTaskTrace");function Ie(I,B,L){var A=ne();if(I===L)throw new TypeError("Promise resolved with itself");if(I[pe]===Te){var R=null;try{("object"==typeof L||"function"==typeof L)&&(R=L&&L.then)}catch(le){return A(function(){Ie(I,!1,le)})(),I}if(B!==X&&L instanceof v&&L.hasOwnProperty(pe)&&L.hasOwnProperty(Le)&&L[pe]!==Te)Ze(L),Ie(I,L[pe],L[Le]);else if(B!==X&&"function"==typeof R)try{R.call(L,A(he(I,B)),A(he(I,!1)))}catch(le){A(function(){Ie(I,!1,le)})()}else{I[pe]=B;var se=I[Le];if(I[Le]=L,I[me]===me&&true===B&&(I[pe]=I[Ae],I[Le]=I[H]),B===X&&L instanceof Error){var Y=f.currentTask&&f.currentTask.data&&f.currentTask.data.__creationTrace__;Y&&T(L,re,{configurable:!0,enumerable:!1,writable:!0,value:Y})}for(var ie=0;ie2}).map(function(f){return f.substring(2)})}function xs(p,f){if((!ir||hi)&&!Zone[p.symbol("patchEvents")]){var m=f.__Zone_ignore_on_properties,d=[];if(Sn){var T=window;d=d.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);var x=function wn(){try{var p=Zt.navigator.userAgent;if(-1!==p.indexOf("MSIE ")||-1!==p.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:T,ignoreProperties:["error"]}]:[];Ts(T,ur(T),m&&m.concat(x),yn(T))}d=d.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(var b=0;b"u"?delete m.configurable:m.configurable=d;try{return qn(p,f,m)}catch(P){var T=!1;if(("createdCallback"===f||"attachedCallback"===f||"detachedCallback"===f||"attributeChangedCallback"===f)&&(T=!0),!T)throw P;var x=null;try{x=JSON.stringify(m)}catch{x=m.toString()}console.log("Attempting to configure '".concat(f,"' with descriptor '").concat(x,"' on object '").concat(p,"' and got error, giving up: ").concat(P))}}} -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function vi(p,f){var m=p.getGlobalObjects();if((!m.isNode||m.isMix)&&!function Ei(p,f){var m=p.getGlobalObjects();if((m.isBrowser||m.isMix)&&!p.ObjectGetOwnPropertyDescriptor(HTMLElement.prototype,"onclick")&&typeof Element<"u"){var x=p.ObjectGetOwnPropertyDescriptor(Element.prototype,"onclick");if(x&&!x.configurable)return!1;if(x){p.ObjectDefineProperty(Element.prototype,"onclick",{enumerable:!0,configurable:!0,get:function(){return!0}});var P=!!document.createElement("div").onclick;return p.ObjectDefineProperty(Element.prototype,"onclick",x),P}}var O=f.XMLHttpRequest;if(!O)return!1;var q="onreadystatechange",C=O.prototype,W=p.ObjectGetOwnPropertyDescriptor(C,q);if(W)return p.ObjectDefineProperty(C,q,{enumerable:!0,configurable:!0,get:function(){return!0}}),P=!!(U=new O).onreadystatechange,p.ObjectDefineProperty(C,q,W||{}),P;var te=p.symbol("fake");p.ObjectDefineProperty(C,q,{enumerable:!0,configurable:!0,get:function(){return this[te]},set:function(pe){this[te]=pe}});var U,Q=function(){};return(U=new O).onreadystatechange=Q,P=U[te]===Q,U.onreadystatechange=null,P}(p,f)){var x=typeof WebSocket<"u";(function Si(p){for(var f=p.symbol("unbound"),m=function(T){var x=bs[T],b="on"+x;self.addEventListener(x,function(P){var q,C,O=P.target;for(C=O?O.constructor.name+"."+b:"unknown."+b;O;)O[b]&&!O[b][f]&&((q=p.wrapWithCurrentZone(O[b],C))[f]=O[b],O[b]=q),O=O.parentElement},!0)},d=0;d1?new x(O,q):new x(O),te=p.ObjectGetOwnPropertyDescriptor(C,"onmessage");return te&&!1===te.configurable?(W=p.ObjectCreate(C),U=C,[d,T,"send","close"].forEach(function(Q){W[Q]=function(){var fe=p.ArraySlice.call(arguments);if(Q===d||Q===T){var Re=fe.length>0?fe[0]:void 0;if(Re){var pe=Zone.__symbol__("ON_PROPERTY"+Re);C[pe]=W[pe]}}return C[Q].apply(C,fe)}})):W=C,p.patchOnProperties(W,["close","error","message","open"],U),W};var b=f.WebSocket;for(var P in x)b[P]=x[P]}(p,f),Zone[p.symbol("patchEvents")]=!0}}Zone.__load_patch("util",function(p,f,m){var d=ur(p);m.patchOnProperties=Es,m.patchMethod=mt,m.bindArguments=Ee,m.patchMacroTask=Wo;var T=f.__symbol__("BLACK_LISTED_EVENTS"),x=f.__symbol__("UNPATCHED_EVENTS");p[x]&&(p[T]=p[x]),p[T]&&(f[T]=f[x]=p[T]),m.patchEventPrototype=fi,m.patchEventTarget=_s,m.isIEOrEdge=di,m.ObjectDefineProperty=Ot,m.ObjectGetOwnPropertyDescriptor=St,m.ObjectCreate=It,m.ArraySlice=ue,m.patchClass=$n,m.wrapWithCurrentZone=br,m.filterProperties=ws,m.attachOriginToPatched=wt,m._redefineProperty=Object.defineProperty,m.patchCallbacks=mi,m.getGlobalObjects=function(){return{globalSources:Pr,zoneSymbolEventNames:gt,eventNames:d,isBrowser:Sn,isMix:hi,isNode:ir,TRUE_STR:Qe,FALSE_STR:dt,ZONE_SYMBOL_PREFIX:On,ADD_EVENT_LISTENER_STR:Dt,REMOVE_EVENT_LISTENER_STR:_n}}});var p,f,bs=bt(bt(bt(bt(bt(bt(bt(bt([],["abort","animationcancel","animationend","animationiteration","auxclick","beforeinput","blur","cancel","canplay","canplaythrough","change","compositionstart","compositionupdate","compositionend","cuechange","click","close","contextmenu","curechange","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","drop","durationchange","emptied","ended","error","focus","focusin","focusout","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadstart","loadeddata","loadedmetadata","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","orientationchange","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointerlockchange","mozpointerlockchange","webkitpointerlockerchange","pointerlockerror","mozpointerlockerror","webkitpointerlockerror","pointermove","pointout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","seeked","seeking","select","selectionchange","selectstart","show","sort","stalled","submit","suspend","timeupdate","volumechange","touchcancel","touchmove","touchstart","touchend","transitioncancel","transitionend","waiting","wheel"],!0),["webglcontextrestored","webglcontextlost","webglcontextcreationerror"],!0),["autocomplete","autocompleteerror"],!0),["toggle"],!0),["afterscriptexecute","beforescriptexecute","DOMContentLoaded","freeze","fullscreenchange","mozfullscreenchange","webkitfullscreenchange","msfullscreenchange","fullscreenerror","mozfullscreenerror","webkitfullscreenerror","msfullscreenerror","readystatechange","visibilitychange","resume"],!0),["absolutedeviceorientation","afterinput","afterprint","appinstalled","beforeinstallprompt","beforeprint","beforeunload","devicelight","devicemotion","deviceorientation","deviceorientationabsolute","deviceproximity","hashchange","languagechange","message","mozbeforepaint","offline","online","paint","pageshow","pagehide","popstate","rejectionhandled","storage","unhandledrejection","unload","userproximity","vrdisplayconnected","vrdisplaydisconnected","vrdisplaypresentchange"],!0),["beforecopy","beforecut","beforepaste","copy","cut","paste","dragstart","loadend","animationstart","search","transitionrun","transitionstart","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend"],!0),["activate","afterupdate","ariarequest","beforeactivate","beforedeactivate","beforeeditfocus","beforeupdate","cellchange","controlselect","dataavailable","datasetchanged","datasetcomplete","errorupdate","filterchange","layoutcomplete","losecapture","move","moveend","movestart","propertychange","resizeend","resizestart","rowenter","rowexit","rowsdelete","rowsinserted","command","compassneedscalibration","deactivate","help","mscontentzoom","msmanipulationstatechanged","msgesturechange","msgesturedoubletap","msgestureend","msgesturehold","msgesturestart","msgesturetap","msgotpointercapture","msinertiastart","mslostpointercapture","mspointercancel","mspointerdown","mspointerenter","mspointerhover","mspointerleave","mspointermove","mspointerout","mspointerover","mspointerup","pointerout","mssitemodejumplistitemremoved","msthumbnailclick","stop","storagecommit"],!0); -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -p=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},f=p.__Zone_symbol_prefix||"__zone_symbol__",p[function m(d){return f+d}("legacyPatch")]=function(){var d=p.Zone;d.__load_patch("defineProperty",function(T,x,b){b._redefineProperty=We,function gi(){Vn=Zone.__symbol__,qn=Object[Vn("defineProperty")]=Object.defineProperty,Je=Object[Vn("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,et=Object.create,Kt=Vn("unconfigurables"),Object.defineProperty=function(p,f,m){if(lr(p,f))throw new TypeError("Cannot assign to read only property '"+f+"' of "+p);var d=m.configurable;return"prototype"!==f&&(m=Lr(p,f,m)),Cs(p,f,m,d)},Object.defineProperties=function(p,f){Object.keys(f).forEach(function(b){Object.defineProperty(p,b,f[b])});for(var m=0,d=Object.getOwnPropertySymbols(f);m0){var ge=ne.invoke;ne.invoke=function(){for(var k=re[f.__symbol__("loadfalse")],y=0;y{rr(rr.s=565)}]); \ No newline at end of file +"use strict";(self.webpackChunkdashboard=self.webpackChunkdashboard||[]).push([[429],{565:(rr,Ar,ds)=>{Error;const jo=function(r,...e){if(jo.translate){const n=jo.translate(r,e);r=n[0],e=n[1]}let t=Xl(r[0],r.raw[0]);for(let n=1;ntypeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)().$localize=jo,ds(609)},609:function(rr,Ar,ds){var Fe,at,bt=this&&this.__spreadArray||function(wt,Ot,_n){if(_n||2===arguments.length)for(var Dt,It=0,ue=Ot.length;It",this._properties=v&&v.properties||{},this._zoneDelegate=new q(this,this._parent&&this._parent._zoneDelegate,v)}return k.assertZonePatched=function(){if(p.Promise!==re.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(k,"root",{get:function(){for(var y=k.current;y.parent;)y=y.parent;return y},enumerable:!1,configurable:!0}),Object.defineProperty(k,"current",{get:function(){return Me.zone},enumerable:!1,configurable:!0}),Object.defineProperty(k,"currentTask",{get:function(){return Ze},enumerable:!1,configurable:!0}),k.__load_patch=function(y,v,S){if(void 0===S&&(S=!1),re.hasOwnProperty(y)){if(!S&&b)throw Error("Already loaded patch: "+y)}else if(!p["__Zone_disable_"+y]){var K="Zone:"+y;m(K),re[y]=v(p,k,Ie),d(K,K)}},Object.defineProperty(k.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(k.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),k.prototype.get=function(y){var v=this.getZoneWith(y);if(v)return v._properties[y]},k.prototype.getZoneWith=function(y){for(var v=this;v;){if(v._properties.hasOwnProperty(y))return v;v=v._parent}return null},k.prototype.fork=function(y){if(!y)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,y)},k.prototype.wrap=function(y,v){if("function"!=typeof y)throw new Error("Expecting function got: "+y);var S=this._zoneDelegate.intercept(this,y,v),K=this;return function(){return K.runGuarded(S,this,arguments,v)}},k.prototype.run=function(y,v,S,K){Me={parent:Me,zone:this};try{return this._zoneDelegate.invoke(this,y,v,S,K)}finally{Me=Me.parent}},k.prototype.runGuarded=function(y,v,S,K){void 0===v&&(v=null),Me={parent:Me,zone:this};try{try{return this._zoneDelegate.invoke(this,y,v,S,K)}catch(be){if(this._zoneDelegate.handleError(this,be))throw be}}finally{Me=Me.parent}},k.prototype.runTask=function(y,v,S){if(y.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(y.zone||H).name+"; Execution: "+this.name+")");if(y.state!==Ae||y.type!==de&&y.type!==ne){var K=y.state!=Ce;K&&y._transitionTo(Ce,Te),y.runCount++;var be=Ze;Ze=y,Me={parent:Me,zone:this};try{y.type==ne&&y.data&&!y.data.isPeriodic&&(y.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,y,v,S)}catch(ut){if(this._zoneDelegate.handleError(this,ut))throw ut}}finally{y.state!==Ae&&y.state!==Ne&&(y.type==de||y.data&&y.data.isPeriodic?K&&y._transitionTo(Te,Ce):(y.runCount=0,this._updateTaskCount(y,-1),K&&y._transitionTo(Ae,Ce,Ae))),Me=Me.parent,Ze=be}}},k.prototype.scheduleTask=function(y){if(y.zone&&y.zone!==this)for(var v=this;v;){if(v===y.zone)throw Error("can not reschedule task to ".concat(this.name," which is descendants of the original zone ").concat(y.zone.name));v=v.parent}y._transitionTo(_e,Ae);var S=[];y._zoneDelegates=S,y._zone=this;try{y=this._zoneDelegate.scheduleTask(this,y)}catch(K){throw y._transitionTo(Ne,_e,Ae),this._zoneDelegate.handleError(this,K),K}return y._zoneDelegates===S&&this._updateTaskCount(y,1),y.state==_e&&y._transitionTo(Te,_e),y},k.prototype.scheduleMicroTask=function(y,v,S,K){return this.scheduleTask(new C(he,y,v,S,K,void 0))},k.prototype.scheduleMacroTask=function(y,v,S,K,be){return this.scheduleTask(new C(ne,y,v,S,K,be))},k.prototype.scheduleEventTask=function(y,v,S,K,be){return this.scheduleTask(new C(de,y,v,S,K,be))},k.prototype.cancelTask=function(y){if(y.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(y.zone||H).name+"; Execution: "+this.name+")");y._transitionTo(X,Te,Ce);try{this._zoneDelegate.cancelTask(this,y)}catch(v){throw y._transitionTo(Ne,X),this._zoneDelegate.handleError(this,v),v}return this._updateTaskCount(y,-1),y._transitionTo(Ae,X),y.runCount=0,y},k.prototype._updateTaskCount=function(y,v){var S=y._zoneDelegates;-1==v&&(y._zoneDelegates=null);for(var K=0;K0,macroTask:S.macroTask>0,eventTask:S.eventTask>0,change:y})},k}(),C=function(){function k(y,v,S,K,be,ut){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=y,this.source=v,this.data=K,this.scheduleFn=be,this.cancelFn=ut,!S)throw new Error("callback is not defined");this.callback=S;var I=this;this.invoke=y===de&&K&&K.useG?k.invokeTask:function(){return k.invokeTask.call(p,I,this,arguments)}}return k.invokeTask=function(y,v,S){y||(y=this),Pe++;try{return y.runCount++,y.zone.runTask(y,v,S)}finally{1==Pe&&me(),Pe--}},Object.defineProperty(k.prototype,"zone",{get:function(){return this._zone},enumerable:!1,configurable:!0}),Object.defineProperty(k.prototype,"state",{get:function(){return this._state},enumerable:!1,configurable:!0}),k.prototype.cancelScheduleRequest=function(){this._transitionTo(Ae,_e)},k.prototype._transitionTo=function(y,v,S){if(this._state!==v&&this._state!==S)throw new Error("".concat(this.type," '").concat(this.source,"': can not transition to '").concat(y,"', expecting state '").concat(v,"'").concat(S?" or '"+S+"'":"",", was '").concat(this._state,"'."));this._state=y,y==Ae&&(this._zoneDelegates=null)},k.prototype.toString=function(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)},k.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}},k}(),W=x("setTimeout"),U=x("Promise"),te=x("then"),Q=[],fe=!1;function pe(k){if(Re||p[U]&&(Re=p[U].resolve(0)),Re){var y=Re[te];y||(y=Re.then),y.call(Re,k)}else p[W](k,0)}function Le(k){0===Pe&&0===Q.length&&pe(me),k&&Q.push(k)}function me(){if(!fe){for(fe=!0;Q.length;){var k=Q;Q=[];for(var y=0;y=0;m--)"function"==typeof p[m]&&(p[m]=br(p[m],f+"_"+m));return p}function fs(p){return!p||!1!==p.writable&&!("function"==typeof p.get&&typeof p.set>"u")}var ms=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,ir=!("nw"in Ve)&&typeof Ve.process<"u"&&"[object process]"==={}.toString.call(Ve.process),wn=!ir&&!ms&&!(!st||!Kt.HTMLElement),hi=typeof Ve.process<"u"&&"[object process]"==={}.toString.call(Ve.process)&&!ms&&!(!st||!Kt.HTMLElement),or={},gs=function(p){if(p=p||Ve.event){var f=or[p.type];f||(f=or[p.type]=ee("ON_PROPERTY"+p.type));var T,m=this||p.target||Ve,d=m[f];return wn&&m===Kt&&"error"===p.type?!0===(T=d&&d.call(this,p.message,p.filename,p.lineno,p.colno,p.error))&&p.preventDefault():null!=(T=d&&d.apply(this,arguments))&&!T&&p.preventDefault(),T}};function vs(p,f,m){var d=wt(p,f);if(!d&&m&&wt(m,f)&&(d={enumerable:!0,configurable:!0}),d&&d.configurable){var x=ee("on"+f+"patched");if(!p.hasOwnProperty(x)||!p[x]){delete d.writable,delete d.value;var b=d.get,P=d.set,O=f.slice(2),q=or[O];q||(q=or[O]=ee("ON_PROPERTY"+O)),d.set=function(C){var W=this;!W&&p===Ve&&(W=Ve),W&&("function"==typeof W[q]&&W.removeEventListener(O,gs),P&&P.call(W,null),W[q]=C,"function"==typeof C&&W.addEventListener(O,gs,!1))},d.get=function(){var C=this;if(!C&&p===Ve&&(C=Ve),!C)return null;var W=C[q];if(W)return W;if(b){var U=b.call(this);if(U)return d.set.call(this,U),"function"==typeof C.removeAttribute&&C.removeAttribute(f),U}return null},Ot(p,f,d),p[x]=!0}}}function Es(p,f,m){if(f)for(var d=0;d=0&&"function"==typeof P[O.cbIdx]?Ir(O.name,P[O.cbIdx],O,T):x.apply(b,P)}})}function Tt(p,f){p[ee("OriginalDelegate")]=f}var Dr=!1,Nr=!1;function di(){if(Dr)return Nr;Dr=!0;try{var p=Kt.navigator.userAgent;(-1!==p.indexOf("MSIE ")||-1!==p.indexOf("Trident/")||-1!==p.indexOf("Edge/"))&&(Nr=!0)}catch{}return Nr}Zone.__load_patch("ZoneAwarePromise",function(p,f,m){var d=Object.getOwnPropertyDescriptor,T=Object.defineProperty;var b=m.symbol,P=[],O=!0===p[b("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],q=b("Promise"),C=b("then");m.onUnhandledError=function(I){if(m.showUncaughtError()){var B=I&&I.rejection;B?console.error("Unhandled Promise rejection:",B instanceof Error?B.message:B,"; Zone:",I.zone.name,"; Task:",I.task&&I.task.source,"; Value:",B,B instanceof Error?B.stack:void 0):console.error(I)}},m.microtaskDrainDone=function(){for(var I=function(){var B=P.shift();try{B.zone.runGuarded(function(){throw B.throwOriginal?B.rejection:B})}catch(L){!function te(I){m.onUnhandledError(I);try{var B=f[U];"function"==typeof B&&B.call(this,I)}catch{}}(L)}};P.length;)I()};var U=b("unhandledPromiseRejectionHandler");function Q(I){return I&&I.then}function fe(I){return I}function Re(I){return v.reject(I)}var pe=b("state"),Le=b("value"),me=b("finally"),H=b("parentPromiseValue"),Ae=b("parentPromiseState"),Te=null,X=!1;function he(I,B){return function(L){try{Ie(I,B,L)}catch(A){Ie(I,!1,A)}}}var ne=function(){var I=!1;return function(L){return function(){I||(I=!0,L.apply(null,arguments))}}},re=b("currentTaskTrace");function Ie(I,B,L){var A=ne();if(I===L)throw new TypeError("Promise resolved with itself");if(I[pe]===Te){var R=null;try{("object"==typeof L||"function"==typeof L)&&(R=L&&L.then)}catch(le){return A(function(){Ie(I,!1,le)})(),I}if(B!==X&&L instanceof v&&L.hasOwnProperty(pe)&&L.hasOwnProperty(Le)&&L[pe]!==Te)Ze(L),Ie(I,L[pe],L[Le]);else if(B!==X&&"function"==typeof R)try{R.call(L,A(he(I,B)),A(he(I,!1)))}catch(le){A(function(){Ie(I,!1,le)})()}else{I[pe]=B;var se=I[Le];if(I[Le]=L,I[me]===me&&true===B&&(I[pe]=I[Ae],I[Le]=I[H]),B===X&&L instanceof Error){var Y=f.currentTask&&f.currentTask.data&&f.currentTask.data.__creationTrace__;Y&&T(L,re,{configurable:!0,enumerable:!1,writable:!0,value:Y})}for(var ie=0;ie2}).map(function(f){return f.substring(2)})}function xs(p,f){if((!ir||hi)&&!Zone[p.symbol("patchEvents")]){var m=f.__Zone_ignore_on_properties,d=[];if(wn){var T=window;d=d.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);var x=function Tn(){try{var p=Kt.navigator.userAgent;if(-1!==p.indexOf("MSIE ")||-1!==p.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:T,ignoreProperties:["error"]}]:[];Ts(T,ur(T),m&&m.concat(x),_n(T))}d=d.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(var b=0;b"u"?delete m.configurable:m.configurable=d;try{return qn(p,f,m)}catch(P){var T=!1;if(("createdCallback"===f||"attachedCallback"===f||"detachedCallback"===f||"attributeChangedCallback"===f)&&(T=!0),!T)throw P;var x=null;try{x=JSON.stringify(m)}catch{x=m.toString()}console.log("Attempting to configure '".concat(f,"' with descriptor '").concat(x,"' on object '").concat(p,"' and got error, giving up: ").concat(P))}}}function vi(p,f){var m=p.getGlobalObjects();if((!m.isNode||m.isMix)&&!function Ei(p,f){var m=p.getGlobalObjects();if((m.isBrowser||m.isMix)&&!p.ObjectGetOwnPropertyDescriptor(HTMLElement.prototype,"onclick")&&typeof Element<"u"){var x=p.ObjectGetOwnPropertyDescriptor(Element.prototype,"onclick");if(x&&!x.configurable)return!1;if(x){p.ObjectDefineProperty(Element.prototype,"onclick",{enumerable:!0,configurable:!0,get:function(){return!0}});var P=!!document.createElement("div").onclick;return p.ObjectDefineProperty(Element.prototype,"onclick",x),P}}var O=f.XMLHttpRequest;if(!O)return!1;var q="onreadystatechange",C=O.prototype,W=p.ObjectGetOwnPropertyDescriptor(C,q);if(W)return p.ObjectDefineProperty(C,q,{enumerable:!0,configurable:!0,get:function(){return!0}}),P=!!(U=new O).onreadystatechange,p.ObjectDefineProperty(C,q,W||{}),P;var te=p.symbol("fake");p.ObjectDefineProperty(C,q,{enumerable:!0,configurable:!0,get:function(){return this[te]},set:function(pe){this[te]=pe}});var U,Q=function(){};return(U=new O).onreadystatechange=Q,P=U[te]===Q,U.onreadystatechange=null,P}(p,f)){var x=typeof WebSocket<"u";(function Si(p){for(var f=p.symbol("unbound"),m=function(T){var x=bs[T],b="on"+x;self.addEventListener(x,function(P){var q,C,O=P.target;for(C=O?O.constructor.name+"."+b:"unknown."+b;O;)O[b]&&!O[b][f]&&((q=p.wrapWithCurrentZone(O[b],C))[f]=O[b],O[b]=q),O=O.parentElement},!0)},d=0;d1?new x(O,q):new x(O),te=p.ObjectGetOwnPropertyDescriptor(C,"onmessage");return te&&!1===te.configurable?(W=p.ObjectCreate(C),U=C,[d,T,"send","close"].forEach(function(Q){W[Q]=function(){var fe=p.ArraySlice.call(arguments);if(Q===d||Q===T){var Re=fe.length>0?fe[0]:void 0;if(Re){var pe=Zone.__symbol__("ON_PROPERTY"+Re);C[pe]=W[pe]}}return C[Q].apply(C,fe)}})):W=C,p.patchOnProperties(W,["close","error","message","open"],U),W};var b=f.WebSocket;for(var P in x)b[P]=x[P]}(p,f),Zone[p.symbol("patchEvents")]=!0}}Zone.__load_patch("util",function(p,f,m){var d=ur(p);m.patchOnProperties=Es,m.patchMethod=mt,m.bindArguments=Ee,m.patchMacroTask=Wo;var T=f.__symbol__("BLACK_LISTED_EVENTS"),x=f.__symbol__("UNPATCHED_EVENTS");p[x]&&(p[T]=p[x]),p[T]&&(f[T]=f[x]=p[T]),m.patchEventPrototype=fi,m.patchEventTarget=_s,m.isIEOrEdge=di,m.ObjectDefineProperty=Ot,m.ObjectGetOwnPropertyDescriptor=wt,m.ObjectCreate=It,m.ArraySlice=ue,m.patchClass=$n,m.wrapWithCurrentZone=br,m.filterProperties=ws,m.attachOriginToPatched=Tt,m._redefineProperty=Object.defineProperty,m.patchCallbacks=mi,m.getGlobalObjects=function(){return{globalSources:Pr,zoneSymbolEventNames:gt,eventNames:d,isBrowser:wn,isMix:hi,isNode:ir,TRUE_STR:Qe,FALSE_STR:dt,ZONE_SYMBOL_PREFIX:On,ADD_EVENT_LISTENER_STR:Dt,REMOVE_EVENT_LISTENER_STR:Sn}}});var p,f,bs=bt(bt(bt(bt(bt(bt(bt(bt([],["abort","animationcancel","animationend","animationiteration","auxclick","beforeinput","blur","cancel","canplay","canplaythrough","change","compositionstart","compositionupdate","compositionend","cuechange","click","close","contextmenu","curechange","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","drop","durationchange","emptied","ended","error","focus","focusin","focusout","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadstart","loadeddata","loadedmetadata","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","orientationchange","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointerlockchange","mozpointerlockchange","webkitpointerlockerchange","pointerlockerror","mozpointerlockerror","webkitpointerlockerror","pointermove","pointout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","seeked","seeking","select","selectionchange","selectstart","show","sort","stalled","submit","suspend","timeupdate","volumechange","touchcancel","touchmove","touchstart","touchend","transitioncancel","transitionend","waiting","wheel"],!0),["webglcontextrestored","webglcontextlost","webglcontextcreationerror"],!0),["autocomplete","autocompleteerror"],!0),["toggle"],!0),["afterscriptexecute","beforescriptexecute","DOMContentLoaded","freeze","fullscreenchange","mozfullscreenchange","webkitfullscreenchange","msfullscreenchange","fullscreenerror","mozfullscreenerror","webkitfullscreenerror","msfullscreenerror","readystatechange","visibilitychange","resume"],!0),["absolutedeviceorientation","afterinput","afterprint","appinstalled","beforeinstallprompt","beforeprint","beforeunload","devicelight","devicemotion","deviceorientation","deviceorientationabsolute","deviceproximity","hashchange","languagechange","message","mozbeforepaint","offline","online","paint","pageshow","pagehide","popstate","rejectionhandled","storage","unhandledrejection","unload","userproximity","vrdisplayconnected","vrdisplaydisconnected","vrdisplaypresentchange"],!0),["beforecopy","beforecut","beforepaste","copy","cut","paste","dragstart","loadend","animationstart","search","transitionrun","transitionstart","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend"],!0),["activate","afterupdate","ariarequest","beforeactivate","beforedeactivate","beforeeditfocus","beforeupdate","cellchange","controlselect","dataavailable","datasetchanged","datasetcomplete","errorupdate","filterchange","layoutcomplete","losecapture","move","moveend","movestart","propertychange","resizeend","resizestart","rowenter","rowexit","rowsdelete","rowsinserted","command","compassneedscalibration","deactivate","help","mscontentzoom","msmanipulationstatechanged","msgesturechange","msgesturedoubletap","msgestureend","msgesturehold","msgesturestart","msgesturetap","msgotpointercapture","msinertiastart","mslostpointercapture","mspointercancel","mspointerdown","mspointerenter","mspointerhover","mspointerleave","mspointermove","mspointerout","mspointerover","mspointerup","pointerout","mssitemodejumplistitemremoved","msthumbnailclick","stop","storagecommit"],!0);p=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},f=p.__Zone_symbol_prefix||"__zone_symbol__",p[function m(d){return f+d}("legacyPatch")]=function(){var d=p.Zone;d.__load_patch("defineProperty",function(T,x,b){b._redefineProperty=We,function gi(){Vn=Zone.__symbol__,qn=Object[Vn("defineProperty")]=Object.defineProperty,Je=Object[Vn("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,et=Object.create,Xt=Vn("unconfigurables"),Object.defineProperty=function(p,f,m){if(lr(p,f))throw new TypeError("Cannot assign to read only property '"+f+"' of "+p);var d=m.configurable;return"prototype"!==f&&(m=Lr(p,f,m)),Cs(p,f,m,d)},Object.defineProperties=function(p,f){Object.keys(f).forEach(function(b){Object.defineProperty(p,b,f[b])});for(var m=0,d=Object.getOwnPropertySymbols(f);m0){var ge=ne.invoke;ne.invoke=function(){for(var k=re[f.__symbol__("loadfalse")],y=0;y{rr(rr.s=565)}]); \ No newline at end of file diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/styles.css b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/styles.css index 3a24755a9..e0cfa2898 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/styles.css +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/styles.css @@ -1,6 +1,5 @@ @charset "UTF-8";/*! - * Bootstrap v5.2.2 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors - * Copyright 2011-2022 Twitter, Inc. + * Bootstrap v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-bg: #fff;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-2xl: 2rem;--bs-border-radius-pill: 50rem;--bs-link-color: #0d6efd;--bs-link-hover-color: #0a58ca;--bs-code-color: #d63384;--bs-highlight-bg: #fff3cd}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color: var(--bs-body-color);--bs-table-bg: transparent;--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color: #000;--bs-table-bg: #cfe2ff;--bs-table-border-color: #bacbe6;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #e2e3e5;--bs-table-border-color: #cbccce;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d1e7dd;--bs-table-border-color: #bcd0c7;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fff3cd;--bs-table-border-color: #e6dbb9;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f8d7da;--bs-table-border-color: #dfc2c4;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #212529;--bs-table-border-color: #373b3e;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.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)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.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)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#198754}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#198754}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#198754}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.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)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#dc3545}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#dc3545}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: .375rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);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:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0b5ed7;--bs-btn-hover-border-color: #0a58ca;--bs-btn-focus-shadow-rgb: 49, 132, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0a58ca;--bs-btn-active-border-color: #0a53be;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #424649;--bs-btn-hover-border-color: #373b3e;--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: #4d5154;--bs-btn-active-border-color: #373b3e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13, 110, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-focus-shadow-rgb: 49, 132, 253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: .5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .875rem;--bs-btn-border-radius: .25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{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{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: #212529;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: .375rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius:calc(.375rem - 1px);--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-dropdown-link-color: #212529;--bs-dropdown-link-hover-color: #1e2125;--bs-dropdown-link-hover-bg: #e9ecef;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: #6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: .375rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #495057;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: .375rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(0, 0, 0, .55);--bs-navbar-hover-color: rgba(0, 0, 0, .7);--bs-navbar-disabled-color: rgba(0, 0, 0, .3);--bs-navbar-active-color: rgba(0, 0, 0, .9);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(0, 0, 0, .9);--bs-navbar-brand-hover-color: rgba(0, 0, 0, .9);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(0, 0, 0, .1);--bs-navbar-toggler-border-radius: .375rem;--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .show>.nav-link,.navbar-nav .nav-link.active{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-border-width: 1px;--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: .375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(.375rem - 1px);--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(0, 0, 0, .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.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:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{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-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #212529;--bs-accordion-bg: #fff;--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: 1px;--bs-accordion-border-radius: .375rem;--bs-accordion-inner-border-radius:calc(.375rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #212529;--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #86b7fe;--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #0c63e4;--bs-accordion-active-bg: #e7f1ff}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: #6c757d;--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: #6c757d;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size: 1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: #fff;--bs-pagination-border-width: 1px;--bs-pagination-border-color: #dee2e6;--bs-pagination-border-radius: .375rem;--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: #e9ecef;--bs-pagination-hover-border-color: #dee2e6;--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: #e9ecef;--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #0d6efd;--bs-pagination-active-border-color: #0d6efd;--bs-pagination-disabled-color: #6c757d;--bs-pagination-disabled-bg: #fff;--bs-pagination-disabled-border-color: #dee2e6;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size: 1.25rem;--bs-pagination-border-radius: .5rem}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size: .875rem;--bs-pagination-border-radius: .25rem}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: .375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: .375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: #084298;--bs-alert-bg: #cfe2ff;--bs-alert-border-color: #b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color: #41464b;--bs-alert-bg: #e2e3e5;--bs-alert-border-color: #d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color: #0f5132;--bs-alert-bg: #d1e7dd;--bs-alert-border-color: #badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color: #055160;--bs-alert-bg: #cff4fc;--bs-alert-border-color: #b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color: #664d03;--bs-alert-bg: #fff3cd;--bs-alert-border-color: #ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color: #842029;--bs-alert-bg: #f8d7da;--bs-alert-border-color: #f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color: #636464;--bs-alert-bg: #fefefe;--bs-alert-border-color: #fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color: #141619;--bs-alert-bg: #d3d3d4;--bs-alert-border-color: #bcbebf}.alert-dark .alert-link{color:#101214}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height: 1rem;--bs-progress-font-size: .75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: .375rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@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:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #212529;--bs-list-group-bg: #fff;--bs-list-group-border-color: rgba(0, 0, 0, .125);--bs-list-group-border-width: 1px;--bs-list-group-border-radius: .375rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: #495057;--bs-list-group-action-hover-color: #495057;--bs-list-group-action-hover-bg: #f8f9fa;--bs-list-group-action-active-color: #212529;--bs-list-group-action-active-bg: #e9ecef;--bs-list-group-disabled-color: #6c757d;--bs-list-group-disabled-bg: #fff;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.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:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size: .875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, .85);--bs-toast-border-width: 1px;--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: .375rem;--bs-toast-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-toast-header-color: #6c757d;--bs-toast-header-bg: rgba(255, 255, 255, .85);--bs-toast-header-border-color: rgba(0, 0, 0, .05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: 1px;--bs-modal-border-radius: .5rem;--bs-modal-box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-modal-inner-border-radius:calc(.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size: .875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: .375rem;--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size: .875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: .5rem;--bs-popover-inner-border-radius:calc(.5rem - 1px);--bs-popover-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size: 1rem;--bs-popover-header-color: ;--bs-popover-header-bg: #f0f0f0;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #212529;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075)}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 575.98px){.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}}@media (max-width: 575.98px){.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 767.98px){.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}}@media (max-width: 767.98px){.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 991.98px){.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}}@media (max-width: 991.98px){.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 1199.98px){.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}}@media (max-width: 1199.98px){.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}}@media (max-width: 1399.98px){.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media (min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity, 1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity, 1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity, 1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity, 1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity, 1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity, 1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity, 1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity, 1))!important}.link-primary{color:#0d6efd!important}.link-primary:hover,.link-primary:focus{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:hover,.link-secondary:focus{color:#565e64!important}.link-success{color:#198754!important}.link-success:hover,.link-success:focus{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:hover,.link-info:focus{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:hover,.link-warning:focus{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:hover,.link-danger:focus{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:hover,.link-light:focus{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:hover,.link-dark:focus{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-1{--bs-border-width: 1px}.border-2{--bs-border-width: 2px}.border-3{--bs-border-width: 3px}.border-4{--bs-border-width: 4px}.border-5{--bs-border-width: 5px}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity: 1;color:#6c757d!important}.text-black-50{--bs-text-opacity: 1;color:#00000080!important}.text-white-50{--bs-text-opacity: 1;color:#ffffff80!important}.text-reset{--bs-text-opacity: 1;color:inherit!important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} + */:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: #052c65;--bs-secondary-text-emphasis: #2b2f32;--bs-success-text-emphasis: #0a3622;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #664d03;--bs-danger-text-emphasis: #58151c;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #cfe2ff;--bs-secondary-bg-subtle: #e2e3e5;--bs-success-bg-subtle: #d1e7dd;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fff3cd;--bs-danger-bg-subtle: #f8d7da;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #9ec5fe;--bs-secondary-border-subtle: #c4c8cb;--bs-success-border-subtle: #a3cfbb;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #ffe69c;--bs-danger-border-subtle: #f1aeb5;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, .75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(33, 37, 41, .5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #0d6efd;--bs-link-color-rgb: 13, 110, 253;--bs-link-decoration: underline;--bs-link-hover-color: #0a58ca;--bs-link-hover-color-rgb: 10, 88, 202;--bs-code-color: #d63384;--bs-highlight-bg: #fff3cd;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(13, 110, 253, .25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #adb5bd;--bs-body-color-rgb: 173, 181, 189;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(173, 181, 189, .75);--bs-secondary-color-rgb: 173, 181, 189;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(173, 181, 189, .5);--bs-tertiary-color-rgb: 173, 181, 189;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #6ea8fe;--bs-secondary-text-emphasis: #a7acb1;--bs-success-text-emphasis: #75b798;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #ffda6a;--bs-danger-text-emphasis: #ea868f;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #031633;--bs-secondary-bg-subtle: #161719;--bs-success-bg-subtle: #051b11;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #332701;--bs-danger-bg-subtle: #2c0b0e;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #084298;--bs-secondary-border-subtle: #41464b;--bs-success-border-subtle: #0f5132;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #997404;--bs-danger-border-subtle: #842029;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #6ea8fe;--bs-link-hover-color: #8bb9fe;--bs-link-color-rgb: 110, 168, 254;--bs-link-hover-color-rgb: 139, 185, 254;--bs-code-color: #e685b5;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, .15);--bs-form-valid-color: #75b798;--bs-form-valid-border-color: #75b798;--bs-form-invalid-color: #ea868f;--bs-form-invalid-border-color: #ea868f}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-body-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #cfe2ff;--bs-table-border-color: #bacbe6;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #e2e3e5;--bs-table-border-color: #cbccce;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d1e7dd;--bs-table-border-color: #bcd0c7;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fff3cd;--bs-table-border-color: #e6dbb9;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f8d7da;--bs-table-border-color: #dfc2c4;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #212529;--bs-table-border-color: #373b3e;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-appearance:none;appearance:none;border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23adb5bd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: var(--bs-body-bg);width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-appearance:none;appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-control-plaintext~label:after,.form-floating>.form-select~label:after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label{color:#6c757d}.form-floating>:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.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)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.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)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.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");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.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)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);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:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0b5ed7;--bs-btn-hover-border-color: #0a58ca;--bs-btn-focus-shadow-rgb: 49, 132, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0a58ca;--bs-btn-active-border-color: #0a53be;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #424649;--bs-btn-hover-border-color: #373b3e;--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: #4d5154;--bs-btn-active-border-color: #373b3e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13, 110, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 49, 132, 253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .875rem;--bs-btn-border-radius: var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{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{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.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:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{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-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #86b7fe;--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size: 1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #0d6efd;--bs-pagination-active-border-color: #0d6efd;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size: 1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size: .875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size: .75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@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:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.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:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);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:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: .5;--bs-btn-close-hover-opacity: .75;--bs-btn-close-focus-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: .25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size: .875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size: .875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size: .875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size: 1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-offcanvas-transition: transform .3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 575.98px){.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}}@media (max-width: 575.98px){.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 767.98px){.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}}@media (max-width: 767.98px){.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 991.98px){.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}}@media (max-width: 991.98px){.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 1199.98px){.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}}@media (max-width: 1199.98px){.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}}@media (max-width: 1399.98px){.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media (min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity, 1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity, 1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity, 1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity, 1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity, 1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity, 1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity, 1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity, 1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-primary:hover,.link-primary:focus{color:RGBA(10,88,202,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity, 1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86,94,100,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity, 1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity, 1))!important}.link-success:hover,.link-success:focus{color:RGBA(20,108,67,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity, 1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity, 1))!important}.link-info:hover,.link-info:focus{color:RGBA(61,213,243,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity, 1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity, 1))!important}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity, 1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity, 1))!important}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity, 1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity, 1))!important}.link-light:hover,.link-light:focus{color:RGBA(249,250,251,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity, 1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity, 1))!important}.link-dark:hover,.link-dark:focus{color:RGBA(26,30,33,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, .75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, .75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, .5));text-underline-offset:.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity: 1;color:#00000080!important}.text-white-50{--bs-text-opacity: 1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity: 1;color:inherit!important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{object-fit:contain!important}.object-fit-xxl-cover{object-fit:cover!important}.object-fit-xxl-fill{object-fit:fill!important}.object-fit-xxl-scale{object-fit:scale-down!important}.object-fit-xxl-none{object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{column-gap:0!important}.column-gap-xxl-1{column-gap:.25rem!important}.column-gap-xxl-2{column-gap:.5rem!important}.column-gap-xxl-3{column-gap:1rem!important}.column-gap-xxl-4{column-gap:1.5rem!important}.column-gap-xxl-5{column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/package-lock.json b/src/KafkaFlow.Admin.Dashboard/ClientApp/package-lock.json index a0cbbb1d3..ec6cc417f 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/package-lock.json +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/package-lock.json @@ -1,7 +1,7 @@ { "name": "dashboard", "version": "0.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -51,10 +51,19 @@ "typescript": "~4.7.2" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", + "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -70,9 +79,9 @@ } }, "node_modules/@angular-builders/custom-webpack": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-builders/custom-webpack/-/custom-webpack-14.0.1.tgz", - "integrity": "sha512-QDsSFo80I8oLBzvr7qIxcdEfvDMEeJmwYRrJ/hG8O+XVdYsUkkj4nEvBI5fKKBOfcRgx1R/XrEDtJEeolEQeig==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@angular-builders/custom-webpack/-/custom-webpack-14.1.0.tgz", + "integrity": "sha512-FLGDrBOg04cYvzCudeb15LWY2v91dtJ5+AfmP0aS/0T0D0AYmY4uM3FxZeh4jJcWETLvnHVFBCjan6y2Ct9J3A==", "dev": true, "dependencies": { "@angular-devkit/architect": ">=0.1400.0 < 0.1500.0", @@ -91,12 +100,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1402.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.8.tgz", - "integrity": "sha512-z3HXPBi3h3y+D04NNA/5lVaUCMF+dkE/75bCqg4DG3FqV0i0dh4hozjKtWgX6xuoJ8AJlDfrJSaBCvjsog+Jhg==", + "version": "0.1402.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.12.tgz", + "integrity": "sha512-LuK26pyaqyClEbY0n4/WIh3irUuA8wwmMmEj8uW4boziuJWv7U42lJJRF3VwkchiyOIp8qiKg995K6IoeXkWgA==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.2.8", + "@angular-devkit/core": "14.2.12", "rxjs": "6.6.7" }, "engines": { @@ -124,15 +133,15 @@ "dev": true }, "node_modules/@angular-devkit/build-angular": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.8.tgz", - "integrity": "sha512-FSi7FHxqMLXmVulJg8ocGCTGbdnjPlQ0pSS91blg+PeL2Ly+h0hNl+MTLP/4aX9/n2SMPtcX7BbS20/M6UhoRw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.12.tgz", + "integrity": "sha512-ei8/FaL80Q6si/aF6FLZgtT4Kr2rudlyGMqQM4Rd2Zvt8mCh3TgM7QdLhoI11t9A0LWz6RIdROlDimMyyOEF6Q==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.8", - "@angular-devkit/build-webpack": "0.1402.8", - "@angular-devkit/core": "14.2.8", + "@angular-devkit/architect": "0.1402.12", + "@angular-devkit/build-webpack": "0.1402.12", + "@angular-devkit/core": "14.2.12", "@babel/core": "7.18.10", "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", @@ -143,7 +152,7 @@ "@babel/runtime": "7.18.9", "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.8", + "@ngtools/webpack": "14.2.12", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -161,7 +170,7 @@ "less": "4.1.3", "less-loader": "11.0.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", + "loader-utils": "3.2.1", "mini-css-extract-plugin": "2.6.1", "minimatch": "5.1.0", "open": "8.4.0", @@ -177,7 +186,7 @@ "rxjs": "6.6.7", "sass": "1.54.4", "sass-loader": "13.0.2", - "semver": "7.3.7", + "semver": "7.5.3", "source-map-loader": "4.0.0", "source-map-support": "0.5.21", "stylus": "0.59.0", @@ -186,7 +195,7 @@ "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.4.0", - "webpack": "5.74.0", + "webpack": "5.76.1", "webpack-dev-middleware": "5.3.3", "webpack-dev-server": "4.11.0", "webpack-merge": "5.8.0", @@ -255,13 +264,26 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, + "node_modules/@angular-devkit/build-angular/node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1402.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.8.tgz", - "integrity": "sha512-KBI6F44AMdOB+/pIAkVsxJYVnPVg+IkNBqug2oFOGnIab7VrFWpEEqihB1rAdRlMEjcPJ6YxNkzErDaOvtH2qw==", + "version": "0.1402.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.12.tgz", + "integrity": "sha512-xBkbSwOhHgUsJk1tTtITqbHHiA0OdjwdrYZYceyfDASAglyRX6rT4Q9/Ppf7TSck6M1tUR76efYOn3D3ial29w==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1402.8", + "@angular-devkit/architect": "0.1402.12", "rxjs": "6.6.7" }, "engines": { @@ -293,9 +315,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.8.tgz", - "integrity": "sha512-30nDq2PH91X7T42xXFBlTiXTBG143z0BL8IUgpVCxTFYwxgPbtV4bcXTkiBgh1FL/usZcHa0Bd/64wxmFOpYwA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.12.tgz", + "integrity": "sha512-tg1+deEZdm3fgk2BQ6y7tujciL6qhtN5Ums266lX//kAZeZ4nNNXTBT+oY5xgfjvmLbW+xKg0XZrAS0oIRKY5g==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -337,12 +359,12 @@ "dev": true }, "node_modules/@angular-devkit/schematics": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.8.tgz", - "integrity": "sha512-L5GEgueZV4vqZy9Ar0zxVJOHK/4ttF1nPjW4Ut1vRFJGxsHFVEpxq5eGBf2JYSiOhqmFYc6GnJOxA6C4xAIHjA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.12.tgz", + "integrity": "sha512-MN5yGR+SSSPPBBVMf4cifDJn9u0IYvxiHst+HWokH2AkBYy+vB1x8jYES2l1wkiISD7nvjTixfqX+Y95oMBoLg==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.2.8", + "@angular-devkit/core": "14.2.12", "jsonc-parser": "3.1.0", "magic-string": "0.26.2", "ora": "5.4.1", @@ -435,18 +457,6 @@ "@angular/cli": ">= 14.0.0 < 15.0.0" } }, - "node_modules/@angular-eslint/schematics/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, "node_modules/@angular-eslint/template-parser": { "version": "14.1.2", "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.1.2.tgz", @@ -476,9 +486,9 @@ } }, "node_modules/@angular/animations": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.9.tgz", - "integrity": "sha512-oUgfao3A0LbTKcYIPsXk982CFomjAdOB8782txXs9r7RANCZgMlE/t36PEMesAvUPimLbUF31HjCJu8YuC/OYw==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.3.0.tgz", + "integrity": "sha512-QoBcIKy1ZiU+4qJsAh5Ls20BupWiXiZzKb0s6L9/dntPt5Msr4Ao289XR2P6O1L+kTsCprH9Kt41zyGQ/bkRqg==", "dependencies": { "tslib": "^2.3.0" }, @@ -486,19 +496,19 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.9" + "@angular/core": "14.3.0" } }, "node_modules/@angular/cli": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.8.tgz", - "integrity": "sha512-yJDLSlTFwQhNJlFoXCw8r8iQWNJn9bIjBSdEL0mM9px5EvSxDYGDXwiJRvionlZAL9P4u0d8XeBy3EPyFkAE5Q==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.12.tgz", + "integrity": "sha512-G/785b6jIIX7J+zS8RHaCT1OYzqANw5hJlnLf8tLgmaadLMVNQvIrvHTYtmD86pbqCYyVDLoMxefxRIwMHJuqw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1402.8", - "@angular-devkit/core": "14.2.8", - "@angular-devkit/schematics": "14.2.8", - "@schematics/angular": "14.2.8", + "@angular-devkit/architect": "0.1402.12", + "@angular-devkit/core": "14.2.12", + "@angular-devkit/schematics": "14.2.12", + "@schematics/angular": "14.2.12", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "debug": "4.3.4", @@ -511,7 +521,7 @@ "ora": "5.4.1", "pacote": "13.6.2", "resolve": "1.22.1", - "semver": "7.3.7", + "semver": "7.5.3", "symbol-observable": "4.0.0", "uuid": "8.3.2", "yargs": "17.5.1" @@ -526,9 +536,9 @@ } }, "node_modules/@angular/common": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.9.tgz", - "integrity": "sha512-nC1He98gj4FQqSo31Fb9ZJ+Ao3jJbmAg1JAdF5L0tkY70YydM91HXAp/JDrJ12O7IomenAwEHONFCVxgUfqUJw==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.3.0.tgz", + "integrity": "sha512-pV9oyG3JhGWeQ+TFB0Qub6a1VZWMNZ6/7zEopvYivdqa5yDLLDSBRWb6P80RuONXyGnM1pa7l5nYopX+r/23GQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -536,14 +546,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.9", + "@angular/core": "14.3.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.9.tgz", - "integrity": "sha512-M0uYFMSAejYJ+fm/Lz1/l7nr1adVrYfC7lKBpbiyya5moGenRid81Fl7i2YY6RehFpGHw3GdPlMz+DRIMXgyuQ==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.3.0.tgz", + "integrity": "sha512-E15Rh0t3vA+bctbKnBCaDmLvc3ix+ZBt6yFZmhZalReQ+KpOlvOJv+L9oiFEgg+rYVl2QdvN7US1fvT0PqswLw==", "dependencies": { "tslib": "^2.3.0" }, @@ -551,7 +561,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.9" + "@angular/core": "14.3.0" }, "peerDependenciesMeta": { "@angular/core": { @@ -560,9 +570,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.9.tgz", - "integrity": "sha512-c3+LyW4WkZya4JnefUUOoCplwM9OgOnR2LqC6Qwro9Z40VXBqBeA5PJ6EJ28c4q6ZVoy5v00PwUVSwgcGP7qNA==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.3.0.tgz", + "integrity": "sha512-eoKpKdQ2X6axMgzcPUMZVYl3bIlTMzMeTo5V29No4BzgiUB+QoOTYGNJZkGRyqTNpwD9uSBJvmT2vG9+eC4ghQ==", "dependencies": { "@babel/core": "^7.17.2", "chokidar": "^3.0.0", @@ -584,14 +594,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.2.9", + "@angular/compiler": "14.3.0", "typescript": ">=4.6.2 <4.9" } }, "node_modules/@angular/core": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.9.tgz", - "integrity": "sha512-6bExQgGmN9qmBbVMl7WaZ1KFSfTgFK+MmLbvoh4a29b47h7wvEuUWO7ulczzoUJQfMGfXU/4ypEW1a8ZhX+Xrg==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.3.0.tgz", + "integrity": "sha512-wYiwItc0Uyn4FWZ/OAx/Ubp2/WrD3EgUJ476y1XI7yATGPF8n9Ld5iCXT08HOvc4eBcYlDfh90kTXR6/MfhzdQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -600,13 +610,13 @@ }, "peerDependencies": { "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.11.4" + "zone.js": "~0.11.4 || ~0.12.0" } }, "node_modules/@angular/forms": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.9.tgz", - "integrity": "sha512-46Xlr4Qlgg/RBlb0TG9QCINe7zbVIFRF9YOi7dSIVW7tjKs6N8DPcP4eHAnrvxNmz+8S2v+CVXKOXGwaGE52vw==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.3.0.tgz", + "integrity": "sha512-fBZZC2UFMom2AZPjGQzROPXFWO6kvCsPDKctjJwClVC8PuMrkm+RRyiYRdBbt2qxWHEqOZM2OCQo73xUyZOYHw==", "dependencies": { "tslib": "^2.3.0" }, @@ -614,16 +624,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.9", - "@angular/core": "14.2.9", - "@angular/platform-browser": "14.2.9", + "@angular/common": "14.3.0", + "@angular/core": "14.3.0", + "@angular/platform-browser": "14.3.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/localize": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.9.tgz", - "integrity": "sha512-RluLAUVnrD+csrLBBJufNObTb6Fo7+qDGhtBKrt0OlxsasANFypNmUv5mkXGhqJXplZEMG4WFm+X6eJiKblZkg==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.3.0.tgz", + "integrity": "sha512-YmwlOEGnFonfDrIcWqlxXVFFjd0Q6yXeHGZCBFBfwbtjIseiJJ4UBmkTUgFeq7qlWevSFQzHdQnraFRGZpnMig==", "dependencies": { "@babel/core": "7.18.9", "glob": "8.0.3", @@ -638,8 +648,8 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.2.9", - "@angular/compiler-cli": "14.2.9" + "@angular/compiler": "14.3.0", + "@angular/compiler-cli": "14.3.0" } }, "node_modules/@angular/localize/node_modules/@babel/core": { @@ -680,9 +690,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.9.tgz", - "integrity": "sha512-cvKFyHZp69scDj+tOmknWsdyarpNjpuFHbn2Tn3K9HLJsNHOvP2g8d/KwHl5atRscnDK1ztNh+FUKhGmQZsbng==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.3.0.tgz", + "integrity": "sha512-w9Y3740UmTz44T0Egvc+4QV9sEbO61L+aRHbpkLTJdlEGzHByZvxJmJyBYmdqeyTPwc/Zpy7c02frlpfAlyB7A==", "dependencies": { "tslib": "^2.3.0" }, @@ -690,9 +700,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.2.9", - "@angular/common": "14.2.9", - "@angular/core": "14.2.9" + "@angular/animations": "14.3.0", + "@angular/common": "14.3.0", + "@angular/core": "14.3.0" }, "peerDependenciesMeta": { "@angular/animations": { @@ -701,9 +711,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.9.tgz", - "integrity": "sha512-hu0lfAkPplGhkQKXaryj+6wLboqIC8JNWGONlqKTaARgfaQ8TyMikOimKxMk9mljlJpPcrVxAewn5p9G0VmLng==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.3.0.tgz", + "integrity": "sha512-rneZiMrIiYRhrkQvdL40E2ErKRn4Zdo6EtjBM9pAmWeyoM8oMnOZb9gz5vhrkNWg06kVMVg0yKqluP5How7j3A==", "dependencies": { "tslib": "^2.3.0" }, @@ -711,16 +721,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.9", - "@angular/compiler": "14.2.9", - "@angular/core": "14.2.9", - "@angular/platform-browser": "14.2.9" + "@angular/common": "14.3.0", + "@angular/compiler": "14.3.0", + "@angular/core": "14.3.0", + "@angular/platform-browser": "14.3.0" } }, "node_modules/@angular/router": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.9.tgz", - "integrity": "sha512-xg5Ajmn7mt6bosUDDotGzWORMfNGqi1otOUT8Sj2TpkvJebCaOS78GBBMnF8H5zaq8Pi+IsLM46kSJakFGdnVg==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.3.0.tgz", + "integrity": "sha512-uip0V7w7k7xyxxpTPbr7EuMnYLj3FzJrwkLVJSEw3TMMGHt5VU5t4BBa9veGZOta2C205XFrTAHnp8mD+XYY1w==", "dependencies": { "tslib": "^2.3.0" }, @@ -728,9 +738,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.9", - "@angular/core": "14.2.9", - "@angular/platform-browser": "14.2.9", + "@angular/common": "14.3.0", + "@angular/core": "14.3.0", + "@angular/platform-browser": "14.3.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -741,20 +751,20 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz", + "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==", "engines": { "node": ">=6.9.0" } @@ -810,9 +820,9 @@ } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -835,27 +845,27 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz", + "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==", "dependencies": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" + "@babel/compat-data": "^7.22.6", + "@babel/helper-validator-option": "^7.22.5", + "@nicolo-ribaudo/semver-v6": "^6.3.3", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1" }, "engines": { "node": ">=6.9.0" @@ -864,27 +874,21 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.6.tgz", + "integrity": "sha512-iwdzgtSiBxF6ni6mzVnZCF3xt5qE6cEA0J7nFt8QOAWZ0zjCFceEgpn3vtb2V7WFR6QzP2jmIFOHMTRo7eNJjQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@nicolo-ribaudo/semver-v6": "^6.3.3" }, "engines": { "node": ">=6.9.0" @@ -893,14 +897,27 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.6.tgz", + "integrity": "sha512-nBookhLKxAWo/TUCmhnaEJyLz2dekjQvv5SRpE9epWQBcpedWLKt8aZdsuT9XV5ovzR3fENLjRXVT0GsSlGGhA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@nicolo-ribaudo/semver-v6": "^6.3.3", + "regexpu-core": "^5.3.1" }, "engines": { "node": ">=6.9.0" @@ -909,6 +926,18 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", @@ -936,120 +965,134 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", + "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", + "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1058,114 +1101,168 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", + "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "dependencies": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", + "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -1174,9 +1271,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.6.tgz", + "integrity": "sha512-EIQu22vNkceq3LbjAq7knDf/UmtI2qbcNI8GRBlijez6TpQLvSodJPYfydQmNA5buwkxxxa/PVI44jjYZ+/cLw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1185,12 +1282,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1200,14 +1297,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1251,13 +1348,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1316,12 +1413,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1364,16 +1461,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" + "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1399,13 +1496,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1432,14 +1529,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1529,12 +1626,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1658,12 +1755,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1690,12 +1787,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1705,12 +1802,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1720,19 +1817,19 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -1742,13 +1839,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1757,13 +1867,27 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1773,13 +1897,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1789,12 +1913,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1804,13 +1928,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1820,12 +1944,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1835,14 +1959,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1852,12 +1976,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1867,12 +1991,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1882,13 +2006,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1898,14 +2022,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1915,15 +2039,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1933,13 +2057,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1949,13 +2073,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1965,12 +2089,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1980,13 +2104,30 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1996,12 +2137,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2011,12 +2152,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2026,13 +2167,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", + "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.1" }, "engines": { "node": ">=6.9.0" @@ -2042,12 +2183,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2086,12 +2227,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2101,13 +2242,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2117,12 +2258,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2132,12 +2273,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2147,12 +2288,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2162,12 +2303,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2177,13 +2318,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2306,6 +2447,12 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "node_modules/@babel/runtime": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", @@ -2332,18 +2479,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.6.tgz", + "integrity": "sha512-53CijMvKlLIDlOTrdWiHileRddlIiwUIyCKqYa7lYnnPldXCG5dUSN38uT0cA6i7rHWNKJLH0VU/Kxdr1GzB3w==", + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.6", + "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2352,12 +2499,13 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", - "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", + "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", "dependencies": { - "@babel/types": "^7.20.2", + "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -2365,9 +2513,9 @@ } }, "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2378,12 +2526,12 @@ } }, "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2686,19 +2834,18 @@ } }, "node_modules/@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "dev": true, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2", "postcss-selector-parser": "^6.0.10" } }, @@ -2727,16 +2874,40 @@ "node": ">=12" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -2783,9 +2954,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2839,6 +3010,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -2846,9 +3026,9 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -2900,26 +3080,122 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { "node": ">=8" @@ -2954,9 +3230,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -2964,9 +3240,9 @@ } }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -2978,19 +3254,24 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", @@ -2998,9 +3279,9 @@ "dev": true }, "node_modules/@ng-bootstrap/ng-bootstrap": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-13.1.0.tgz", - "integrity": "sha512-pmyIQ3yWT/SIRiVJqu0+0cxWvcLLyOkzkmgUk6aTjLKS/n1X/xcVfGCoUoEPo3HvpbnLKIwlRJkTEYYgC9pwnA==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-13.1.1.tgz", + "integrity": "sha512-R6qnmFKT2EwwijBHw7rUXqyo5W90OImHOv7BlsxMNnZLIksWIhqwU00k4UBTfRTnd6JsTPuj/co3MaP61ajILA==", "dependencies": { "tslib": "^2.3.0" }, @@ -3014,9 +3295,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.8.tgz", - "integrity": "sha512-ugQRiOgQBbZUFSRRfj+KOUrtGHWI7IyVfnK3HA08+QFQOygY6igs07D6v4l5RHkUnyQkCgUE30EaFaj58fGJjg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.12.tgz", + "integrity": "sha512-d/NRQAjS3BsMDUpLrhza+bvI7HKIV+lyRAvD3LYj5FE9kMoEGw4zRo9JG8ookCzvT2FjNiXQ7DWDZSAeMOy+WQ==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0", @@ -3029,6 +3310,14 @@ "webpack": "^5.54.0" } }, + "node_modules/@nicolo-ribaudo/semver-v6": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", + "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3097,19 +3386,13 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, "engines": { - "node": ">= 8" + "node": ">=12" } }, "node_modules/@npmcli/installed-package-contents": { @@ -3179,38 +3462,33 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "optional": true, "engines": { - "node": ">= 8" + "node": ">=14" } }, "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, "node_modules/@schematics/angular": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.8.tgz", - "integrity": "sha512-SuzeCpWHF9+8jey7WheM1Va0iyJrYAD88O2VT2x0NEF2PXEH63lV7BCBtE7kKurIAmXBbvTCsPyZuFKYJGDHFA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.12.tgz", + "integrity": "sha512-nCxoFzH/uh5vqhaAjAfQIBgGuCdV3RMjdSwD0VQ+GFiFvTe8rqFyDl+qpNCgETz4LwmGHb5HNjDH9+VyVLgfZQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.2.8", - "@angular-devkit/schematics": "14.2.8", + "@angular-devkit/core": "14.2.12", + "@angular-devkit/schematics": "14.2.12", "jsonc-parser": "3.1.0" }, "engines": { @@ -3253,9 +3531,9 @@ "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, "node_modules/@types/body-parser": { @@ -3287,9 +3565,9 @@ } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", "dev": true, "dependencies": { "@types/express-serve-static-core": "*", @@ -3303,15 +3581,18 @@ "dev": true }, "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "version": "8.40.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", + "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", "dev": true, "dependencies": { "@types/estree": "*", @@ -3335,32 +3616,39 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", "dev": true, "dependencies": { "@types/node": "*" @@ -3373,9 +3661,9 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, "node_modules/@types/json5": { @@ -3385,15 +3673,15 @@ "dev": true }, "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "version": "20.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz", + "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==", "dev": true }, "node_modules/@types/parse-json": { @@ -3420,6 +3708,16 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -3430,11 +3728,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } @@ -3449,9 +3748,9 @@ } }, "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "dev": true, "dependencies": { "@types/node": "*" @@ -3490,27 +3789,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/@typescript-eslint/parser": { "version": "5.37.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.37.0.tgz", @@ -3582,27 +3860,6 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@typescript-eslint/type-utils/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/@typescript-eslint/types": { "version": "5.37.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.37.0.tgz", @@ -3643,56 +3900,6 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/@typescript-eslint/utils": { "version": "5.37.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.37.0.tgz", @@ -3924,9 +4131,9 @@ } }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3936,9 +4143,9 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -4002,28 +4209,19 @@ } }, "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", + "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", "dev": true, "dependencies": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "engines": { "node": ">= 8.0.0" } }, - "node_modules/agentkeepalive/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -4138,9 +4336,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4208,9 +4406,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", "dev": true, "funding": [ { @@ -4223,8 +4421,8 @@ } ], "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -4415,13 +4613,13 @@ } }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -4429,7 +4627,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -4454,9 +4652,9 @@ "dev": true }, "node_modules/bonjour-service": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", - "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", "dev": true, "dependencies": { "array-flatten": "^2.1.2", @@ -4472,9 +4670,9 @@ "dev": true }, "node_modules/bootstrap": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.2.tgz", - "integrity": "sha512-dEtzMTV71n6Fhmbg4fYJzQsw1N29hJKO1js5ackCgIpDcGid2ETMGC6zwSYw09v05Y+oRdQ9loC54zB1La3hHQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.0.tgz", + "integrity": "sha512-UnBV3E3v4STVNQdms6jSGO2CvOkjUMdDAVR2V5N4uCMdaIkaQjbcEAMqRimDHIs4uqBYzDAKCQwCB+97tJgHQw==", "funding": [ { "type": "github", @@ -4486,7 +4684,7 @@ } ], "peerDependencies": { - "@popperjs/core": "^2.11.6" + "@popperjs/core": "^2.11.7" } }, "node_modules/brace-expansion": { @@ -4509,9 +4707,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "funding": [ { "type": "opencollective", @@ -4520,13 +4718,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" @@ -4612,6 +4814,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4644,9 +4855,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "version": "1.0.30001512", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz", + "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==", "funding": [ { "type": "opencollective", @@ -4655,6 +4866,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -4743,9 +4958,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", + "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", "dev": true, "engines": { "node": ">=6" @@ -4819,9 +5034,9 @@ } }, "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/commander": { @@ -4960,9 +5175,9 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "engines": { "node": ">= 0.6" @@ -5036,32 +5251,63 @@ "node": ">=10.13.0" } }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.1.tgz", + "integrity": "sha512-DPCBxctI7dN4EeIqjW2KGqgdcUMbrhJ9AzON+PlxCtvppWhubTLD4+a0GFxiym14ZvacUydTPjLPc2DlKz7EIg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/core-js-compat": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", - "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", + "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4" + "browserslist": "^4.21.5" }, "funding": { "type": "opencollective", @@ -5088,9 +5334,9 @@ } }, "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", @@ -5207,21 +5453,6 @@ "node": ">= 8" } }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -5328,14 +5559,20 @@ } }, "node_modules/cssdb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", - "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.6.0.tgz", + "integrity": "sha512-Nna7rph8V0jC6+JBY4Vk4ndErUmfJfV6NJCaZdurL0omggabiy+QB2HCQtu5c/ACLZ0I7REv7A4QyPIoYzZx0w==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ] }, "node_modules/cssesc": { "version": "3.0.0", @@ -5492,9 +5729,9 @@ "dev": true }, "node_modules/dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", "dev": true, "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -5582,6 +5819,12 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -5589,9 +5832,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + "version": "1.4.450", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.450.tgz", + "integrity": "sha512-BLG5HxSELlrMx7dJ2s+8SFlsCtJp37Zpk2VAxyC6CZtbc+9AJeZHfYHbrlSgdXp6saQ8StMqOTEDaBKgA7u1sw==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -5640,9 +5883,9 @@ } }, "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.1.tgz", + "integrity": "sha512-mGqhI+D7YxS9KJMppR6Iuo37Ed3abhU8NdfgSvJSDUafQutrN+sPTncJYTyM9+tkhSmWodKtVYGPPHyXJEwEQA==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -5653,26 +5896,26 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "engine.io-parser": "~5.1.0", + "ws": "~8.11.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", + "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==", "dev": true, "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -6132,13 +6375,16 @@ } }, "node_modules/eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -6147,32 +6393,29 @@ "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.6.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -6228,12 +6471,15 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ajv": { @@ -6330,9 +6576,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -6340,6 +6586,9 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/estraverse": { @@ -6380,9 +6629,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -6503,14 +6752,14 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", + "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6533,9 +6782,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -6645,6 +6894,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -6693,6 +6948,30 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/express/node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -6735,6 +7014,21 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -6764,6 +7058,18 @@ "node": ">=4" } }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -6771,9 +7077,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -6799,9 +7105,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -6971,6 +7277,34 @@ } } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -7029,9 +7363,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", "dev": true }, "node_modules/fs.realpath": { @@ -7100,13 +7434,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" }, "funding": { @@ -7178,34 +7513,35 @@ } }, "node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { + "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", + "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", - "slash": "^4.0.0" + "slash": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "node_modules/handle-thing": { @@ -7234,6 +7570,18 @@ "node": ">=4" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -7281,6 +7629,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -7294,9 +7651,9 @@ } }, "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -7324,10 +7681,20 @@ } }, "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, "node_modules/html-escaper": { "version": "2.0.2", @@ -7540,9 +7907,9 @@ } }, "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", "dev": true }, "node_modules/import-fresh": { @@ -7720,9 +8087,9 @@ "dev": true }, "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "dev": true, "engines": { "node": ">= 10" @@ -7746,9 +8113,9 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -8035,6 +8402,24 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jasmine-core": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.3.0.tgz", @@ -8079,12 +8464,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8168,9 +8547,9 @@ ] }, "node_modules/karma": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", - "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", + "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", "dev": true, "dependencies": { "@colors/colors": "1.5.0", @@ -8214,10 +8593,22 @@ "which": "^1.2.1" } }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.2.0", @@ -8351,18 +8742,6 @@ "node": ">=0.10.0" } }, - "node_modules/karma/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, "node_modules/karma/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -8400,9 +8779,9 @@ } }, "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, "engines": { "node": ">= 8" @@ -8557,9 +8936,9 @@ } }, "node_modules/loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "dev": true, "engines": { "node": ">= 12.13.0" @@ -8682,28 +9061,27 @@ } }, "node_modules/log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", "flatted": "^3.2.7", "rfdc": "^1.3.0", - "streamroller": "^3.1.3" + "streamroller": "^3.1.5" }, "engines": { "node": ">=8.0" } }, "node_modules/lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "dev": true, - "engines": { - "node": ">=12" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" } }, "node_modules/magic-string": { @@ -8748,48 +9126,185 @@ "dev": true }, "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "ssri": "^10.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, - "engines": { + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", + "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", + "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.10.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", + "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.10.tgz", - "integrity": "sha512-0bCUP+L79P4am30yP1msPzApwuMQG23TjwlwdHeEV5MxioDR1a0AgB0T9FfggU52eJuDCq8WVwb5ekznFyWiTQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "dependencies": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" }, "engines": { "node": ">= 4.0.0" @@ -8900,15 +9415,15 @@ } }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -8936,18 +9451,18 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -8969,22 +9484,31 @@ } }, "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, "dependencies": { - "minipass": "^3.1.6", + "minipass": "^5.0.0", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "optionalDependencies": { "encoding": "^0.1.13" } }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -9031,6 +9555,12 @@ "node": ">=8" } }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -9044,6 +9574,12 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -9089,10 +9625,16 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -9107,9 +9649,9 @@ "dev": true }, "node_modules/needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, "optional": true, "dependencies": { @@ -9219,15 +9761,16 @@ } }, "node_modules/node-gyp": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", - "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", + "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", "dev": true, "dependencies": { "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", + "make-fetch-happen": "^11.0.3", "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -9239,13 +9782,13 @@ "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": "^12.13 || ^14.13 || >=16" } }, "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "dev": true, "optional": true, "bin": { @@ -9296,25 +9839,10 @@ "node": "*" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==" }, "node_modules/nopt": { "version": "6.0.0", @@ -9477,6 +10005,59 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -9526,9 +10107,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9602,17 +10183,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -9949,6 +10530,40 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", + "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -10150,9 +10765,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "12.1.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -10420,9 +11035,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", @@ -10487,9 +11102,9 @@ } }, "node_modules/postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "dev": true, "funding": [ { @@ -10503,6 +11118,9 @@ ], "engines": { "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" } }, "node_modules/postcss-overflow-shorthand": { @@ -10667,9 +11285,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -10770,9 +11388,9 @@ "optional": true }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" @@ -10841,9 +11459,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -10902,9 +11520,9 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -10956,9 +11574,9 @@ "dev": true }, "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -10983,28 +11601,22 @@ } }, "node_modules/regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" } }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -11586,9 +12198,9 @@ } }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11610,6 +12222,11 @@ "node": ">=10" } }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -11677,9 +12294,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -11835,15 +12452,12 @@ "dev": true }, "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/smart-buffer": { @@ -11857,32 +12471,36 @@ } }, "node_modules/socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.1.tgz", + "integrity": "sha512-W+utHys2w//dhFjy7iQQu9sGd3eokCjGbl2r59tyLqNiJJBdIebn3GAKEXBr3osqHTObJi2die/25bCx2zsaaw==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" + "engine.io": "~6.5.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { "node": ">=10.0.0" } }, "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dev": true, + "dependencies": { + "ws": "~8.11.0" + } }, "node_modules/socket.io-parser": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz", - "integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", @@ -12004,12 +12622,13 @@ "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -12033,9 +12652,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, "node_modules/spdy": { @@ -12096,9 +12715,9 @@ } }, "node_modules/streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, "dependencies": { "date-format": "^4.0.14", @@ -12131,13 +12750,41 @@ "node": ">=8" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" - }, + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } @@ -12300,14 +12947,14 @@ } }, "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", + "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" @@ -12316,6 +12963,21 @@ "node": ">=10" } }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/terser": { "version": "5.14.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", @@ -12335,16 +12997,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -12400,9 +13062,9 @@ "dev": true }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -12417,6 +13079,24 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", + "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -12492,15 +13172,15 @@ "dev": true }, "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "dependencies": { - "os-tmpdir": "~1.0.2" + "rimraf": "^3.0.0" }, "engines": { - "node": ">=0.6.0" + "node": ">=8.17.0" } }, "node_modules/to-fast-properties": { @@ -12584,13 +13264,13 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } @@ -12608,9 +13288,30 @@ } }, "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", @@ -12668,9 +13369,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.32", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", - "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "version": "0.7.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", + "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==", "dev": true, "funding": [ { @@ -12709,9 +13410,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, "engines": { "node": ">=4" @@ -12763,9 +13464,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "funding": [ { "type": "opencollective", @@ -12774,6 +13475,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -12781,7 +13486,7 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -12898,9 +13603,9 @@ } }, "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.76.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", + "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -12968,15 +13673,15 @@ } }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -13042,15 +13747,15 @@ } }, "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -13060,31 +13765,10 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -13156,9 +13840,9 @@ "dev": true }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -13197,15 +13881,18 @@ } }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/wide-align": { @@ -13218,24 +13905,33 @@ } }, "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi": { + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -13248,6 +13944,39 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -13284,9 +14013,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -13313,9 +14042,9 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { "version": "1.10.2", @@ -13380,9578 +14109,5 @@ "tslib": "^2.3.0" } } - }, - "dependencies": { - "@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", - "dev": true - }, - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-builders/custom-webpack": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-builders/custom-webpack/-/custom-webpack-14.0.1.tgz", - "integrity": "sha512-QDsSFo80I8oLBzvr7qIxcdEfvDMEeJmwYRrJ/hG8O+XVdYsUkkj4nEvBI5fKKBOfcRgx1R/XrEDtJEeolEQeig==", - "dev": true, - "requires": { - "@angular-devkit/architect": ">=0.1400.0 < 0.1500.0", - "@angular-devkit/build-angular": "^14.0.0", - "@angular-devkit/core": "^14.0.0", - "lodash": "^4.17.15", - "ts-node": "^10.0.0", - "tsconfig-paths": "^3.9.0", - "webpack-merge": "^5.7.3" - } - }, - "@angular-devkit/architect": { - "version": "0.1402.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.8.tgz", - "integrity": "sha512-z3HXPBi3h3y+D04NNA/5lVaUCMF+dkE/75bCqg4DG3FqV0i0dh4hozjKtWgX6xuoJ8AJlDfrJSaBCvjsog+Jhg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.8", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/build-angular": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.8.tgz", - "integrity": "sha512-FSi7FHxqMLXmVulJg8ocGCTGbdnjPlQ0pSS91blg+PeL2Ly+h0hNl+MTLP/4aX9/n2SMPtcX7BbS20/M6UhoRw==", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.8", - "@angular-devkit/build-webpack": "0.1402.8", - "@angular-devkit/core": "14.2.8", - "@babel/core": "7.18.10", - "@babel/generator": "7.18.12", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.10", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.10", - "@babel/preset-env": "7.18.10", - "@babel/runtime": "7.18.9", - "@babel/template": "7.18.10", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.8", - "ansi-colors": "4.1.3", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "16.1.2", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.1", - "esbuild": "0.15.5", - "esbuild-wasm": "0.15.5", - "glob": "8.0.3", - "https-proxy-agent": "5.0.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "karma-source-map-support": "1.4.0", - "less": "4.1.3", - "less-loader": "11.0.0", - "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", - "mini-css-extract-plugin": "2.6.1", - "minimatch": "5.1.0", - "open": "8.4.0", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.2.0", - "postcss": "8.4.16", - "postcss-import": "15.0.0", - "postcss-loader": "7.0.1", - "postcss-preset-env": "7.8.0", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.54.4", - "sass-loader": "13.0.2", - "semver": "7.3.7", - "source-map-loader": "4.0.0", - "source-map-support": "0.5.21", - "stylus": "0.59.0", - "stylus-loader": "7.0.0", - "terser": "5.14.2", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.4.0", - "webpack": "5.74.0", - "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.11.0", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1402.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.8.tgz", - "integrity": "sha512-KBI6F44AMdOB+/pIAkVsxJYVnPVg+IkNBqug2oFOGnIab7VrFWpEEqihB1rAdRlMEjcPJ6YxNkzErDaOvtH2qw==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1402.8", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/core": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.8.tgz", - "integrity": "sha512-30nDq2PH91X7T42xXFBlTiXTBG143z0BL8IUgpVCxTFYwxgPbtV4bcXTkiBgh1FL/usZcHa0Bd/64wxmFOpYwA==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/schematics": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.8.tgz", - "integrity": "sha512-L5GEgueZV4vqZy9Ar0zxVJOHK/4ttF1nPjW4Ut1vRFJGxsHFVEpxq5eGBf2JYSiOhqmFYc6GnJOxA6C4xAIHjA==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.8", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-eslint/builder": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.1.2.tgz", - "integrity": "sha512-J+LRidjlJOGfRNXJwUyOhz5TnasEBK+kL3QkkCE4ZSt/dH40QqT+3q9qV5zc45wdaAeJM4/jp1IhI6kPwWI5Yw==", - "dev": true, - "requires": {} - }, - "@angular-eslint/bundled-angular-compiler": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.1.2.tgz", - "integrity": "sha512-d5/jTKXP+t9hNSucj3m8zZYBl62fZ2xFMVNbAOArYAkA7WwwX3D7Gae57BNW54cd2fl2/is7Dn6UgYhu1wqkSQ==", - "dev": true - }, - "@angular-eslint/eslint-plugin": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.1.2.tgz", - "integrity": "sha512-5pJaTcFfM7yDHNtMxw3uNTpBTLjNYH9mlOLX5FFQ9EahAuycwCtV8VJkIntK2ZiOTdRVJYA9/PEdD/xVxX02rw==", - "dev": true, - "requires": { - "@angular-eslint/utils": "14.1.2", - "@typescript-eslint/utils": "5.37.0" - } - }, - "@angular-eslint/eslint-plugin-template": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.1.2.tgz", - "integrity": "sha512-gMgYJ8ZwPvq2H/YEzPztVRAK2NYs2cJFUDZD4iGjSRtDgYq9OHjyTo+r6tkcyjcK2qvesy0RccHQKh+x3hYMTA==", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "14.1.2", - "@typescript-eslint/type-utils": "5.37.0", - "@typescript-eslint/utils": "5.37.0", - "aria-query": "5.0.2", - "axobject-query": "3.0.1" - } - }, - "@angular-eslint/schematics": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.1.2.tgz", - "integrity": "sha512-jyaCDQf+MGjMCf+U6KXvvpPESKMUoSGXYhsh2XYtSSUhXook9f2cPI6bHBMyrDgV43zH42jMS+yMC1EO24ZP1w==", - "dev": true, - "requires": { - "@angular-eslint/eslint-plugin": "14.1.2", - "@angular-eslint/eslint-plugin-template": "14.1.2", - "ignore": "5.2.0", - "strip-json-comments": "3.1.1", - "tmp": "0.2.1" - }, - "dependencies": { - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - } - } - }, - "@angular-eslint/template-parser": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.1.2.tgz", - "integrity": "sha512-bQI+poQDIyR3OU9EQzJeLYRtmsvjFGtV5dc+4XPJ6eIyRAc8baCG/0V/cOrpofIdSf7e/sCV8H7rXcFg6tSdUw==", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "14.1.2", - "eslint-scope": "^5.1.0" - } - }, - "@angular-eslint/utils": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.1.2.tgz", - "integrity": "sha512-EtblG9zO0+kWG9EHsoEshFKvsH5DMSK1DqwQsNOVGAF0Aa5DFOqrwouJUyBNJ0d4fSWI9QcuzVkZ1x9JyLIeXQ==", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "14.1.2", - "@typescript-eslint/utils": "5.37.0" - } - }, - "@angular/animations": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.9.tgz", - "integrity": "sha512-oUgfao3A0LbTKcYIPsXk982CFomjAdOB8782txXs9r7RANCZgMlE/t36PEMesAvUPimLbUF31HjCJu8YuC/OYw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/cli": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.8.tgz", - "integrity": "sha512-yJDLSlTFwQhNJlFoXCw8r8iQWNJn9bIjBSdEL0mM9px5EvSxDYGDXwiJRvionlZAL9P4u0d8XeBy3EPyFkAE5Q==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1402.8", - "@angular-devkit/core": "14.2.8", - "@angular-devkit/schematics": "14.2.8", - "@schematics/angular": "14.2.8", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "npm-package-arg": "9.1.0", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.6.2", - "resolve": "1.22.1", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.5.1" - } - }, - "@angular/common": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.9.tgz", - "integrity": "sha512-nC1He98gj4FQqSo31Fb9ZJ+Ao3jJbmAg1JAdF5L0tkY70YydM91HXAp/JDrJ12O7IomenAwEHONFCVxgUfqUJw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.9.tgz", - "integrity": "sha512-M0uYFMSAejYJ+fm/Lz1/l7nr1adVrYfC7lKBpbiyya5moGenRid81Fl7i2YY6RehFpGHw3GdPlMz+DRIMXgyuQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.9.tgz", - "integrity": "sha512-c3+LyW4WkZya4JnefUUOoCplwM9OgOnR2LqC6Qwro9Z40VXBqBeA5PJ6EJ28c4q6ZVoy5v00PwUVSwgcGP7qNA==", - "requires": { - "@babel/core": "^7.17.2", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.11.0", - "magic-string": "^0.26.0", - "reflect-metadata": "^0.1.2", - "semver": "^7.0.0", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - } - }, - "@angular/core": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.9.tgz", - "integrity": "sha512-6bExQgGmN9qmBbVMl7WaZ1KFSfTgFK+MmLbvoh4a29b47h7wvEuUWO7ulczzoUJQfMGfXU/4ypEW1a8ZhX+Xrg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.9.tgz", - "integrity": "sha512-46Xlr4Qlgg/RBlb0TG9QCINe7zbVIFRF9YOi7dSIVW7tjKs6N8DPcP4eHAnrvxNmz+8S2v+CVXKOXGwaGE52vw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/localize": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.9.tgz", - "integrity": "sha512-RluLAUVnrD+csrLBBJufNObTb6Fo7+qDGhtBKrt0OlxsasANFypNmUv5mkXGhqJXplZEMG4WFm+X6eJiKblZkg==", - "requires": { - "@babel/core": "7.18.9", - "glob": "8.0.3", - "yargs": "^17.2.1" - }, - "dependencies": { - "@babel/core": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", - "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@angular/platform-browser": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.9.tgz", - "integrity": "sha512-cvKFyHZp69scDj+tOmknWsdyarpNjpuFHbn2Tn3K9HLJsNHOvP2g8d/KwHl5atRscnDK1ztNh+FUKhGmQZsbng==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.9.tgz", - "integrity": "sha512-hu0lfAkPplGhkQKXaryj+6wLboqIC8JNWGONlqKTaARgfaQ8TyMikOimKxMk9mljlJpPcrVxAewn5p9G0VmLng==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.9.tgz", - "integrity": "sha512-xg5Ajmn7mt6bosUDDotGzWORMfNGqi1otOUT8Sj2TpkvJebCaOS78GBBMnF8H5zaq8Pi+IsLM46kSJakFGdnVg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" - }, - "@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/generator": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", - "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", - "requires": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - }, - "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", - "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", - "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", - "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", - "requires": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - } - }, - "@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - } - }, - "@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", - "dev": true, - "requires": {} - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", - "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", - "dev": true, - "optional": true - }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "@ng-bootstrap/ng-bootstrap": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-13.1.0.tgz", - "integrity": "sha512-pmyIQ3yWT/SIRiVJqu0+0cxWvcLLyOkzkmgUk6aTjLKS/n1X/xcVfGCoUoEPo3HvpbnLKIwlRJkTEYYgC9pwnA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@ngtools/webpack": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.8.tgz", - "integrity": "sha512-ugQRiOgQBbZUFSRRfj+KOUrtGHWI7IyVfnK3HA08+QFQOygY6igs07D6v4l5RHkUnyQkCgUE30EaFaj58fGJjg==", - "dev": true, - "requires": {} - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/node-gyp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", - "dev": true - }, - "@npmcli/promise-spawn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", - "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" - }, - "@schematics/angular": { - "version": "14.2.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.8.tgz", - "integrity": "sha512-SuzeCpWHF9+8jey7WheM1Va0iyJrYAD88O2VT2x0NEF2PXEH63lV7BCBtE7kKurIAmXBbvTCsPyZuFKYJGDHFA==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.8", - "@angular-devkit/schematics": "14.2.8", - "jsonc-parser": "3.1.0" - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz", - "integrity": "sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/type-utils": "5.37.0", - "@typescript-eslint/utils": "5.37.0", - "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.37.0.tgz", - "integrity": "sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/typescript-estree": "5.37.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.37.0.tgz", - "integrity": "sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/visitor-keys": "5.37.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.37.0.tgz", - "integrity": "sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.37.0", - "@typescript-eslint/utils": "5.37.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } - } - }, - "@typescript-eslint/types": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.37.0.tgz", - "integrity": "sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.37.0.tgz", - "integrity": "sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/visitor-keys": "5.37.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.37.0.tgz", - "integrity": "sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/typescript-estree": "5.37.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.37.0.tgz", - "integrity": "sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.37.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - } - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz", - "integrity": "sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==", - "dev": true - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axobject-query": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", - "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", - "dev": true - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", - "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", - "dev": true, - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "bootstrap": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.2.tgz", - "integrity": "sha512-dEtzMTV71n6Fhmbg4fYJzQsw1N29hJKO1js5ackCgIpDcGid2ETMGC6zwSYw09v05Y+oRdQ9loC54zB1La3hHQ==", - "requires": {} - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "cacache": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", - "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", - "dev": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "core-js-compat": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", - "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "css-select": "^4.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.7", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - } - }, - "css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "requires": {} - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssdb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", - "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "requires": { - "execa": "^5.0.0" - } - }, - "defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", - "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "dev": true, - "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "esbuild": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", - "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", - "dev": true, - "optional": true, - "requires": { - "@esbuild/linux-loong64": "0.15.5", - "esbuild-android-64": "0.15.5", - "esbuild-android-arm64": "0.15.5", - "esbuild-darwin-64": "0.15.5", - "esbuild-darwin-arm64": "0.15.5", - "esbuild-freebsd-64": "0.15.5", - "esbuild-freebsd-arm64": "0.15.5", - "esbuild-linux-32": "0.15.5", - "esbuild-linux-64": "0.15.5", - "esbuild-linux-arm": "0.15.5", - "esbuild-linux-arm64": "0.15.5", - "esbuild-linux-mips64le": "0.15.5", - "esbuild-linux-ppc64le": "0.15.5", - "esbuild-linux-riscv64": "0.15.5", - "esbuild-linux-s390x": "0.15.5", - "esbuild-netbsd-64": "0.15.5", - "esbuild-openbsd-64": "0.15.5", - "esbuild-sunos-64": "0.15.5", - "esbuild-windows-32": "0.15.5", - "esbuild-windows-64": "0.15.5", - "esbuild-windows-arm64": "0.15.5" - } - }, - "esbuild-android-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", - "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", - "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", - "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", - "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", - "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", - "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", - "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", - "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", - "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", - "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", - "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", - "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", - "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", - "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", - "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", - "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", - "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", - "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", - "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", - "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", - "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true - }, - "eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "hdr-histogram-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "requires": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } - }, - "hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "dependencies": { - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", - "dev": true, - "requires": { - "minimatch": "^5.0.1" - } - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", - "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", - "dev": true - }, - "inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.3.0.tgz", - "integrity": "sha512-qybtBUesniQdW6n+QIHMng2vDOHscIC/dEXjW+JzO9+LoAZMb03RCUC5xFOv/btSKPm1xL42fn+RjlU4oB42Lg==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true - }, - "karma": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", - "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.4.1", - "mime": "^2.5.2", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.5", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^4.4.1", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.1.1" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "karma-jasmine": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", - "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", - "dev": true, - "requires": { - "jasmine-core": "^4.1.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", - "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", - "dev": true, - "requires": {} - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "less": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", - "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "less-loader": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", - "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", - "dev": true, - "requires": { - "klona": "^2.0.4" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - } - }, - "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "dev": true - }, - "magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.10.tgz", - "integrity": "sha512-0bCUP+L79P4am30yP1msPzApwuMQG23TjwlwdHeEV5MxioDR1a0AgB0T9FfggU52eJuDCq8WVwb5ekznFyWiTQ==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", - "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - } - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "ngx-cookie-service": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-14.0.1.tgz", - "integrity": "sha512-PHjpA/bpp1ZgvQ2AWdXA6oxPQgE9k0WljQ7tvUH/u0Acl6p6akzF8kWlQiWxkgR3hBs7xB3paIsTk6GKdtakMg==", - "requires": { - "tslib": "^2.0.0" - } - }, - "ngx-mask": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/ngx-mask/-/ngx-mask-14.2.4.tgz", - "integrity": "sha512-158nAe2tyiZa2T8COoI6SvJCQHqpJ4+JW0amGcvVEYUBF6FIoYK66BlnOJURAOy5qry0d0N45w7J/LGsCBgZcg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true - }, - "node-gyp": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", - "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "npm-package-arg": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", - "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-packlist": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", - "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-bundled": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", - "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^2.0.0" - } - }, - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true - } - } - }, - "npm-pick-manifest": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", - "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", - "dev": true, - "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - } - }, - "npm-registry-fetch": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", - "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "dependencies": { - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - } - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", - "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "requires": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0", - "nice-napi": "^1.0.2" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-clamp": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-properties": { - "version": "12.1.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "requires": {} - }, - "postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "dev": true, - "requires": {} - }, - "postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-import": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", - "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "requires": {} - }, - "postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-loader": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", - "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.7" - } - }, - "postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "requires": {} - }, - "postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "requires": {} - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", - "dev": true - }, - "postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "requires": {} - }, - "postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-preset-env": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", - "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", - "dev": true, - "requires": { - "@csstools/postcss-cascade-layers": "^1.0.5", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.8", - "browserslist": "^4.21.3", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.0.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.8", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.10", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "requires": {} - }, - "postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - } - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "read-package-json": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", - "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true - } - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.54.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", - "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-loader": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", - "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "schematics-scss-migrate": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/schematics-scss-migrate/-/schematics-scss-migrate-1.3.15.tgz", - "integrity": "sha512-liOWef7NlVIoW8b3Ctvr1zcfHkISBKFI3X1dZaOQjDP0rDFgBCaPKqAl1X6Eiu0fgbWmNi5XzV9gU4F/2V7q5g==", - "dev": true, - "requires": { - "@angular-devkit/core": "^12.0.1", - "@angular-devkit/schematics": "^12.2.8", - "@schematics/angular": "^12.2.8", - "glob": "^7.1.6", - "sass": "^1.29.0", - "typescript": "^4.3.2" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.18.tgz", - "integrity": "sha512-GDLHGe9HEY5SRS+NrKr14C8aHsRCiBFkBFSSbeohgLgcgSXzZHFoU84nDWrl3KZNP8oqcUSv5lHu6dLcf2fnww==", - "dev": true, - "requires": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "@angular-devkit/schematics": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.18.tgz", - "integrity": "sha512-bZ9NS5PgoVfetRC6WeQBHCY5FqPZ9y2TKHUo12sOB2YSL3tgWgh1oXyP8PtX34gasqsLjNULxEQsAQYEsiX/qQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "12.2.18", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, - "@schematics/angular": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.18.tgz", - "integrity": "sha512-niRS9Ly9y8uI0YmTSbo8KpdqCCiZ/ATMZWeS2id5M8JZvfXbngwiqJvojdSol0SWU+n1W4iA+lJBdt4gSKlD5w==", - "dev": true, - "requires": { - "@angular-devkit/core": "12.2.18", - "@angular-devkit/schematics": "12.2.18", - "jsonc-parser": "3.0.0" - } - }, - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", - "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, - "socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz", - "integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", - "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "stylus": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", - "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", - "dev": true, - "requires": { - "@adobe/css-tools": "^4.0.1", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "stylus-loader": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", - "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "klona": "^2.0.5", - "normalize-path": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" - }, - "ua-parser-js": { - "version": "0.7.32", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", - "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-dev-server": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", - "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "dependencies": { - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "requires": { - "tslib": "^2.3.0" - } - } } } diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/api/models/consumer.ts b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/api/models/consumer.ts index 238a83aca..618e77870 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/api/models/consumer.ts +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/api/models/consumer.ts @@ -4,5 +4,4 @@ import { TopicPartitionAssignment } from './topic-partition-assignment'; export interface Consumer { assignments?: null | Array; name: string; - workersCount?: number; } diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/api/models/topic-partition-assignment.ts b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/api/models/topic-partition-assignment.ts index 049a70f96..4f27a1ff0 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/api/models/topic-partition-assignment.ts +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/api/models/topic-partition-assignment.ts @@ -3,6 +3,7 @@ export interface TopicPartitionAssignment { instanceName: string; lag?: number; + workers: number; lastUpdate?: string; pausedPartitions?: null | Array; runningPartitions?: null | Array; diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/consumer.component.html b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/consumer.component.html index 1a44cf9d8..eff1e0c2a 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/consumer.component.html +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/consumer.component.html @@ -15,11 +15,9 @@

Status: Start +

Lag: {{$any(consumer).lag}}

-

Workers: {{consumer.workersCount}} - -


@@ -33,6 +31,7 @@
Consumer instance + Workers Partitions Lag Status @@ -43,6 +42,7 @@
{{partitionAssignment.instanceName}} + {{partitionAssignment.workers}} {{hasRunningPartition(partitionAssignment) ? partitionAssignment.runningPartitions : partitionAssignment.pausedPartitions}} {{partitionAssignment.lag}} diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/consumer.component.ts b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/consumer.component.ts index f0bd55695..77f321fa0 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/consumer.component.ts +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/consumer.component.ts @@ -77,12 +77,11 @@ export class ConsumerComponent implements OnInit { isActive = (date: string) => Math.abs((new Date().getTime() - new Date(date + 'Z').getTime()) / 1000) < 30; - openWorkersCountModal = (groupId: string, consumerName: string, workersCount?: number) => { + openWorkersCountModal = (groupId: string, consumerName: string) => { const modalRef = this.modalService.open(WorkersCountModalComponent); modalRef.componentInstance.groupId = groupId; modalRef.componentInstance.consumerName = consumerName; - modalRef.componentInstance.workersCount = workersCount; modalRef.result.then((newWorkersCount: number) => { diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/shared/workers-count-modal/workers-count-modal.component.html b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/shared/workers-count-modal/workers-count-modal.component.html index 1c2b79570..9d0f67bc3 100644 --- a/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/shared/workers-count-modal/workers-count-modal.component.html +++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/src/app/consumer/shared/workers-count-modal/workers-count-modal.component.html @@ -8,10 +8,6 @@
public long Lag { get; set; } + + /// + /// Gets or sets the workers count + /// + public int Workers { get; set; } } } } diff --git a/src/KafkaFlow.Admin.Dashboard/TelemetryResponseAdapter.cs b/src/KafkaFlow.Admin.Dashboard/TelemetryResponseAdapter.cs index 7977d9aed..d86045671 100644 --- a/src/KafkaFlow.Admin.Dashboard/TelemetryResponseAdapter.cs +++ b/src/KafkaFlow.Admin.Dashboard/TelemetryResponseAdapter.cs @@ -28,10 +28,6 @@ internal static TelemetryResponse Adapt(this IEnumerable x.SentAt) - .First() - .WorkersCount, Assignments = consumerMetricsList .OrderBy(x => x.Topic) .Select( @@ -40,6 +36,7 @@ internal static TelemetryResponse Adapt(this IEnumerable diff --git a/src/KafkaFlow.Admin.WebApi/Contracts/GroupsResponse.cs b/src/KafkaFlow.Admin.WebApi/Contracts/GroupsResponse.cs index 60ece5aa4..79e97c03c 100644 --- a/src/KafkaFlow.Admin.WebApi/Contracts/GroupsResponse.cs +++ b/src/KafkaFlow.Admin.WebApi/Contracts/GroupsResponse.cs @@ -1,7 +1,6 @@ namespace KafkaFlow.Admin.WebApi.Contracts { using System.Collections.Generic; - using KafkaFlow.Consumers; /// /// The response of the consumer groups diff --git a/src/KafkaFlow.Admin.WebApi/Controllers/ConsumersController.cs b/src/KafkaFlow.Admin.WebApi/Controllers/ConsumersController.cs index 959e36e0a..7ef6f33f3 100644 --- a/src/KafkaFlow.Admin.WebApi/Controllers/ConsumersController.cs +++ b/src/KafkaFlow.Admin.WebApi/Controllers/ConsumersController.cs @@ -3,7 +3,6 @@ namespace KafkaFlow.Admin.WebApi.Controllers using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; - using KafkaFlow.Admin.Messages; using KafkaFlow.Admin.WebApi.Adapters; using KafkaFlow.Admin.WebApi.Contracts; using KafkaFlow.Consumers; @@ -12,7 +11,7 @@ namespace KafkaFlow.Admin.WebApi.Controllers /// /// Consumers controller /// - [Route("kafka-flow/groups/{groupId}/consumers")] + [Route("kafkaflow/groups/{groupId}/consumers")] [ApiController] public class ConsumersController : ControllerBase { @@ -23,7 +22,7 @@ public class ConsumersController : ControllerBase /// Initializes a new instance of the class. /// /// The accessor class that provides access to the consumers - /// The producer to publish admin messages + /// The admin messages consumer public ConsumersController(IConsumerAccessor consumers, IConsumerAdmin consumerAdmin) { this.consumers = consumers; diff --git a/src/KafkaFlow.Admin.WebApi/Controllers/GroupsController.cs b/src/KafkaFlow.Admin.WebApi/Controllers/GroupsController.cs index 49886a54d..0ed3a5b2a 100644 --- a/src/KafkaFlow.Admin.WebApi/Controllers/GroupsController.cs +++ b/src/KafkaFlow.Admin.WebApi/Controllers/GroupsController.cs @@ -3,7 +3,6 @@ namespace KafkaFlow.Admin.WebApi.Controllers using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; - using KafkaFlow.Admin.Messages; using KafkaFlow.Admin.WebApi.Adapters; using KafkaFlow.Admin.WebApi.Contracts; using KafkaFlow.Consumers; @@ -12,7 +11,7 @@ namespace KafkaFlow.Admin.WebApi.Controllers /// /// Groups controller /// - [Route("kafka-flow/groups")] + [Route("kafkaflow/groups")] [ApiController] public class GroupsController : ControllerBase { @@ -23,7 +22,7 @@ public class GroupsController : ControllerBase /// Initializes a new instance of the class. /// /// The accessor class that provides access to the consumers - /// The producer to publish admin messages + /// The admin messages consumer public GroupsController(IConsumerAccessor consumers, IConsumerAdmin consumerAdmin) { this.consumers = consumers; diff --git a/src/KafkaFlow.Admin.WebApi/Controllers/TelemetryController.cs b/src/KafkaFlow.Admin.WebApi/Controllers/TelemetryController.cs index 763768546..2cc39ef3c 100644 --- a/src/KafkaFlow.Admin.WebApi/Controllers/TelemetryController.cs +++ b/src/KafkaFlow.Admin.WebApi/Controllers/TelemetryController.cs @@ -7,7 +7,7 @@ namespace KafkaFlow.Admin.WebApi.Controllers /// /// Telemetry controller /// - [Route("kafka-flow/telemetry")] + [Route("kafkaflow/telemetry")] [ApiController] public class TelemetryController : ControllerBase { diff --git a/src/KafkaFlow.Admin.WebApi/KafkaFlow.Admin.WebApi.csproj b/src/KafkaFlow.Admin.WebApi/KafkaFlow.Admin.WebApi.csproj index b517840d5..44b6cf74e 100644 --- a/src/KafkaFlow.Admin.WebApi/KafkaFlow.Admin.WebApi.csproj +++ b/src/KafkaFlow.Admin.WebApi/KafkaFlow.Admin.WebApi.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + net6.0 Library KafkaFlow.Admin.WebApi Allows KafkaFlow to use the Admin Web API @@ -9,12 +9,12 @@ - + + - - + diff --git a/src/KafkaFlow.Admin/Handlers/PauseConsumerByNameHandler.cs b/src/KafkaFlow.Admin/Handlers/PauseConsumerByNameHandler.cs index 317e8440d..c8bd71843 100644 --- a/src/KafkaFlow.Admin/Handlers/PauseConsumerByNameHandler.cs +++ b/src/KafkaFlow.Admin/Handlers/PauseConsumerByNameHandler.cs @@ -27,4 +27,4 @@ public Task Handle(IMessageContext context, PauseConsumerByName message) return Task.CompletedTask; } } -} \ No newline at end of file +} diff --git a/src/KafkaFlow.Admin/Handlers/RewindConsumerOffsetToDateTimeHandler.cs b/src/KafkaFlow.Admin/Handlers/RewindConsumerOffsetToDateTimeHandler.cs index 8ede7f638..83712ab40 100644 --- a/src/KafkaFlow.Admin/Handlers/RewindConsumerOffsetToDateTimeHandler.cs +++ b/src/KafkaFlow.Admin/Handlers/RewindConsumerOffsetToDateTimeHandler.cs @@ -4,7 +4,7 @@ namespace KafkaFlow.Admin.Handlers using System.Linq; using System.Threading.Tasks; using Confluent.Kafka; - using Extensions; + using KafkaFlow.Admin.Extensions; using KafkaFlow.Admin.Messages; using KafkaFlow.Consumers; using KafkaFlow.TypedHandler; diff --git a/src/KafkaFlow.Admin/KafkaFlow.Admin.csproj b/src/KafkaFlow.Admin/KafkaFlow.Admin.csproj index aca4ff1d3..58d220888 100644 --- a/src/KafkaFlow.Admin/KafkaFlow.Admin.csproj +++ b/src/KafkaFlow.Admin/KafkaFlow.Admin.csproj @@ -15,7 +15,7 @@ - +
diff --git a/src/KafkaFlow.Admin/MemoryTelemetryStorage.cs b/src/KafkaFlow.Admin/MemoryTelemetryStorage.cs index ae4226bc1..081856304 100644 --- a/src/KafkaFlow.Admin/MemoryTelemetryStorage.cs +++ b/src/KafkaFlow.Admin/MemoryTelemetryStorage.cs @@ -40,19 +40,19 @@ private static (string, string, string, string) BuildKey(ConsumerTelemetryMetric private void TryCleanItems() { - if (!this.NeedsClean()) + if (!this.NeedsCleaning()) { return; } lock (this.cleanSyncRoot) { - if (!this.NeedsClean()) + if (!this.NeedsCleaning()) { return; } - this.lastCleanDate = this.dateTimeProvider.Now; + this.lastCleanDate = this.dateTimeProvider.UtcNow; this.CleanExpiredItems(); } @@ -62,7 +62,7 @@ private void CleanExpiredItems() { foreach (var (key, metric) in this.metrics.Select(x=> (x.Key, x.Value))) { - if (this.dateTimeProvider.Now - metric.SentAt > this.expiryTime) + if (this.dateTimeProvider.UtcNow - metric.SentAt > this.expiryTime) { this.metrics.TryRemove(key, out _); } @@ -70,6 +70,6 @@ private void CleanExpiredItems() } [MethodImpl(MethodImplOptions.AggressiveInlining)] - private bool NeedsClean() => this.dateTimeProvider.Now - this.lastCleanDate > this.cleanRunInterval; + private bool NeedsCleaning() => this.dateTimeProvider.UtcNow - this.lastCleanDate > this.cleanRunInterval; } } diff --git a/src/KafkaFlow.Admin/TelemetryScheduler.cs b/src/KafkaFlow.Admin/TelemetryScheduler.cs index 8da5ba82f..b3aaaec69 100644 --- a/src/KafkaFlow.Admin/TelemetryScheduler.cs +++ b/src/KafkaFlow.Admin/TelemetryScheduler.cs @@ -14,10 +14,12 @@ internal class TelemetryScheduler : ITelemetryScheduler private static readonly int ProcessId = Process.GetCurrentProcess().Id; private readonly Dictionary timers = new(); private readonly IDependencyResolver dependencyResolver; + private readonly ILogHandler logHandler; public TelemetryScheduler(IDependencyResolver dependencyResolver) { this.dependencyResolver = dependencyResolver; + this.logHandler = dependencyResolver.Resolve(); } public void Start(string telemetryId, string topicName, int topicPartition) @@ -53,41 +55,48 @@ public void Stop(string telemetryId) } } - private static void ProduceTelemetry( + private void ProduceTelemetry( string topicName, int partition, IEnumerable consumers, IMessageProducer producer) { - var items = consumers - .SelectMany( - c => - { - var consumerLag = c.GetTopicPartitionsLag(); + try + { + var items = consumers + .SelectMany( + c => + { + var consumerLag = c.GetTopicPartitionsLag(); - return c.Topics.Select( - topic => new ConsumerTelemetryMetric - { - ConsumerName = c.ConsumerName, - Topic = topic, - GroupId = c.GroupId, - InstanceName = $"{Environment.MachineName}-{ProcessId}", - PausedPartitions = c.PausedPartitions - .Where(p => p.Topic == topic) - .Select(p => p.Partition.Value), - RunningPartitions = c.RunningPartitions - .Where(p => p.Topic == topic) - .Select(p => p.Partition.Value), - WorkersCount = c.WorkersCount, - Status = c.Status, - Lag = consumerLag.Where(l => l.Topic == topic).Sum(l => l.Lag), - SentAt = DateTime.Now.ToUniversalTime(), - }); - }); + return c.Topics.Select( + topic => new ConsumerTelemetryMetric + { + ConsumerName = c.ConsumerName, + Topic = topic, + GroupId = c.GroupId, + InstanceName = $"{Environment.MachineName}-{ProcessId}", + PausedPartitions = c.PausedPartitions + .Where(p => p.Topic == topic) + .Select(p => p.Partition.Value), + RunningPartitions = c.RunningPartitions + .Where(p => p.Topic == topic) + .Select(p => p.Partition.Value), + WorkersCount = c.WorkersCount, + Status = c.Status, + Lag = consumerLag.Where(l => l.Topic == topic).Sum(l => l.Lag), + SentAt = DateTime.UtcNow, + }); + }); - foreach (var item in items) + foreach (var item in items) + { + producer.Produce(topicName, Guid.NewGuid().ToByteArray(), item, partition: partition); + } + } + catch (Exception e) { - producer.Produce(topicName, Guid.NewGuid().ToByteArray(), item, partition: partition); + this.logHandler.Warning("Error producing telemetry data", new { Exception = e }); } } } diff --git a/src/KafkaFlow.BatchConsume/BatchConsumeExtensions.cs b/src/KafkaFlow.BatchConsume/BatchConsumeExtensions.cs index 1bbe085da..9e3326156 100644 --- a/src/KafkaFlow.BatchConsume/BatchConsumeExtensions.cs +++ b/src/KafkaFlow.BatchConsume/BatchConsumeExtensions.cs @@ -3,6 +3,7 @@ namespace KafkaFlow.BatchConsume using System; using System.Collections.Generic; using KafkaFlow.Configuration; + using KafkaFlow.Consumers; /// /// no needed @@ -23,6 +24,7 @@ public static IConsumerMiddlewareConfigurationBuilder BatchConsume( { return builder.Add( resolver => new BatchConsumeMiddleware( + resolver.Resolve(), batchSize, batchTimeout, resolver.Resolve()), @@ -38,7 +40,7 @@ public static IReadOnlyCollection GetMessagesBatch(this IMessag { if (context is BatchConsumeMessageContext ctx) { - return (IReadOnlyCollection) ctx.Message.Value; + return (IReadOnlyCollection)ctx.Message.Value; } throw new InvalidOperationException($"This method can only be used on {nameof(BatchConsumeMessageContext)}"); diff --git a/src/KafkaFlow.BatchConsume/BatchConsumeMessageContext.cs b/src/KafkaFlow.BatchConsume/BatchConsumeMessageContext.cs index 0087fd6ca..5db162b63 100644 --- a/src/KafkaFlow.BatchConsume/BatchConsumeMessageContext.cs +++ b/src/KafkaFlow.BatchConsume/BatchConsumeMessageContext.cs @@ -3,14 +3,17 @@ namespace KafkaFlow.BatchConsume using System; using System.Collections.Generic; - internal class BatchConsumeMessageContext : IMessageContext + internal class BatchConsumeMessageContext : IMessageContext, IDisposable { + private readonly IDependencyResolverScope batchDependencyScope; + public BatchConsumeMessageContext( IConsumerContext consumer, IReadOnlyCollection batchMessage) { this.ConsumerContext = consumer; this.Message = new Message(null, batchMessage); + this.batchDependencyScope = consumer.WorkerDependencyResolver.CreateScope(); } public Message Message { get; } @@ -21,9 +24,11 @@ public BatchConsumeMessageContext( public IProducerContext ProducerContext => null; + public IDependencyResolver DependencyResolver => this.batchDependencyScope.Resolver; + public IMessageContext SetMessage(object key, object value) => - throw new NotSupportedException($"{nameof(BatchConsumeMessageContext)} does not allow change the message"); + throw new NotSupportedException($"{nameof(BatchConsumeMessageContext)} does not allow to change the message"); - public IMessageContext TransformMessage(object message) => throw new NotImplementedException(); + public void Dispose() => this.batchDependencyScope.Dispose(); } } diff --git a/src/KafkaFlow.BatchConsume/BatchConsumeMiddleware.cs b/src/KafkaFlow.BatchConsume/BatchConsumeMiddleware.cs index 4f61f6626..3c26971c8 100644 --- a/src/KafkaFlow.BatchConsume/BatchConsumeMiddleware.cs +++ b/src/KafkaFlow.BatchConsume/BatchConsumeMiddleware.cs @@ -5,6 +5,8 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; + using KafkaFlow.Configuration; + using KafkaFlow.Consumers; internal class BatchConsumeMiddleware : IMessageMiddleware, IDisposable { @@ -13,11 +15,14 @@ internal class BatchConsumeMiddleware : IMessageMiddleware, IDisposable private readonly int batchSize; private readonly TimeSpan batchTimeout; private readonly ILogHandler logHandler; + private readonly IConsumerConfiguration consumerConfiguration; private readonly List batch; private CancellationTokenSource dispatchTokenSource; + private Task dispatchTask; public BatchConsumeMiddleware( + IConsumerMiddlewareContext middlewareContext, int batchSize, TimeSpan batchTimeout, ILogHandler logHandler) @@ -26,6 +31,9 @@ public BatchConsumeMiddleware( this.batchTimeout = batchTimeout; this.logHandler = logHandler; this.batch = new(batchSize); + this.consumerConfiguration = middlewareContext.Consumer.Configuration; + + middlewareContext.Worker.WorkerStopped.Subscribe(() => this.TriggerDispatchAndWaitAsync()); } public async Task Invoke(IMessageContext context, MiddlewareDelegate next) @@ -34,56 +42,80 @@ public async Task Invoke(IMessageContext context, MiddlewareDelegate next) try { - context.ConsumerContext.ShouldStoreOffset = false; - context.ConsumerContext.WorkerStopped.ThrowIfCancellationRequested(); + context.ConsumerContext.AutoMessageCompletion = false; this.batch.Add(context); if (this.batch.Count == 1) { - this.dispatchTokenSource = CancellationTokenSource.CreateLinkedTokenSource(context.ConsumerContext.WorkerStopped); - - this.dispatchTokenSource.CancelAfter(this.batchTimeout); - - this.dispatchTokenSource.Token.Register( - async _ => - { - this.dispatchTokenSource.Dispose(); - await this.DispatchAsync(context, next); - }, - null); - } - - if (this.batch.Count >= this.batchSize) - { - this.dispatchTokenSource.Cancel(); + this.ScheduleExecution(context, next); + return; } } finally { this.dispatchSemaphore.Release(); } + + if (this.batch.Count >= this.batchSize) + { + await this.TriggerDispatchAndWaitAsync(); + } } public void Dispose() { + this.dispatchTask?.Dispose(); this.dispatchTokenSource?.Dispose(); + this.dispatchSemaphore.Dispose(); + } + + private async Task TriggerDispatchAndWaitAsync() + { + await this.dispatchSemaphore.WaitAsync(); + this.dispatchTokenSource?.Cancel(); + this.dispatchSemaphore.Release(); + + await (this.dispatchTask ?? Task.CompletedTask); + } + + private void ScheduleExecution(IMessageContext context, MiddlewareDelegate next) + { + this.dispatchTokenSource = CancellationTokenSource.CreateLinkedTokenSource(context.ConsumerContext.WorkerStopped); + + this.dispatchTask = Task + .Delay(this.batchTimeout, this.dispatchTokenSource.Token) + .ContinueWith( + _ => this.DispatchAsync(context, next), + CancellationToken.None); } private async Task DispatchAsync(IMessageContext context, MiddlewareDelegate next) { await this.dispatchSemaphore.WaitAsync(); + + this.dispatchTokenSource.Dispose(); + this.dispatchTokenSource = null; + var localBatch = this.batch.ToList(); try { + if (!localBatch.Any()) + { + return; + } + var batchContext = new BatchConsumeMessageContext(context.ConsumerContext, localBatch); await next(batchContext).ConfigureAwait(false); } catch (OperationCanceledException) when (context.ConsumerContext.WorkerStopped.IsCancellationRequested) { - return; + foreach (var messageContext in localBatch) + { + messageContext.ConsumerContext.ShouldStoreOffset = false; + } } catch (Exception ex) { @@ -101,11 +133,14 @@ private async Task DispatchAsync(IMessageContext context, MiddlewareDelegate nex { this.batch.Clear(); this.dispatchSemaphore.Release(); - } - foreach (var messageContext in localBatch) - { - messageContext.ConsumerContext.StoreOffset(); + if (this.consumerConfiguration.AutoMessageCompletion) + { + foreach (var messageContext in localBatch) + { + messageContext.ConsumerContext.Complete(context); + } + } } } } diff --git a/src/KafkaFlow.BatchConsume/KafkaFlow.BatchConsume.csproj b/src/KafkaFlow.BatchConsume/KafkaFlow.BatchConsume.csproj index cd42c7410..8a6dcb8a2 100644 --- a/src/KafkaFlow.BatchConsume/KafkaFlow.BatchConsume.csproj +++ b/src/KafkaFlow.BatchConsume/KafkaFlow.BatchConsume.csproj @@ -11,4 +11,5 @@ + diff --git a/src/KafkaFlow.Compressor.Gzip/GzipMessageCompressor.cs b/src/KafkaFlow.Compressor.Gzip/GzipMessageCompressor.cs index f49237c59..bcc46d9ae 100644 --- a/src/KafkaFlow.Compressor.Gzip/GzipMessageCompressor.cs +++ b/src/KafkaFlow.Compressor.Gzip/GzipMessageCompressor.cs @@ -1,13 +1,11 @@ namespace KafkaFlow.Compressor.Gzip { - using System; using System.IO; using System.IO.Compression; /// /// A GZIP message compressor /// - [Obsolete("Compressors should only be used in backward compatibility scenarios, in the vast majority of cases native compression (producer.WithCompression()) should be used instead")] public class GzipMessageCompressor : IMessageCompressor { /// diff --git a/src/KafkaFlow.Compressor/ConfigurationBuilderExtensions.cs b/src/KafkaFlow.Compressor/ConfigurationBuilderExtensions.cs index eb5e83f5b..1f748f112 100644 --- a/src/KafkaFlow.Compressor/ConfigurationBuilderExtensions.cs +++ b/src/KafkaFlow.Compressor/ConfigurationBuilderExtensions.cs @@ -1,6 +1,5 @@ namespace KafkaFlow.Compressor { - using System; using KafkaFlow.Configuration; /// @@ -14,7 +13,6 @@ public static class ConfigurationBuilderExtensions /// The middleware configuration builder /// The compressor type /// - [Obsolete("Compressors should only be used in backward compatibility scenarios, in the vast majority of cases native compression (producer.WithCompression()) should be used instead")] public static IConsumerMiddlewareConfigurationBuilder AddCompressor(this IConsumerMiddlewareConfigurationBuilder middlewares) where T : class, IMessageCompressor { @@ -29,7 +27,6 @@ public static IConsumerMiddlewareConfigurationBuilder AddCompressor(this ICon /// The compressor type that implements /// A factory to create the instance /// - [Obsolete("Compressors should only be used in backward compatibility scenarios, in the vast majority of cases native compression (producer.WithCompression()) should be used instead")] public static IConsumerMiddlewareConfigurationBuilder AddCompressor( this IConsumerMiddlewareConfigurationBuilder middlewares, Factory factory) @@ -45,7 +42,6 @@ public static IConsumerMiddlewareConfigurationBuilder AddCompressor( /// The middleware configuration builder /// The compressor type that implements /// - [Obsolete("Compressors should only be used in backward compatibility scenarios, in the vast majority of cases native compression (producer.WithCompression()) should be used instead")] public static IProducerMiddlewareConfigurationBuilder AddCompressor(this IProducerMiddlewareConfigurationBuilder middlewares) where T : class, IMessageCompressor { @@ -61,7 +57,6 @@ public static IProducerMiddlewareConfigurationBuilder AddCompressor(this IPro /// The compressor type that implements /// A factory to create the instance /// - [Obsolete("Compressors should only be used in backward compatibility scenarios, in the vast majority of cases native compression (producer.WithCompression()) should be used instead")] public static IProducerMiddlewareConfigurationBuilder AddCompressor( this IProducerMiddlewareConfigurationBuilder middlewares, Factory factory) diff --git a/src/KafkaFlow.Extensions.Hosting/KafkaFlow.Extensions.Hosting.csproj b/src/KafkaFlow.Extensions.Hosting/KafkaFlow.Extensions.Hosting.csproj index 57778d492..0533b40c3 100644 --- a/src/KafkaFlow.Extensions.Hosting/KafkaFlow.Extensions.Hosting.csproj +++ b/src/KafkaFlow.Extensions.Hosting/KafkaFlow.Extensions.Hosting.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/KafkaFlow.IntegrationTests/CompressionSerializationTest.cs b/src/KafkaFlow.IntegrationTests/CompressionSerializationTest.cs index 4358ebe05..02be99616 100644 --- a/src/KafkaFlow.IntegrationTests/CompressionSerializationTest.cs +++ b/src/KafkaFlow.IntegrationTests/CompressionSerializationTest.cs @@ -10,7 +10,6 @@ namespace KafkaFlow.IntegrationTests using KafkaFlow.IntegrationTests.Core.Handlers; using KafkaFlow.IntegrationTests.Core.Messages; using KafkaFlow.IntegrationTests.Core.Producers; - using KafkaFlow.Producers; [TestClass] public class CompressionSerializationTest diff --git a/src/KafkaFlow.IntegrationTests/CompressionTest.cs b/src/KafkaFlow.IntegrationTests/CompressionTest.cs index 6e4898344..86b45d4a1 100644 --- a/src/KafkaFlow.IntegrationTests/CompressionTest.cs +++ b/src/KafkaFlow.IntegrationTests/CompressionTest.cs @@ -9,7 +9,6 @@ namespace KafkaFlow.IntegrationTests using KafkaFlow.IntegrationTests.Core; using KafkaFlow.IntegrationTests.Core.Handlers; using KafkaFlow.IntegrationTests.Core.Producers; - using KafkaFlow.Producers; [TestClass] public class CompressionTest diff --git a/src/KafkaFlow.IntegrationTests/ConsumerTest.cs b/src/KafkaFlow.IntegrationTests/ConsumerTest.cs index c762ff527..be0999574 100644 --- a/src/KafkaFlow.IntegrationTests/ConsumerTest.cs +++ b/src/KafkaFlow.IntegrationTests/ConsumerTest.cs @@ -11,7 +11,6 @@ namespace KafkaFlow.IntegrationTests using KafkaFlow.IntegrationTests.Core.Handlers; using KafkaFlow.IntegrationTests.Core.Messages; using KafkaFlow.IntegrationTests.Core.Producers; - using KafkaFlow.Producers; [TestClass] public class ConsumerTest @@ -23,6 +22,8 @@ public class ConsumerTest [TestInitialize] public void Setup() { + Bootstrapper.GlobalEvents = observers => { }; + this.provider = Bootstrapper.GetServiceProvider(); MessageStorage.Clear(); } diff --git a/src/KafkaFlow.IntegrationTests/Core/Bootstrapper.cs b/src/KafkaFlow.IntegrationTests/Core/Bootstrapper.cs index 293d8c60b..158c520be 100644 --- a/src/KafkaFlow.IntegrationTests/Core/Bootstrapper.cs +++ b/src/KafkaFlow.IntegrationTests/Core/Bootstrapper.cs @@ -3,6 +3,7 @@ namespace KafkaFlow.IntegrationTests.Core using System; using System.IO; using System.Threading; + using System.Threading.Tasks; using Confluent.Kafka; using Confluent.SchemaRegistry; using Confluent.SchemaRegistry.Serdes; @@ -11,6 +12,7 @@ namespace KafkaFlow.IntegrationTests.Core using global::Microsoft.Extensions.Hosting; using KafkaFlow.Compressor; using KafkaFlow.Compressor.Gzip; + using KafkaFlow.Configuration; using KafkaFlow.IntegrationTests.Core.Handlers; using KafkaFlow.IntegrationTests.Core.Messages; using KafkaFlow.IntegrationTests.Core.Middlewares; @@ -42,9 +44,28 @@ internal static class Bootstrapper private const string ProtobufGzipTopicName = "test-protobuf-gzip"; private const string ProtobufGzipTopicName2 = "test-protobuf-gzip-2"; private const string AvroTopicName = "test-avro"; + private static Action globalEvents; private static readonly Lazy LazyProvider = new(SetupProvider); + public static Action GlobalEvents + { + get + { + if(globalEvents == null) + { + return _ => { }; + } + + return globalEvents; + } + + set + { + globalEvents = value; + } + } + public static IServiceProvider GetServiceProvider() => LazyProvider.Value; private static IServiceProvider SetupProvider() @@ -87,7 +108,7 @@ private static void SetupServices(HostBuilderContext context, IServiceCollection ConsumerConfig defaultConfig = new() { - Acks = Confluent.Kafka.Acks.All, + Acks = Acks.All, AllowAutoCreateTopics = false, AutoCommitIntervalMs = 5000, AutoOffsetReset = Confluent.Kafka.AutoOffsetReset.Latest, @@ -332,7 +353,8 @@ private static void SetupServices(HostBuilderContext context, IServiceCollection .DefaultTopic(GzipTopicName) .AddMiddlewares( middlewares => middlewares - .AddCompressor())))); + .AddCompressor()))) + .SubscribeGlobalEvents(GlobalEvents)); services.AddSingleton(); services.AddSingleton(); diff --git a/src/KafkaFlow.IntegrationTests/KafkaFlow.IntegrationTests.csproj b/src/KafkaFlow.IntegrationTests/KafkaFlow.IntegrationTests.csproj index 6435d8d04..6d3a8f87f 100644 --- a/src/KafkaFlow.IntegrationTests/KafkaFlow.IntegrationTests.csproj +++ b/src/KafkaFlow.IntegrationTests/KafkaFlow.IntegrationTests.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/src/KafkaFlow.IntegrationTests/ProducerTest.cs b/src/KafkaFlow.IntegrationTests/ProducerTest.cs index e1cce8c37..13ceb0fde 100644 --- a/src/KafkaFlow.IntegrationTests/ProducerTest.cs +++ b/src/KafkaFlow.IntegrationTests/ProducerTest.cs @@ -1,10 +1,13 @@ namespace KafkaFlow.IntegrationTests { using System; + using System.Linq; using System.Threading.Tasks; using AutoFixture; + using KafkaFlow.Consumers; using KafkaFlow.IntegrationTests.Core; using KafkaFlow.IntegrationTests.Core.Handlers; + using KafkaFlow.IntegrationTests.Core.Messages; using KafkaFlow.IntegrationTests.Core.Producers; using Microsoft.Extensions.DependencyInjection; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -16,14 +19,23 @@ public class ProducerTest private IServiceProvider provider; + private IMessageContext messageContext; + [TestInitialize] public void Setup() { + Bootstrapper.GlobalEvents = observers => + { + observers.MessageProduceStarted.Subscribe(eventContext => + { + this.messageContext = eventContext.MessageContext; + return Task.CompletedTask; + }); + }; this.provider = Bootstrapper.GetServiceProvider(); MessageStorage.Clear(); } - [TestMethod] public async Task ProduceNullKeyTest() { @@ -37,5 +49,22 @@ public async Task ProduceNullKeyTest() // Assert await MessageStorage.AssertMessageAsync(message); } + + [TestMethod] + public void SubscribeGlobalEventsTest() + { + var consumer = this.provider.GetRequiredService().All.First(); + var producer = this.provider.GetRequiredService>(); + var messages = this.fixture.CreateMany(1).ToList(); + + // Act + messages.ForEach(m => producer.Produce(m.Id.ToString(), m)); + + var x = messages.FirstOrDefault(); + + // Assert + Assert.IsNotNull(this.messageContext); + Assert.AreEqual(this.messageContext.Message.Key, messages.FirstOrDefault().Id.ToString()); + } } } diff --git a/src/KafkaFlow.LogHandler.Console/KafkaFlow.LogHandler.Console.csproj b/src/KafkaFlow.LogHandler.Console/KafkaFlow.LogHandler.Console.csproj index 900323d60..44287854f 100644 --- a/src/KafkaFlow.LogHandler.Console/KafkaFlow.LogHandler.Console.csproj +++ b/src/KafkaFlow.LogHandler.Console/KafkaFlow.LogHandler.Console.csproj @@ -6,11 +6,11 @@ - + - + diff --git a/src/KafkaFlow.LogHandler.Microsoft/KafkaFlow.LogHandler.Microsoft.csproj b/src/KafkaFlow.LogHandler.Microsoft/KafkaFlow.LogHandler.Microsoft.csproj index 45f3b48f1..a2ef2b168 100644 --- a/src/KafkaFlow.LogHandler.Microsoft/KafkaFlow.LogHandler.Microsoft.csproj +++ b/src/KafkaFlow.LogHandler.Microsoft/KafkaFlow.LogHandler.Microsoft.csproj @@ -12,8 +12,8 @@ - - + + diff --git a/src/KafkaFlow.Microsoft.DependencyInjection/KafkaFlow.Microsoft.DependencyInjection.csproj b/src/KafkaFlow.Microsoft.DependencyInjection/KafkaFlow.Microsoft.DependencyInjection.csproj index 4c74f2831..ebd8ab6a0 100644 --- a/src/KafkaFlow.Microsoft.DependencyInjection/KafkaFlow.Microsoft.DependencyInjection.csproj +++ b/src/KafkaFlow.Microsoft.DependencyInjection/KafkaFlow.Microsoft.DependencyInjection.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/KafkaFlow.SchemaRegistry/AsyncSchemaRegistryTypeNameResolverWrapper.cs b/src/KafkaFlow.SchemaRegistry/AsyncSchemaRegistryTypeNameResolverWrapper.cs deleted file mode 100644 index d91fee9fc..000000000 --- a/src/KafkaFlow.SchemaRegistry/AsyncSchemaRegistryTypeNameResolverWrapper.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace KafkaFlow -{ - using System.Threading.Tasks; - - internal class AsyncSchemaRegistryTypeNameResolverWrapper : IAsyncSchemaRegistryTypeNameResolver - { - private readonly ISchemaRegistryTypeNameResolver typeNameResolver; - - public AsyncSchemaRegistryTypeNameResolverWrapper(ISchemaRegistryTypeNameResolver typeNameResolver) => - this.typeNameResolver = typeNameResolver; - - public Task ResolveAsync(int schemaId) => Task.FromResult(this.typeNameResolver.Resolve(schemaId)); - } -} diff --git a/src/KafkaFlow.SchemaRegistry/IAsyncSchemaRegistryTypeNameResolver.cs b/src/KafkaFlow.SchemaRegistry/IAsyncSchemaRegistryTypeNameResolver.cs deleted file mode 100644 index 497964faa..000000000 --- a/src/KafkaFlow.SchemaRegistry/IAsyncSchemaRegistryTypeNameResolver.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace KafkaFlow -{ - using System.Threading.Tasks; - - /// - /// An interface to implement a type name resolver to messages serialized with schema registry serializers - /// - public interface IAsyncSchemaRegistryTypeNameResolver - { - /// - /// Resolve the message type name of a schema - /// - /// Identifier of the schema - /// - Task ResolveAsync(int schemaId); - } -} diff --git a/src/KafkaFlow.SchemaRegistry/ISchemaRegistryTypeNameResolver.cs b/src/KafkaFlow.SchemaRegistry/ISchemaRegistryTypeNameResolver.cs index 6d4773156..17cc95c82 100644 --- a/src/KafkaFlow.SchemaRegistry/ISchemaRegistryTypeNameResolver.cs +++ b/src/KafkaFlow.SchemaRegistry/ISchemaRegistryTypeNameResolver.cs @@ -1,5 +1,7 @@ namespace KafkaFlow { + using System.Threading.Tasks; + /// /// An interface to implement a type name resolver to messages serialized with schema registry serializers /// @@ -10,6 +12,6 @@ public interface ISchemaRegistryTypeNameResolver /// /// Identifier of the schema /// - string Resolve(int schemaId); + Task ResolveAsync(int schemaId); } } diff --git a/src/KafkaFlow.SchemaRegistry/SchemaRegistryTypeResolver.cs b/src/KafkaFlow.SchemaRegistry/SchemaRegistryTypeResolver.cs index 20185edc4..f0dd56cd9 100644 --- a/src/KafkaFlow.SchemaRegistry/SchemaRegistryTypeResolver.cs +++ b/src/KafkaFlow.SchemaRegistry/SchemaRegistryTypeResolver.cs @@ -10,34 +10,25 @@ namespace KafkaFlow /// /// The message type resolver to be used with schema registry serializers /// - public class SchemaRegistryTypeResolver : IAsyncMessageTypeResolver + public class SchemaRegistryTypeResolver : IMessageTypeResolver { private static readonly ConcurrentDictionary Types = new(); private static readonly SemaphoreSlim Semaphore = new(1, 1); - private readonly IAsyncSchemaRegistryTypeNameResolver typeNameResolver; + private readonly ISchemaRegistryTypeNameResolver typeNameResolver; /// /// Initializes a new instance of the class. /// /// A instance of the interface. public SchemaRegistryTypeResolver(ISchemaRegistryTypeNameResolver typeNameResolver) - : this(new AsyncSchemaRegistryTypeNameResolverWrapper(typeNameResolver)) - { - } - - /// - /// Initializes a new instance of the class. - /// - /// A instance of the interface. - public SchemaRegistryTypeResolver(IAsyncSchemaRegistryTypeNameResolver typeNameResolver) { this.typeNameResolver = typeNameResolver; } /// - public async Task OnConsumeAsync(IMessageContext context) + public async ValueTask OnConsumeAsync(IMessageContext context) { var schemaId = BinaryPrimitives.ReadInt32BigEndian( ((byte[]) context.Message.Value).AsSpan().Slice(1, 4)); @@ -70,6 +61,6 @@ public async Task OnConsumeAsync(IMessageContext context) } /// - public Task OnProduceAsync(IMessageContext context) => Task.CompletedTask; + public ValueTask OnProduceAsync(IMessageContext context) => default(ValueTask); } } diff --git a/src/KafkaFlow.Serializer.JsonCore/KafkaFlow.Serializer.JsonCore.csproj b/src/KafkaFlow.Serializer.JsonCore/KafkaFlow.Serializer.JsonCore.csproj index 35a8df07d..252b999e7 100644 --- a/src/KafkaFlow.Serializer.JsonCore/KafkaFlow.Serializer.JsonCore.csproj +++ b/src/KafkaFlow.Serializer.JsonCore/KafkaFlow.Serializer.JsonCore.csproj @@ -8,10 +8,10 @@ - + - + diff --git a/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentAvro/AssemblyInfo.cs b/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentAvro/AssemblyInfo.cs new file mode 100644 index 000000000..17459bd5a --- /dev/null +++ b/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentAvro/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("KafkaFlow.UnitTests")] diff --git a/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentAvro/ConfluentAvroTypeNameResolver.cs b/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentAvro/ConfluentAvroTypeNameResolver.cs index 8a8af39e1..c0fc1c9a2 100644 --- a/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentAvro/ConfluentAvroTypeNameResolver.cs +++ b/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentAvro/ConfluentAvroTypeNameResolver.cs @@ -1,10 +1,10 @@ -namespace KafkaFlow +namespace KafkaFlow.Serializer.SchemaRegistry { using System.Threading.Tasks; using Confluent.SchemaRegistry; using Newtonsoft.Json; - internal class ConfluentAvroTypeNameResolver : IAsyncSchemaRegistryTypeNameResolver + internal class ConfluentAvroTypeNameResolver : ISchemaRegistryTypeNameResolver { private readonly ISchemaRegistryClient client; diff --git a/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentProtobuf/AssemblyInfo.cs b/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentProtobuf/AssemblyInfo.cs new file mode 100644 index 000000000..17459bd5a --- /dev/null +++ b/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentProtobuf/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("KafkaFlow.UnitTests")] diff --git a/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentProtobuf/ConfluentProtobufTypeNameResolver.cs b/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentProtobuf/ConfluentProtobufTypeNameResolver.cs index f57f8fca7..8ae17ee63 100644 --- a/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentProtobuf/ConfluentProtobufTypeNameResolver.cs +++ b/src/KafkaFlow.Serializer.SchemaRegistry.ConfluentProtobuf/ConfluentProtobufTypeNameResolver.cs @@ -6,7 +6,7 @@ namespace KafkaFlow using Google.Protobuf; using Google.Protobuf.Reflection; - internal class ConfluentProtobufTypeNameResolver : IAsyncSchemaRegistryTypeNameResolver + internal class ConfluentProtobufTypeNameResolver : ISchemaRegistryTypeNameResolver { private readonly ISchemaRegistryClient client; diff --git a/src/KafkaFlow.Serializer/AsyncMessageTypeResolverWrapper.cs b/src/KafkaFlow.Serializer/AsyncMessageTypeResolverWrapper.cs deleted file mode 100644 index fac02e462..000000000 --- a/src/KafkaFlow.Serializer/AsyncMessageTypeResolverWrapper.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace KafkaFlow -{ - using System; - using System.Threading.Tasks; - - internal class AsyncMessageTypeResolverWrapper : IAsyncMessageTypeResolver - { - private readonly IMessageTypeResolver typeResolver; - - public AsyncMessageTypeResolverWrapper(IMessageTypeResolver typeResolver) => this.typeResolver = typeResolver; - - public Task OnConsumeAsync(IMessageContext context) => - Task.FromResult(this.typeResolver.OnConsume(context)); - - public Task OnProduceAsync(IMessageContext context) - { - this.typeResolver.OnProduce(context); - return Task.CompletedTask; - } - } -} diff --git a/src/KafkaFlow.Serializer/DefaultTypeResolver.cs b/src/KafkaFlow.Serializer/DefaultTypeResolver.cs index 31cba1dff..6613db2c9 100644 --- a/src/KafkaFlow.Serializer/DefaultTypeResolver.cs +++ b/src/KafkaFlow.Serializer/DefaultTypeResolver.cs @@ -1,25 +1,26 @@ namespace KafkaFlow { using System; + using System.Threading.Tasks; internal class DefaultTypeResolver : IMessageTypeResolver { private const string MessageType = "Message-Type"; - public Type OnConsume(IMessageContext context) + public ValueTask OnConsumeAsync(IMessageContext context) { var typeName = context.Headers.GetString(MessageType); return typeName is null ? - null : - Type.GetType(typeName); + new ValueTask((Type) null) : + new ValueTask(Type.GetType(typeName)); } - public void OnProduce(IMessageContext context) + public ValueTask OnProduceAsync(IMessageContext context) { if (context.Message.Value is null) { - return; + return default(ValueTask); } var messageType = context.Message.Value.GetType(); @@ -27,6 +28,8 @@ public void OnProduce(IMessageContext context) context.Headers.SetString( MessageType, $"{messageType.FullName}, {messageType.Assembly.GetName().Name}"); + + return default(ValueTask); } } } diff --git a/src/KafkaFlow.Serializer/IAsyncMessageTypeResolver.cs b/src/KafkaFlow.Serializer/IAsyncMessageTypeResolver.cs deleted file mode 100644 index ffe4626bd..000000000 --- a/src/KafkaFlow.Serializer/IAsyncMessageTypeResolver.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace KafkaFlow -{ - using System; - using System.Threading.Tasks; - - /// - /// Used by the serializer middleware to resolve the type when consuming and store it when producing - /// - public interface IAsyncMessageTypeResolver - { - /// - /// Returns the message type when consuming - /// - /// The containing the message and the metadata - /// - Task OnConsumeAsync(IMessageContext context); - - /// - /// Stores the message type somewhere when producing - /// - /// The containing the message and the metadata - Task OnProduceAsync(IMessageContext context); - } -} diff --git a/src/KafkaFlow.Serializer/IMessageTypeResolver.cs b/src/KafkaFlow.Serializer/IMessageTypeResolver.cs index 5d6d87551..a7b9190d8 100644 --- a/src/KafkaFlow.Serializer/IMessageTypeResolver.cs +++ b/src/KafkaFlow.Serializer/IMessageTypeResolver.cs @@ -1,6 +1,7 @@ namespace KafkaFlow { using System; + using System.Threading.Tasks; /// /// Used by the serializer middleware to resolve the type when consuming and store it when producing @@ -12,12 +13,12 @@ public interface IMessageTypeResolver /// /// The containing the message and the metadata /// - Type OnConsume(IMessageContext context); + ValueTask OnConsumeAsync(IMessageContext context); /// /// Stores the message type somewhere when producing /// /// The containing the message and the metadata - void OnProduce(IMessageContext context); + ValueTask OnProduceAsync(IMessageContext context); } } diff --git a/src/KafkaFlow.Serializer/KafkaFlow.Serializer.csproj b/src/KafkaFlow.Serializer/KafkaFlow.Serializer.csproj index d0e384d2f..2a0a1c219 100644 --- a/src/KafkaFlow.Serializer/KafkaFlow.Serializer.csproj +++ b/src/KafkaFlow.Serializer/KafkaFlow.Serializer.csproj @@ -13,6 +13,7 @@ + diff --git a/src/KafkaFlow.Serializer/SerializerConsumerMiddleware.cs b/src/KafkaFlow.Serializer/SerializerConsumerMiddleware.cs index e2bc353b1..a00a81d6b 100644 --- a/src/KafkaFlow.Serializer/SerializerConsumerMiddleware.cs +++ b/src/KafkaFlow.Serializer/SerializerConsumerMiddleware.cs @@ -10,8 +10,7 @@ public class SerializerConsumerMiddleware : IMessageMiddleware { private readonly ISerializer serializer; - - private readonly IAsyncMessageTypeResolver typeResolver; + private readonly IMessageTypeResolver typeResolver; /// /// Initializes a new instance of the class. @@ -21,18 +20,6 @@ public class SerializerConsumerMiddleware : IMessageMiddleware public SerializerConsumerMiddleware( ISerializer serializer, IMessageTypeResolver typeResolver) - : this(serializer, new AsyncMessageTypeResolverWrapper(typeResolver)) - { - } - - /// - /// Initializes a new instance of the class. - /// - /// Instance of - /// Instance of - public SerializerConsumerMiddleware( - ISerializer serializer, - IAsyncMessageTypeResolver typeResolver) { this.serializer = serializer; this.typeResolver = typeResolver; diff --git a/src/KafkaFlow.Serializer/SerializerProducerMiddleware.cs b/src/KafkaFlow.Serializer/SerializerProducerMiddleware.cs index b7c0da7c8..2adf0f443 100644 --- a/src/KafkaFlow.Serializer/SerializerProducerMiddleware.cs +++ b/src/KafkaFlow.Serializer/SerializerProducerMiddleware.cs @@ -12,7 +12,7 @@ public class SerializerProducerMiddleware : IMessageMiddleware private readonly ISerializer serializer; - private readonly IAsyncMessageTypeResolver typeResolver; + private readonly IMessageTypeResolver typeResolver; /// /// Initializes a new instance of the class. @@ -22,18 +22,6 @@ public class SerializerProducerMiddleware : IMessageMiddleware public SerializerProducerMiddleware( ISerializer serializer, IMessageTypeResolver typeResolver) - : this(serializer, new AsyncMessageTypeResolverWrapper(typeResolver)) - { - } - - /// - /// Initializes a new instance of the class. - /// - /// Instance of - /// Instance of - public SerializerProducerMiddleware( - ISerializer serializer, - IAsyncMessageTypeResolver typeResolver) { this.serializer = serializer; this.typeResolver = typeResolver; diff --git a/src/KafkaFlow.Serializer/SingleMessageTypeResolver.cs b/src/KafkaFlow.Serializer/SingleMessageTypeResolver.cs index b1d22d054..ee4cbc35c 100644 --- a/src/KafkaFlow.Serializer/SingleMessageTypeResolver.cs +++ b/src/KafkaFlow.Serializer/SingleMessageTypeResolver.cs @@ -1,6 +1,7 @@ namespace KafkaFlow { using System; + using System.Threading.Tasks; /// /// The message type resolver to be used when all messages are the same type @@ -19,12 +20,13 @@ public SingleMessageTypeResolver(Type messageType) } /// - public Type OnConsume(IMessageContext context) => this.messageType; + public ValueTask OnConsumeAsync(IMessageContext context) => new ValueTask(this.messageType); /// - public void OnProduce(IMessageContext context) + public ValueTask OnProduceAsync(IMessageContext context) { // Do nothing + return default(ValueTask); } } } diff --git a/src/KafkaFlow.TypedHandler/ConfigurationBuilderExtensions.cs b/src/KafkaFlow.TypedHandler/ConfigurationBuilderExtensions.cs index de119b733..9befd1a92 100644 --- a/src/KafkaFlow.TypedHandler/ConfigurationBuilderExtensions.cs +++ b/src/KafkaFlow.TypedHandler/ConfigurationBuilderExtensions.cs @@ -26,7 +26,7 @@ public static IConsumerMiddlewareConfigurationBuilder AddTypedHandlers( builder.Add( resolver => new TypedHandlerMiddleware(resolver, configuration), - MiddlewareLifetime.Scoped); + MiddlewareLifetime.Message); return builder; } diff --git a/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/ConsumersControllerTests.cs b/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/ConsumersControllerTests.cs new file mode 100644 index 000000000..25d018991 --- /dev/null +++ b/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/ConsumersControllerTests.cs @@ -0,0 +1,506 @@ +namespace KafkaFlow.UnitTests.Admin.WebApi.Controllers +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + using AutoFixture; + using FluentAssertions; + using KafkaFlow.Admin; + using KafkaFlow.Admin.WebApi.Contracts; + using KafkaFlow.Admin.WebApi.Controllers; + using KafkaFlow.Consumers; + using Microsoft.AspNetCore.Mvc; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; + + [TestClass] + public class ConsumersControllerTests + { + private readonly Fixture fixture = new(); + private ConsumersController target; + private Mock mockConsumerAccessor; + private Mock mockConsumerAdmin; + + [TestInitialize] + public void TestSetup() + { + this.mockConsumerAccessor = this.fixture.Freeze>(); + this.mockConsumerAdmin = this.fixture.Freeze>(); + this.target = new ConsumersController(this.mockConsumerAccessor.Object, this.mockConsumerAdmin.Object); + } + + [TestMethod] + public void GetConsumersByGroupId_ValidGroupId_ReturnsOkResultWithConsumersResponse() + { + // Arrange + var groupId = "group1"; + + var consumers = new List + { + Mock.Of(c => c.GroupId == "group1" && c.ConsumerName == "consumer1"), + Mock.Of(c => c.GroupId == "group1" && c.ConsumerName == "consumer2"), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = this.target.GetConsumersByGroupId(groupId) as ObjectResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(200); + + var response = result.Value.Should().BeOfType().Subject; + response.Consumers.Should().HaveCount(2); + response.Consumers.Select(c => c.ConsumerName).Should().Contain(new[] { "consumer1", "consumer2" }); + } + + [TestMethod] + public void GetConsumerByGroupIdName_ValidGroupIdAndExistingConsumer_ReturnsOkResultWithConsumerResponse() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + Mock.Of(c => c.GroupId == "group1" && c.ConsumerName == "consumer2"), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers.AsQueryable()); + + // Act + var result = this.target.GetConsumerByGroupIdName(groupId, consumerName) as ObjectResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(200); + + var response = result.Value.Should().BeOfType().Subject; + response.GroupId.Should().Be(groupId); + response.ConsumerName.Should().Be(consumerName); + } + + [TestMethod] + public void GetConsumerByGroupIdName_ValidGroupIdAndNonExistingConsumer_ReturnsNotFoundResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "nonExistingConsumer"; + + // Act + var result = this.target.GetConsumerByGroupIdName(groupId, consumerName) as NotFoundResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(404); + } + + [TestMethod] + public async Task PauseConsumer_ValidGroupIdAndExistingConsumer_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + var topics = new List { "topic1", "topic2" }; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.PauseConsumer(groupId, consumerName, topics) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.PauseConsumerAsync(consumerName, topics), Times.Once); + } + + [TestMethod] + public async Task PauseConsumer_ValidGroupIdAndNonExistingConsumer_ReturnsNotFoundResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + var topics = new List { "topic1", "topic2" }; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == "consumer2"), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.PauseConsumer(groupId, consumerName, topics) as NotFoundResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(404); + } + + [TestMethod] + public async Task ResumeConsumer_ValidGroupIdAndNonExistingConsumer_ReturnsNotFoundResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "nonExistingConsumer"; + var topics = new List { "topic1", "topic2" }; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == "existingConsumer"), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.ResumeConsumer(groupId, consumerName, topics) as NotFoundResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(404); + + this.mockConsumerAdmin.Verify(x => x.ResumeConsumerAsync(consumerName, topics), Times.Never); + } + + [TestMethod] + public async Task StartConsumer_ValidGroupIdAndExistingConsumer_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.StartConsumer(groupId, consumerName) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.StartConsumerAsync(consumerName), Times.Once); + } + + [TestMethod] + public async Task StartConsumer_ValidGroupIdAndNonExistingConsumer_ReturnsNotFoundResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "nonExistingConsumer"; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == "consumer1"), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.StartConsumer(groupId, consumerName) as NotFoundResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(404); + + this.mockConsumerAdmin.Verify(x => x.StartConsumerAsync(consumerName), Times.Never); + } + + [TestMethod] + public async Task StopConsumer_ValidGroupIdAndExistingConsumer_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.StopConsumer(groupId, consumerName) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.StopConsumerAsync(consumerName), Times.Once); + } + + [TestMethod] + public async Task StopConsumer_ValidGroupIdAndNonExistingConsumer_ReturnsNotFoundResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "nonExistingConsumer"; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == "consumer1"), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.StopConsumer(groupId, consumerName) as NotFoundResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(404); + + this.mockConsumerAdmin.Verify(x => x.StopConsumerAsync(consumerName), Times.Never); + } + + [TestMethod] + public async Task RestartConsumer_ValidGroupIdAndExistingConsumer_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.RestartConsumer(groupId, consumerName) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.RestartConsumerAsync(consumerName), Times.Once); + } + + [TestMethod] + public async Task RestartConsumer_ValidGroupIdAndNonExistingConsumer_ReturnsNotFoundResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "nonExistingConsumer"; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == "consumer1"), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.RestartConsumer(groupId, consumerName) as NotFoundResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(404); + + this.mockConsumerAdmin.Verify(x => x.StopConsumerAsync(consumerName), Times.Never); + } + + [TestMethod] + public async Task ResetOffsets_ValidRequest_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + var topics = new List { "topic1", "topic2" }; + var request = new ResetOffsetsRequest { Confirm = true }; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.ResetOffsets(groupId, consumerName, topics, request) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.ResetOffsetsAsync(consumerName, topics), Times.Once); + } + + [TestMethod] + public async Task ResetOffsets_InvalidConfirmValue_ReturnsBadRequestResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + var topics = new List { "topic1", "topic2" }; + var request = new ResetOffsetsRequest { Confirm = false }; // Invalid Confirm value + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.ResetOffsets(groupId, consumerName, topics, request) as BadRequestResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(400); + + this.mockConsumerAdmin.Verify(x => x.ResetOffsetsAsync(consumerName, topics), Times.Never); + } + + [TestMethod] + public async Task RewindOffsets_ValidGroupIdAndNonExistingConsumer_ReturnsNotFoundResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "nonExistingConsumer"; + var topics = new List { "topic1", "topic2" }; + var request = new RewindOffsetsToDateRequest { Date = this.fixture.Create() }; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == "consumer1"), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.RewindOffsets(groupId, consumerName, topics, request) as NotFoundResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(404); + + this.mockConsumerAdmin.Verify(x => x.RewindOffsetsAsync(consumerName, request.Date, topics), Times.Never); + } + + [TestMethod] + public async Task RewindOffsets_ValidRequest_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + var topics = new List { "topic1", "topic2" }; + var request = new RewindOffsetsToDateRequest { Date = this.fixture.Create() }; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.RewindOffsets(groupId, consumerName, topics, request) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.RewindOffsetsAsync(consumerName, request.Date, topics), Times.Once); + } + + [TestMethod] + public async Task RewindOffsets_InvalidRequest_ReturnsBadRequestResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + var topics = new List { "topic1", "topic2" }; + RewindOffsetsToDateRequest request = null; + + // Act + var result = await this.target.RewindOffsets(groupId, consumerName, topics, request) as BadRequestResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(400); + + this.mockConsumerAdmin.Verify(x => x.RewindOffsetsAsync(consumerName, It.IsAny(), topics), Times.Never); + } + + [TestMethod] + public async Task ChangeWorkersCount_ValidRequest_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + var topics = new List { "topic1", "topic2" }; + var request = new RewindOffsetsToDateRequest { Date = this.fixture.Create() }; + + var consumers = new List + { + Mock.Of(c => c.GroupId == groupId && c.ConsumerName == consumerName), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = await this.target.RewindOffsets(groupId, consumerName, topics, request) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.RewindOffsetsAsync(consumerName, request.Date, topics), Times.Once); + } + + [TestMethod] + public async Task ChangeWorkersCount_NullRequest_ReturnsBadRequestResult() + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + ChangeWorkersCountRequest request = null; + + // Act + var result = await this.target.ChangeWorkersCount(groupId, consumerName, request) as BadRequestResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(400); + + this.mockConsumerAdmin.Verify(x => x.ChangeWorkersCountAsync(consumerName, It.IsAny()), Times.Never); + } + + [DataRow(0)] + [DataRow(-5)] + [DataRow(-100)] + [TestMethod] + public async Task ChangeWorkersCount_InvalidWorkerCount_ReturnsBadRequestResult(int workerCount) + { + // Arrange + var groupId = "group1"; + var consumerName = "consumer1"; + ChangeWorkersCountRequest request = new ChangeWorkersCountRequest { WorkersCount = workerCount }; + + // Act + var result = await this.target.ChangeWorkersCount(groupId, consumerName, request) as BadRequestResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(400); + + this.mockConsumerAdmin.Verify(x => x.ChangeWorkersCountAsync(consumerName, It.IsAny()), Times.Never); + } + } +} diff --git a/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/GroupsControllerTests.cs b/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/GroupsControllerTests.cs new file mode 100644 index 000000000..91bbcdf18 --- /dev/null +++ b/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/GroupsControllerTests.cs @@ -0,0 +1,91 @@ +namespace KafkaFlow.UnitTests.Admin.WebApi.Controllers +{ + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + using AutoFixture; + using FluentAssertions; + using KafkaFlow.Admin; + using KafkaFlow.Admin.WebApi.Contracts; + using KafkaFlow.Admin.WebApi.Controllers; + using KafkaFlow.Consumers; + using Microsoft.AspNetCore.Mvc; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; + + [TestClass] + public class GroupsControllerTests + { + private readonly Fixture fixture = new(); + private GroupsController target; + private Mock mockConsumerAccessor; + private Mock mockConsumerAdmin; + + [TestInitialize] + public void TestSetup() + { + this.mockConsumerAccessor = this.fixture.Freeze>(); + this.mockConsumerAdmin = this.fixture.Freeze>(); + this.target = new GroupsController(this.mockConsumerAccessor.Object, this.mockConsumerAdmin.Object); + } + + [TestMethod] + public void GetAllGroups_ReturnsOkResultWithGroupsResponse() + { + // Arrange + var consumers = new List + { + Mock.Of(), + Mock.Of(), + Mock.Of(), + }; + + this.mockConsumerAccessor.Setup(x => x.All).Returns(consumers); + + // Act + var result = this.target.GetAllGroups() as ObjectResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(200); + + var response = result.Value.Should().BeOfType().Subject; + response.Groups.Should().HaveCount(1); + response.Groups.First().Consumers.Should().HaveCount(3); + } + + [TestMethod] + public async Task PauseGroup_ValidGroupId_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var topics = new List { "topic1", "topic2" }; + + // Act + var result = await this.target.PauseGroup(groupId, topics) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.PauseConsumerGroupAsync(groupId, topics), Times.Once); + } + + [TestMethod] + public async Task ResumeGroup_ValidGroupId_ReturnsAcceptedResult() + { + // Arrange + var groupId = "group1"; + var topics = new List { "topic1", "topic2" }; + + // Act + var result = await this.target.ResumeGroup(groupId, topics) as AcceptedResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(202); + + this.mockConsumerAdmin.Verify(x => x.ResumeConsumerGroupAsync(groupId, topics), Times.Once); + } + } +} diff --git a/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/TelemetryControllerTests.cs b/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/TelemetryControllerTests.cs new file mode 100644 index 000000000..0a9d2bd0c --- /dev/null +++ b/src/KafkaFlow.UnitTests/Admin.WebApi/Controllers/TelemetryControllerTests.cs @@ -0,0 +1,130 @@ +namespace KafkaFlow.UnitTests.Admin.WebApi.Controllers +{ + using System; + using System.Collections.Generic; + using System.Linq; + using FluentAssertions; + using KafkaFlow.Admin; + using KafkaFlow.Admin.Messages; + using KafkaFlow.Admin.WebApi.Contracts; + using KafkaFlow.Admin.WebApi.Controllers; + using KafkaFlow.Consumers; + using Microsoft.AspNetCore.Mvc; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; + + [TestClass] + public class TelemetryControllerTests + { + private Mock mockTelemetryStorage; + private TelemetryController target; + + [TestInitialize] + public void TestInitialize() + { + this.mockTelemetryStorage = new Mock(); + this.target = new TelemetryController(this.mockTelemetryStorage.Object); + } + + [TestMethod] + public void GetTelemetry_ReturnsOkResultWithTelemetryResponse() + { + // Arrange + var metrics = new List + { + new ConsumerTelemetryMetric + { + GroupId = "group1", + ConsumerName = "consumer1", + WorkersCount = 5, + SentAt = new DateTime(2023, 7, 28, 8, 20, 30), + Topic = "topic1", + Status = ConsumerStatus.Running, + PausedPartitions = new[] { 0 }, + RunningPartitions = new[] { 10 }, + Lag = 20, + InstanceName = "instanceName1", + }, + new ConsumerTelemetryMetric + { + GroupId = "group1", + ConsumerName = "consumer1", + WorkersCount = 5, + SentAt = new DateTime(2023, 7, 29, 1, 20, 30), + Topic = "topic2", + Status = ConsumerStatus.Paused, + PausedPartitions = new[] { 5 }, + RunningPartitions = new[] { 0 }, + Lag = 0, + InstanceName = "instanceName2", + }, + new ConsumerTelemetryMetric + { + GroupId = "group1", + ConsumerName = "consumer2", + WorkersCount = 3, + SentAt = new DateTime(2023, 6, 2, 10, 20, 30), + Topic = "topic3", + Status = ConsumerStatus.Stopped, + PausedPartitions = new[] { 5 }, + RunningPartitions = new[] { 0 }, + Lag = 15, + InstanceName = "instanceName3", + }, + }; + + this.mockTelemetryStorage.Setup(x => x.Get()).Returns(metrics); + + // Act + var result = this.target.GetTelemetry() as ObjectResult; + + // Assert + result.Should().NotBeNull(); + result.StatusCode.Should().Be(200); + + var response = result.Value.Should().BeOfType().Subject; + response.Groups.Should().HaveCount(1); + + var group = response.Groups.ElementAt(0); + group.GroupId.Should().Be("group1"); + group.Consumers.Should().HaveCount(2); + + var consumer1 = group.Consumers.ElementAt(0); + consumer1.Name.Should().Be("consumer1"); + consumer1.WorkersCount.Should().Be(5); + consumer1.Assignments.Should().HaveCount(2); + + var assignment1 = consumer1.Assignments.ElementAt(0); + assignment1.InstanceName.Should().NotBeNullOrEmpty(); + assignment1.TopicName.Should().Be("topic1"); + assignment1.Status.Should().Be("Running"); + assignment1.LastUpdate.Should().BeCloseTo(new DateTime(2023, 7, 28, 8, 20, 30), TimeSpan.FromSeconds(1)); + assignment1.PausedPartitions.Should().BeEquivalentTo(new[] { 0 }); + assignment1.RunningPartitions.Should().BeEquivalentTo(new[] { 10 }); + assignment1.Lag.Should().Be(20); + + var assignment2 = consumer1.Assignments.ElementAt(1); + assignment2.InstanceName.Should().NotBeNullOrEmpty(); + assignment2.TopicName.Should().Be("topic2"); + assignment2.Status.Should().Be("Paused"); + assignment2.LastUpdate.Should().BeCloseTo(new DateTime(2023, 7, 29, 1, 20, 30), TimeSpan.FromSeconds(1)); + assignment2.PausedPartitions.Should().BeEquivalentTo(new[] { 5 }); + assignment2.RunningPartitions.Should().BeEquivalentTo(new[] { 0 }); + assignment2.Lag.Should().Be(0); + + var consumer2 = group.Consumers.ElementAt(1); + consumer2.Name.Should().Be("consumer2"); + consumer2.WorkersCount.Should().Be(3); + consumer2.Assignments.Should().HaveCount(1); + + var assignment3 = consumer2.Assignments.ElementAt(0); + assignment3.InstanceName.Should().NotBeNullOrEmpty(); + assignment3.TopicName.Should().Be("topic3"); + assignment3.Status.Should().Be("Stopped"); + assignment3.LastUpdate.Should().BeCloseTo(new DateTime(2023, 6, 2, 10, 20, 30), TimeSpan.FromSeconds(1)); + assignment3.PausedPartitions.Should().BeEquivalentTo(new[] { 5 }); + assignment3.RunningPartitions.Should().BeEquivalentTo(new[] { 0 }); + assignment3.Lag.Should().Be(15); + } + } +} diff --git a/src/KafkaFlow.UnitTests/BatchConsume/BatchConsumeMiddlewareTests.cs b/src/KafkaFlow.UnitTests/BatchConsume/BatchConsumeMiddlewareTests.cs index 5e75f3c4d..e1583c5eb 100644 --- a/src/KafkaFlow.UnitTests/BatchConsume/BatchConsumeMiddlewareTests.cs +++ b/src/KafkaFlow.UnitTests/BatchConsume/BatchConsumeMiddlewareTests.cs @@ -4,6 +4,8 @@ namespace KafkaFlow.UnitTests.BatchConsume using System.Threading.Tasks; using FluentAssertions; using KafkaFlow.BatchConsume; + using KafkaFlow.Configuration; + using KafkaFlow.Consumers; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -30,7 +32,33 @@ public void Setup() this.logHandlerMock = new Mock(); + var middlewareContextMock = new Mock(); + var workerMock = new Mock(); + var consumerMock = new Mock(); + var consumerConfigurationMock = new Mock(); + + middlewareContextMock + .SetupGet(x => x.Worker) + .Returns(workerMock.Object); + + middlewareContextMock + .SetupGet(x => x.Consumer) + .Returns(consumerMock.Object); + + consumerMock + .SetupGet(x => x.Configuration) + .Returns(consumerConfigurationMock.Object); + + workerMock + .SetupGet(x => x.WorkerStopped) + .Returns(new Event(this.logHandlerMock.Object)); + + consumerConfigurationMock + .SetupGet(x => x.AutoMessageCompletion) + .Returns(true); + this.target = new BatchConsumeMiddleware( + middlewareContextMock.Object, BatchSize, this.batchTimeout, this.logHandlerMock.Object); @@ -43,6 +71,10 @@ public async Task AddAsync_LessThanBatchSize_CallNextOnTimeout() var consumerContext = new Mock(); var context = new Mock(); + consumerContext + .SetupGet(x => x.WorkerDependencyResolver) + .Returns(Mock.Of()); + context .Setup(x => x.ConsumerContext) .Returns(consumerContext.Object); @@ -54,7 +86,7 @@ public async Task AddAsync_LessThanBatchSize_CallNextOnTimeout() this.timesNextWasCalled.Should().Be(0); await this.WaitBatchTimeoutAsync(); this.timesNextWasCalled.Should().Be(1); - consumerContext.Verify(x => x.StoreOffset(), Times.Once); + consumerContext.Verify(x => x.Complete(context.Object), Times.Once); } [TestMethod] @@ -64,6 +96,10 @@ public async Task AddAsync_ExactlyBatchSize_CallNextInstantly() var consumerContext = new Mock(); var contextMock = new Mock(); + consumerContext + .SetupGet(x => x.WorkerDependencyResolver) + .Returns(Mock.Of()); + contextMock .Setup(x => x.ConsumerContext) .Returns(consumerContext.Object); @@ -79,7 +115,7 @@ public async Task AddAsync_ExactlyBatchSize_CallNextInstantly() // Assert this.timesNextWasCalled.Should().Be(1); this.nextContext.GetMessagesBatch().Should().HaveCount(BatchSize); - consumerContext.Verify(x => x.StoreOffset(), Times.Exactly(BatchSize)); + consumerContext.Verify(x => x.Complete(contextMock.Object), Times.Exactly(BatchSize)); } [TestMethod] @@ -89,6 +125,10 @@ public async Task AddAsync_MoreThanBatchSize_CallNextInstantlyThenCallWhenTimeou var consumerContext = new Mock(); var contextMock = new Mock(); + consumerContext + .SetupGet(x => x.WorkerDependencyResolver) + .Returns(Mock.Of()); + contextMock .Setup(x => x.ConsumerContext) .Returns(consumerContext.Object); @@ -104,11 +144,11 @@ public async Task AddAsync_MoreThanBatchSize_CallNextInstantlyThenCallWhenTimeou // Assert this.timesNextWasCalled.Should().Be(1); this.nextContext.GetMessagesBatch().Should().HaveCount(BatchSize); - consumerContext.Verify(x => x.StoreOffset(), Times.Exactly(BatchSize)); + consumerContext.Verify(x => x.Complete(contextMock.Object), Times.Exactly(BatchSize)); await this.WaitBatchTimeoutAsync(); this.timesNextWasCalled.Should().Be(2); - consumerContext.Verify(x => x.StoreOffset(), Times.Exactly(BatchSize + 1)); + consumerContext.Verify(x => x.Complete(contextMock.Object), Times.Exactly(BatchSize + 1)); } [TestMethod] diff --git a/src/KafkaFlow.UnitTests/ConfigurationBuilders/ConsumerConfigurationBuilderTests.cs b/src/KafkaFlow.UnitTests/ConfigurationBuilders/ConsumerConfigurationBuilderTests.cs index cd15608ae..88efc9d1f 100644 --- a/src/KafkaFlow.UnitTests/ConfigurationBuilders/ConsumerConfigurationBuilderTests.cs +++ b/src/KafkaFlow.UnitTests/ConfigurationBuilders/ConsumerConfigurationBuilderTests.cs @@ -56,12 +56,12 @@ public void Build_RequiredCalls_ReturnDefaultValues() // Assert configuration.Topics.Should().BeEquivalentTo(topic1); configuration.BufferSize.Should().Be(bufferSize); - configuration.WorkersCount.Should().Be(workers); + configuration.WorkersCountCalculator(null, null).Result.Should().Be(workers); configuration.GroupId.Should().Be(groupId); configuration.GetKafkaConfig().AutoOffsetReset.Should().BeNull(); configuration.GetKafkaConfig().EnableAutoOffsetStore.Should().Be(false); configuration.GetKafkaConfig().EnableAutoCommit.Should().Be(false); - configuration.AutoStoreOffsets.Should().Be(true); + configuration.AutoMessageCompletion.Should().Be(true); configuration.AutoCommitInterval.Should().Be(TimeSpan.FromSeconds(5)); configuration.StatisticsHandlers.Should().BeEmpty(); configuration.PartitionsAssignedHandlers.Should().BeEmpty(); @@ -101,7 +101,7 @@ public void Build_AllCalls_ReturnPassedValues() .WithWorkersCount(workers) .WithGroupId(groupId) .WithAutoOffsetReset(offsetReset) - .WithManualStoreOffsets() + .WithManualMessageCompletion() .WithAutoCommitIntervalMs(autoCommitInterval) .WithMaxPollIntervalMs(maxPollIntervalMs) .WithConsumerConfig(consumerConfig) @@ -119,10 +119,10 @@ public void Build_AllCalls_ReturnPassedValues() configuration.Topics.Should().BeEquivalentTo(topic1, topic2); configuration.ConsumerName.Should().Be(name); configuration.BufferSize.Should().Be(bufferSize); - configuration.WorkersCount.Should().Be(workers); + configuration.WorkersCountCalculator(null, null).Result.Should().Be(workers); configuration.GroupId.Should().Be(groupId); configuration.GetKafkaConfig().AutoOffsetReset.Should().Be(offsetReset); - configuration.AutoStoreOffsets.Should().Be(false); + configuration.AutoMessageCompletion.Should().Be(false); configuration.GetKafkaConfig().EnableAutoOffsetStore.Should().Be(false); configuration.GetKafkaConfig().EnableAutoCommit.Should().Be(false); configuration.AutoCommitInterval.Should().Be(TimeSpan.FromMilliseconds(autoCommitInterval)); diff --git a/src/KafkaFlow.UnitTests/Consumer/ConsumerManagerTests.cs b/src/KafkaFlow.UnitTests/Consumer/ConsumerManagerTests.cs index cbad60c34..d8492f775 100644 --- a/src/KafkaFlow.UnitTests/Consumer/ConsumerManagerTests.cs +++ b/src/KafkaFlow.UnitTests/Consumer/ConsumerManagerTests.cs @@ -30,24 +30,46 @@ public class ConsumerManagerTests [TestInitialize] public void Setup() { - this.consumerMock = new Mock(MockBehavior.Strict); - this.workerPoolMock = new Mock(MockBehavior.Strict); - this.feederMock = new Mock(MockBehavior.Strict); - this.logHandlerMock = new Mock(MockBehavior.Strict); + this.consumerMock = new Mock(); + this.workerPoolMock = new Mock(); + this.feederMock = new Mock(); + this.logHandlerMock = new Mock(); this.dependencyResolver = new Mock(); this.consumerMock - .Setup(x => x.OnPartitionsAssigned(It.IsAny, List>>())) - .Callback((Action, List> value) => this.onPartitionAssignedHandler = value); + .Setup( + x => x.OnPartitionsAssigned(It.IsAny, List>>())) + .Callback( + (Action, List> value) => + this.onPartitionAssignedHandler = value); this.consumerMock - .Setup(x => x.OnPartitionsRevoked(It.IsAny, List>>())) - .Callback((Action, List> value) => this.onPartitionRevokedHandler = value); + .Setup( + x => x.OnPartitionsRevoked( + It.IsAny, List>>())) + .Callback( + (Action, List> value) => + this.onPartitionRevokedHandler = value); + + var configurationMock = new Mock(); + + configurationMock + .SetupGet(x => x.WorkersCountCalculator) + .Returns((_, _) => Task.FromResult(10)); + + configurationMock + .SetupGet(x => x.WorkersCountEvaluationInterval) + .Returns(TimeSpan.FromMinutes(5)); + + this.consumerMock + .SetupGet(x => x.Configuration) + .Returns(configurationMock.Object); this.target = new ConsumerManager( this.consumerMock.Object, this.workerPoolMock.Object, this.feederMock.Object, + this.dependencyResolver.Object, this.logHandlerMock.Object); } @@ -58,8 +80,6 @@ public void ConstructorCalled_InitializeProperties() this.target.Consumer.Should().Be(this.consumerMock.Object); this.target.WorkerPool.Should().Be(this.workerPoolMock.Object); this.target.Feeder.Should().Be(this.feederMock.Object); - - this.consumerMock.VerifyAll(); } [TestMethod] @@ -88,38 +108,30 @@ public async Task StopAsync_StopDependencies() .Setup(x => x.StopAsync()) .Returns(Task.CompletedTask); - this.consumerMock - .Setup(x => x.Dispose()); - // Act await this.target.StopAsync(); // Assert this.feederMock.VerifyAll(); this.workerPoolMock.VerifyAll(); - this.consumerMock.VerifyAll(); + this.consumerMock.Verify(x => x.Dispose(), Times.Once()); } [TestMethod] public void OnPartitionsAssigned_StartWorkerPool() { // Arrange - IConsumer consumer = null; var partitions = this.fixture.Create>(); this.workerPoolMock - .Setup(x => x.StartAsync(partitions)) + .Setup(x => x.StartAsync(partitions, It.IsAny())) .Returns(Task.CompletedTask); - this.consumerMock - .SetupGet(x => x.Configuration) - .Returns(new Mock().Object); - this.logHandlerMock .Setup(x => x.Info(It.IsAny(), It.IsAny())); // Act - this.onPartitionAssignedHandler(this.dependencyResolver.Object, consumer, partitions); + this.onPartitionAssignedHandler(this.dependencyResolver.Object, Mock.Of>(), partitions); // Assert this.workerPoolMock.VerifyAll(); diff --git a/src/KafkaFlow.UnitTests/ConsumerContextTests.cs b/src/KafkaFlow.UnitTests/ConsumerContextTests.cs deleted file mode 100644 index 259dea856..000000000 --- a/src/KafkaFlow.UnitTests/ConsumerContextTests.cs +++ /dev/null @@ -1,47 +0,0 @@ -namespace KafkaFlow.UnitTests -{ - using System; - using System.Threading; - using Confluent.Kafka; - using FluentAssertions; - using KafkaFlow.Consumers; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ConsumerContextTests - { - [TestMethod] - public void MessageTimestamp_ConsumeResultHasMessageTimestamp_ReturnsMessageTimestampFromResult() - { - // Arrange - var expectedMessageTimestamp = new DateTime( - 2020, - 1, - 1, - 0, - 0, - 0); - - var consumerResult = new ConsumeResult - { - Message = new Message - { - Timestamp = new Timestamp(expectedMessageTimestamp), - }, - }; - - var target = new ConsumerContext( - null, - null, - consumerResult, - CancellationToken.None, - 0); - - // Act - var messageTimestamp = target.MessageTimestamp; - - // Assert - messageTimestamp.Should().Be(expectedMessageTimestamp.ToUniversalTime()); - } - } -} diff --git a/src/KafkaFlow.UnitTests/DummyObjects/DummyProtobufObject.cs b/src/KafkaFlow.UnitTests/DummyObjects/DummyProtobufObject.cs new file mode 100644 index 000000000..1bc60a9b1 --- /dev/null +++ b/src/KafkaFlow.UnitTests/DummyObjects/DummyProtobufObject.cs @@ -0,0 +1,201 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: DummyProtobufObject.proto +// +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace KafkaFlow.UnitTests { + + /// Holder for reflection information generated from DummyProtobufObject.proto + public static partial class DummyProtobufObjectReflection { + + #region Descriptor + /// File descriptor for DummyProtobufObject.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static DummyProtobufObjectReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "ChlEdW1teVByb3RvYnVmT2JqZWN0LnByb3RvEhNLYWZrYUZsb3cuVW5pdFRl", + "c3RzIjUKE0R1bW15UHJvdG9idWZPYmplY3QSDgoGZmllbGQxGAEgASgJEg4K", + "BmZpZWxkMhgCIAEoBWIGcHJvdG8z")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::KafkaFlow.UnitTests.DummyProtobufObject), global::KafkaFlow.UnitTests.DummyProtobufObject.Parser, new[]{ "Field1", "Field2" }, null, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class DummyProtobufObject : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DummyProtobufObject()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::KafkaFlow.UnitTests.DummyProtobufObjectReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public DummyProtobufObject() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public DummyProtobufObject(DummyProtobufObject other) : this() { + field1_ = other.field1_; + field2_ = other.field2_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public DummyProtobufObject Clone() { + return new DummyProtobufObject(this); + } + + /// Field number for the "field1" field. + public const int Field1FieldNumber = 1; + private string field1_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Field1 { + get { return field1_; } + set { + field1_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "field2" field. + public const int Field2FieldNumber = 2; + private int field2_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Field2 { + get { return field2_; } + set { + field2_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as DummyProtobufObject); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(DummyProtobufObject other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Field1 != other.Field1) return false; + if (Field2 != other.Field2) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Field1.Length != 0) hash ^= Field1.GetHashCode(); + if (Field2 != 0) hash ^= Field2.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (Field1.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Field1); + } + if (Field2 != 0) { + output.WriteRawTag(16); + output.WriteInt32(Field2); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Field1.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Field1); + } + if (Field2 != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Field2); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(DummyProtobufObject other) { + if (other == null) { + return; + } + if (other.Field1.Length != 0) { + Field1 = other.Field1; + } + if (other.Field2 != 0) { + Field2 = other.Field2; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Field1 = input.ReadString(); + break; + } + case 16: { + Field2 = input.ReadInt32(); + break; + } + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/KafkaFlow.UnitTests/DummyObjects/DummyProtobufObject.proto b/src/KafkaFlow.UnitTests/DummyObjects/DummyProtobufObject.proto new file mode 100644 index 000000000..7acea2bdb --- /dev/null +++ b/src/KafkaFlow.UnitTests/DummyObjects/DummyProtobufObject.proto @@ -0,0 +1,11 @@ +// can be generated using +// protoc --csharp_out=. DummyProtobufObject.proto + +syntax = "proto3"; + +package KafkaFlow.UnitTests; + +message DummyProtobufObject { + string field1 = 1; + int32 field2 = 2; +} diff --git a/src/KafkaFlow.UnitTests/EventTests.cs b/src/KafkaFlow.UnitTests/EventTests.cs new file mode 100644 index 000000000..53aabdee0 --- /dev/null +++ b/src/KafkaFlow.UnitTests/EventTests.cs @@ -0,0 +1,204 @@ +namespace KafkaFlow.UnitTests +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; + + [TestClass] + public class EventTests + { + private readonly Event target; + private readonly Event typedTarget; + + public EventTests() + { + var log = new Mock(); + this.target = new Event(log.Object); + this.typedTarget = new Event(log.Object); + } + + [TestMethod] + public async Task FireAsync_EventSubscribed_CallDelegateWithSuccess() + { + // Arrange + var numberOfCalls = 0; + + this.target.Subscribe(() => + { + numberOfCalls++; + return Task.CompletedTask; + }); + + // Act + await this.target.FireAsync(); + + // Assert + Assert.AreEqual(1, numberOfCalls); + } + + [TestMethod] + public async Task FireAsync_EventWithMultipleObservers_CallAllDelegatesWithSuccess() + { + // Arrange + var numberOfCalls = 0; + + this.target.Subscribe(() => + { + numberOfCalls++; + return Task.CompletedTask; + }); + + this.target.Subscribe(() => + { + numberOfCalls++; + return Task.CompletedTask; + }); + + // Act + await this.target.FireAsync(); + + // Assert + Assert.AreEqual(2, numberOfCalls); + } + + [TestMethod] + public async Task FireAsync_EventWithMultipleObserversAndErrors_CallAllDelegatesAndContinueWithoutErrors() + { + // Arrange + var numberOfCalls = 0; + + this.target.Subscribe(() => throw new NotImplementedException()); + + this.target.Subscribe(() => + { + numberOfCalls++; + return Task.CompletedTask; + }); + + // Act + await this.target.FireAsync(); + + // Assert + Assert.AreEqual(1, numberOfCalls); + } + + [TestMethod] + public async Task FireAsync_EventSubscribedWithArgument_CallDelegateWithSuccess() + { + // Arrange + var expectedArgument = Guid.NewGuid().ToString(); + var receivedArgument = string.Empty; + + this.typedTarget.Subscribe(arg => + { + receivedArgument = arg; + return Task.CompletedTask; + }); + + // Act + await this.typedTarget.FireAsync(expectedArgument); + + // Assert + Assert.AreEqual(expectedArgument, receivedArgument); + } + + [TestMethod] + public async Task FireAsync_EventWithMultipleObserversAndArgument_CallAllDelegatesWithSuccess() + { + // Arrange + var expectedArgument = Guid.NewGuid().ToString(); + var receivedArguments = new List(); + + this.typedTarget.Subscribe(arg => + { + receivedArguments.Add(arg); + return Task.CompletedTask; + }); + + this.typedTarget.Subscribe(arg => + { + receivedArguments.Add(arg); + return Task.CompletedTask; + }); + + // Act + await this.typedTarget.FireAsync(expectedArgument); + + // Assert + Assert.AreEqual(2, receivedArguments.Count); + Assert.IsTrue(receivedArguments.All(x => x == expectedArgument)); + } + + [TestMethod] + public async Task FireAsync_TypedEventWithMultipleObserversAndErrors_CallAllDelegatesAndContinueWithoutErrors() + { + // Arrange + var numberOfCalls = 0; + + this.typedTarget.Subscribe(_ => throw new NotImplementedException()); + + this.typedTarget.Subscribe(_ => + { + numberOfCalls++; + return Task.CompletedTask; + }); + + // Act + await this.typedTarget.FireAsync(Guid.NewGuid().ToString()); + + // Assert + Assert.AreEqual(1, numberOfCalls); + } + + [TestMethod] + public async Task FireAsync_DuplicatedEventHandler_CallHandlerOnce() + { + // Arrange + var expectedArgument = Guid.NewGuid().ToString(); + var receivedArguments = new List(); + + Func handler = (arg) => + { + receivedArguments.Add(arg); + return Task.CompletedTask; + }; + + this.typedTarget.Subscribe(handler); + this.typedTarget.Subscribe(handler); + + // Act + await this.typedTarget.FireAsync(expectedArgument); + + // Assert + Assert.AreEqual(1, receivedArguments.Count); + Assert.IsTrue(receivedArguments.All(x => x == expectedArgument)); + } + + [TestMethod] + public async Task FireAsync_UnsubscribeEventHandler_DoesNotCallHandler() + { + // Arrange + var expectedArgument = Guid.NewGuid().ToString(); + var receivedArguments = new List(); + + Func handler = (arg) => + { + receivedArguments.Add(arg); + return Task.CompletedTask; + }; + + var subscription = this.typedTarget.Subscribe(handler); + + subscription.Cancel(); + + // Act + await this.typedTarget.FireAsync(expectedArgument); + + // Assert + Assert.AreEqual(0, receivedArguments.Count); + } + } +} diff --git a/src/KafkaFlow.UnitTests/ExtensionHelpers.cs b/src/KafkaFlow.UnitTests/ExtensionHelpers.cs new file mode 100644 index 000000000..50c81f1e2 --- /dev/null +++ b/src/KafkaFlow.UnitTests/ExtensionHelpers.cs @@ -0,0 +1,14 @@ +namespace KafkaFlow.UnitTests +{ + using System; + using System.Threading.Tasks; + + public static class ExtensionHelpers + { + public static TaskCompletionSource WithTimeout(this TaskCompletionSource taskCompletionSource, int milliseconds) + { + Task.Delay(milliseconds).ContinueWith(_ => taskCompletionSource.TrySetException(new TimeoutException())); + return taskCompletionSource; + } + } +} diff --git a/src/KafkaFlow.UnitTests/KafkaFlow.UnitTests.csproj b/src/KafkaFlow.UnitTests/KafkaFlow.UnitTests.csproj index cfba1c2c7..6e905e545 100644 --- a/src/KafkaFlow.UnitTests/KafkaFlow.UnitTests.csproj +++ b/src/KafkaFlow.UnitTests/KafkaFlow.UnitTests.csproj @@ -15,7 +15,8 @@ - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -28,11 +29,15 @@ + + + + diff --git a/src/KafkaFlow.UnitTests/MemoryTelemetryStorageTests.cs b/src/KafkaFlow.UnitTests/MemoryTelemetryStorageTests.cs index e13828790..bb7bf0f66 100644 --- a/src/KafkaFlow.UnitTests/MemoryTelemetryStorageTests.cs +++ b/src/KafkaFlow.UnitTests/MemoryTelemetryStorageTests.cs @@ -18,7 +18,7 @@ public class MemoryTelemetryStorageTests [TestInitialize] public void Setup() { - this.dateTimeProviderMock = new(MockBehavior.Strict); + this.dateTimeProviderMock = new(); this.dateTimeProviderMock .SetupGet(x => x.MinValue) @@ -47,7 +47,7 @@ public void Put_OneItem_ReturnsOneItem() var now = DateTime.Now; this.dateTimeProviderMock - .SetupGet(x => x.Now) + .SetupGet(x => x.UtcNow) .Returns(now); // Act @@ -64,7 +64,7 @@ public void PutTwoItems_SameInstanceGroupConsumer_ReplaceOlder() var now = DateTime.Now; this.dateTimeProviderMock - .SetupGet(x => x.Now) + .SetupGet(x => x.UtcNow) .Returns(now); var metric1 = new ConsumerTelemetryMetric @@ -99,7 +99,7 @@ public void PutTwoItems_DifferentInstanceGroupConsumer_ReturnsTwo() var now = DateTime.Now; this.dateTimeProviderMock - .SetupGet(x => x.Now) + .SetupGet(x => x.UtcNow) .Returns(now); var metric1 = new ConsumerTelemetryMetric @@ -133,7 +133,7 @@ public void PutTwoItems_ExpiryOne_ReturnsOne() var now = new DateTime(2000, 01, 01); this.dateTimeProviderMock - .SetupGet(x => x.Now) + .SetupGet(x => x.UtcNow) .Returns(now); var metric1 = new ConsumerTelemetryMetric @@ -155,7 +155,7 @@ public void PutTwoItems_ExpiryOne_ReturnsOne() }; this.dateTimeProviderMock - .SetupGet(x => x.Now) + .SetupGet(x => x.UtcNow) .Returns(now.AddSeconds(2)); // Act diff --git a/src/KafkaFlow.UnitTests/Middlewares/Serialization/ConfluentAvroTypeNameResolverTests.cs b/src/KafkaFlow.UnitTests/Middlewares/Serialization/ConfluentAvroTypeNameResolverTests.cs new file mode 100644 index 000000000..5fdeb0921 --- /dev/null +++ b/src/KafkaFlow.UnitTests/Middlewares/Serialization/ConfluentAvroTypeNameResolverTests.cs @@ -0,0 +1,47 @@ +namespace KafkaFlow.UnitTests.Middlewares.Serialization +{ + using System.Threading.Tasks; + using Confluent.SchemaRegistry; + using FluentAssertions; + using KafkaFlow.Serializer.SchemaRegistry; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; + using Newtonsoft.Json; + + [TestClass] + public class ConfluentAvroTypeNameResolverTests + { + private readonly Mock schemaRegistryClient; + private readonly ConfluentAvroTypeNameResolver schemaRegistryTypeResolver; + + public ConfluentAvroTypeNameResolverTests() + { + this.schemaRegistryClient = new Mock(); + this.schemaRegistryTypeResolver = new ConfluentAvroTypeNameResolver(this.schemaRegistryClient.Object); + } + + [TestMethod] + public async Task ResolveAsync_ValidSchemaObject_ReturnsAvroFieldsInCorrectFormat() + { + // Arrange + var schemaId = 420; + var type = typeof(ConfluentAvroTypeNameResolverTests); + var schemaObj = new + { + Name = type.Name, + NameSpace = type.Namespace, + }; + + var schema = new Schema(JsonConvert.SerializeObject(schemaObj), SchemaType.Avro); + + this.schemaRegistryClient.Setup(client => client.GetSchemaAsync(schemaId, null)) + .ReturnsAsync(schema); + + // Act + var avroFields = await this.schemaRegistryTypeResolver.ResolveAsync(schemaId); + + // Assert + avroFields.Should().Be($"{schemaObj.NameSpace}.{schemaObj.Name}"); + } + } +} diff --git a/src/KafkaFlow.UnitTests/Middlewares/Serialization/ConfluentProtobufTypeNameResolverTests.cs b/src/KafkaFlow.UnitTests/Middlewares/Serialization/ConfluentProtobufTypeNameResolverTests.cs new file mode 100644 index 000000000..cd6ec854f --- /dev/null +++ b/src/KafkaFlow.UnitTests/Middlewares/Serialization/ConfluentProtobufTypeNameResolverTests.cs @@ -0,0 +1,49 @@ +namespace KafkaFlow.UnitTests.Middlewares.Serialization +{ + using System; + using System.Threading.Tasks; + using Confluent.SchemaRegistry; + + using FluentAssertions; + + using Google.Protobuf; + using KafkaFlow.Serializer.SchemaRegistry; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; + + [TestClass] + public class ConfluentProtobufTypeNameResolverTests + { + private readonly Mock schemaRegistryClient; + private readonly ConfluentProtobufTypeNameResolver schemaRegistryTypeResolver; + + public ConfluentProtobufTypeNameResolverTests() + { + this.schemaRegistryClient = new Mock(); + this.schemaRegistryTypeResolver = new ConfluentProtobufTypeNameResolver(this.schemaRegistryClient.Object); + } + + [TestMethod] + public async Task ResolveAsync_ValidProtobufObject_ReturnsProtoFields() + { + // Arrange + var schemaId = 420; + + var dummyProtobufObj = new DummyProtobufObject + { + Field1 = "Field1", + Field2 = 8, + }; + var base64Encoded = Convert.ToBase64String(dummyProtobufObj.ToByteArray()); + + this.schemaRegistryClient.Setup(client => client.GetSchemaAsync(schemaId, "serialized")) + .ReturnsAsync(new Schema(base64Encoded, SchemaType.Protobuf)); + + // Act + var protoFields = await this.schemaRegistryTypeResolver.ResolveAsync(schemaId); + + // Assert + protoFields.Should().NotBeNull(); + } + } +} diff --git a/src/KafkaFlow.UnitTests/Middlewares/Serialization/SchemaRegistryTypeResolverTests.cs b/src/KafkaFlow.UnitTests/Middlewares/Serialization/SchemaRegistryTypeResolverTests.cs new file mode 100644 index 000000000..38f720526 --- /dev/null +++ b/src/KafkaFlow.UnitTests/Middlewares/Serialization/SchemaRegistryTypeResolverTests.cs @@ -0,0 +1,47 @@ +namespace KafkaFlow.UnitTests.Middlewares.Serialization +{ + using System; + using System.Buffers.Binary; + using System.Threading.Tasks; + using FluentAssertions; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; + + [TestClass] + public class SchemaRegistryTypeResolverTests + { + private readonly Mock messageContextMock; + private readonly Mock schemaRegistryTypeNameResolverMock; + private readonly SchemaRegistryTypeResolver schemaRegistryTypeResolver; + private readonly byte[] messageKey = new byte[] { 0x18, 0x19 }; + private readonly byte[] messageValue = new byte[] { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25 }; + + public SchemaRegistryTypeResolverTests() + { + this.messageContextMock = new Mock(); + this.messageContextMock.Setup(context => context.Message).Returns(new Message(messageKey, messageValue)); + this.schemaRegistryTypeNameResolverMock = new Mock(); + this.schemaRegistryTypeResolver = new SchemaRegistryTypeResolver(this.schemaRegistryTypeNameResolverMock.Object); + } + + [TestMethod] + public async Task OnConsumeAsync_WhenCalledTwice_TypeIsResolvedOnceThenTypeIsLoadedFromCache() + { + // Arrange + var expectedSchemaId = BinaryPrimitives.ReadInt32BigEndian( + this.messageValue.AsSpan().Slice(1, 4)); + + this.schemaRegistryTypeNameResolverMock.Setup( + resolver => resolver.ResolveAsync(expectedSchemaId)).ReturnsAsync(typeof(SchemaRegistryTypeResolverTests).FullName); + + // Act + await this.schemaRegistryTypeResolver.OnConsumeAsync(messageContextMock.Object); + var type = await this.schemaRegistryTypeResolver.OnConsumeAsync(messageContextMock.Object); + + // Assert + this.schemaRegistryTypeNameResolverMock.Verify(resolver => resolver.ResolveAsync(expectedSchemaId), Times.Once); + var expectedObject = (SchemaRegistryTypeResolverTests)Activator.CreateInstance(type); + expectedObject.Should().NotBeNull(); + } + } +} diff --git a/src/KafkaFlow.UnitTests/OffsetCommitterTests.cs b/src/KafkaFlow.UnitTests/OffsetCommitterTests.cs index 4f2d71db2..1df3b351c 100644 --- a/src/KafkaFlow.UnitTests/OffsetCommitterTests.cs +++ b/src/KafkaFlow.UnitTests/OffsetCommitterTests.cs @@ -3,9 +3,8 @@ namespace KafkaFlow.UnitTests using System; using System.Collections.Generic; using System.Linq; - using System.Threading; + using System.Threading.Tasks; using Confluent.Kafka; - using FluentAssertions; using KafkaFlow.Consumers; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -16,20 +15,15 @@ public class OffsetCommitterTests private const int TestTimeout = 5000; private Mock consumerMock; - private Mock dependencyResolverMock; - - private Mock logHandlerMock; private TopicPartition topicPartition; private OffsetCommitter offsetCommitter; [TestInitialize] - public void Setup() + public async Task Setup() { this.consumerMock = new Mock(); - this.logHandlerMock = new Mock(); - this.dependencyResolverMock = new Mock(); this.topicPartition = new TopicPartition("topic-A", new Partition(1)); this.consumerMock @@ -38,74 +32,83 @@ public void Setup() this.offsetCommitter = new OffsetCommitter( this.consumerMock.Object, - this.dependencyResolverMock.Object, - new List<(Action>, TimeSpan)>(), - this.logHandlerMock.Object); + Mock.Of(), + Mock.Of()); + + await this.offsetCommitter.StartAsync(); } [TestCleanup] - public void Cleanup() + public async Task Cleanup() { - this.offsetCommitter.Dispose(); + await this.offsetCommitter.StopAsync(); } [TestMethod] - public void MarkAsProcessed_ShouldCommit() + public async Task MarkAsProcessed_ShouldCommit() { // Arrange - var offset = new TopicPartitionOffset(this.topicPartition, new Offset(1)); - var expectedOffsets = new[] { offset }; + var expectedOffsets = new[] { new TopicPartitionOffset(this.topicPartition, new Offset(2)) }; - var ready = new ManualResetEvent(false); + var ready = new TaskCompletionSource().WithTimeout(TestTimeout); this.consumerMock - .Setup(c => c.Commit(It.Is>(l => l.SequenceEqual(expectedOffsets)))) - .Callback((IEnumerable _) => { ready.Set(); }); + .Setup(c => c.Commit(It.Is>(l => l.SequenceEqual(expectedOffsets)))) + .Callback((IEnumerable _) => ready.SetResult()); // Act - this.offsetCommitter.MarkAsProcessed(offset); - ready.WaitOne(TestTimeout); + this.offsetCommitter.MarkAsProcessed( + new KafkaFlow.TopicPartitionOffset( + this.topicPartition.Topic, + this.topicPartition.Partition, + 1)); + + await ready.Task; // Assert - this.consumerMock.Verify( - c => c.Commit(It.Is>(l => l.SequenceEqual(expectedOffsets))), - Times.Once); + this.consumerMock.VerifyAll(); } [TestMethod] - public void PendingOffsetsState_ShouldExecuteHandlers() + public async Task PendingOffsetsState_ShouldExecuteHandlers() { // Arrange - var ready = new ManualResetEvent(false); + var ready = new TaskCompletionSource().WithTimeout(TestTimeout); - using var committer = new OffsetCommitter( + var committer = new OffsetCommitter( this.consumerMock.Object, - this.dependencyResolverMock.Object, - new List<(Action> handler, TimeSpan interval)> - { - ((_, _) => ready.Set(), TimeSpan.FromMilliseconds(100)), - }, - this.logHandlerMock.Object); + Mock.Of(), + Mock.Of()); + + committer.PendingOffsetsStatisticsHandlers.Add(new((_, _) => ready.TrySetResult(), TimeSpan.FromMilliseconds(100))); + + await committer.StartAsync(); // Act - committer.MarkAsProcessed(new TopicPartitionOffset(this.topicPartition, new Offset(1))); + committer.MarkAsProcessed( + new KafkaFlow.TopicPartitionOffset( + this.topicPartition.Topic, + this.topicPartition.Partition, + 1)); // Assert - ready.WaitOne(TestTimeout).Should().BeTrue(); + await ready.Task; + + // Cleanup + await committer.StopAsync(); } [TestMethod] - public void MarkAsProcessed_WithFailure_ShouldRequeueFailedOffsetAndCommit() + public async Task MarkAsProcessed_WithFailure_ShouldRequeueFailedOffsetAndCommit() { // Arrange - var offset = new TopicPartitionOffset(this.topicPartition, new Offset(2)); - var expectedOffsets = new[] { offset }; + var expectedOffsets = new[] { new TopicPartitionOffset(this.topicPartition, new Offset(2)) }; - var ready = new ManualResetEvent(false); + var ready = new TaskCompletionSource().WithTimeout(TestTimeout); var hasThrown = false; this.consumerMock - .Setup(c => c.Commit(It.Is>(l => l.SequenceEqual(expectedOffsets)))) + .Setup(c => c.Commit(It.Is>(l => l.SequenceEqual(expectedOffsets)))) .Callback( (IEnumerable _) => { @@ -115,16 +118,21 @@ public void MarkAsProcessed_WithFailure_ShouldRequeueFailedOffsetAndCommit() throw new InvalidOperationException(); } - ready.Set(); + ready.TrySetResult(); }); // Act - this.offsetCommitter.MarkAsProcessed(offset); - ready.WaitOne(TestTimeout); + this.offsetCommitter.MarkAsProcessed( + new KafkaFlow.TopicPartitionOffset( + this.topicPartition.Topic, + this.topicPartition.Partition, + 1)); + + await ready.Task; // Assert this.consumerMock.Verify( - c => c.Commit(It.Is>(l => l.SequenceEqual(expectedOffsets))), + c => c.Commit(It.Is>(l => l.SequenceEqual(expectedOffsets))), Times.Exactly(2)); } } diff --git a/src/KafkaFlow.UnitTests/OffsetManagerTests.cs b/src/KafkaFlow.UnitTests/OffsetManagerTests.cs index b557ff483..631de1336 100644 --- a/src/KafkaFlow.UnitTests/OffsetManagerTests.cs +++ b/src/KafkaFlow.UnitTests/OffsetManagerTests.cs @@ -1,17 +1,20 @@ namespace KafkaFlow.UnitTests { + using System; using System.Collections.Generic; using Confluent.Kafka; + using FluentAssertions; using KafkaFlow.Consumers; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; + using TopicPartitionOffset = KafkaFlow.TopicPartitionOffset; [TestClass] public class OffsetManagerTests { private Mock committerMock; - private TopicPartition topicPartition; private OffsetManager target; + private TopicPartition topicPartition; [TestInitialize] public void Setup() @@ -25,30 +28,27 @@ public void Setup() } [TestMethod] - public void MarkAsProcessed_WithInvalidTopicPartition_ShouldDoNothing() + public void MarkAsProcessed_WithNotQueuedContext_ShouldThrowInvalidOperation() { - // Arrange - this.target.Enqueue(new TopicPartitionOffset(this.topicPartition, new Offset(1))); - // Act - this.target.MarkAsProcessed(new TopicPartitionOffset(new TopicPartition("topic-B", new Partition(1)), new Offset(1))); + Action act = () => this.target.MarkAsProcessed(this.MockConsumerContext(1)); // Assert - this.committerMock.Verify(c => c.MarkAsProcessed(It.IsAny()), Times.Never()); + act.Should().Throw(); } [TestMethod] public void MarkAsProcessed_WithGaps_ShouldStoreOffsetJustOnce() { // Arrange - this.target.Enqueue(new TopicPartitionOffset(this.topicPartition, new Offset(1))); - this.target.Enqueue(new TopicPartitionOffset(this.topicPartition, new Offset(2))); - this.target.Enqueue(new TopicPartitionOffset(this.topicPartition, new Offset(3))); + this.target.Enqueue(this.MockConsumerContext(1)); + this.target.Enqueue(this.MockConsumerContext(2)); + this.target.Enqueue(this.MockConsumerContext(3)); // Act - this.target.MarkAsProcessed(new TopicPartitionOffset(this.topicPartition, new Offset(3))); - this.target.MarkAsProcessed(new TopicPartitionOffset(this.topicPartition, new Offset(2))); - this.target.MarkAsProcessed(new TopicPartitionOffset(this.topicPartition, new Offset(1))); + this.target.MarkAsProcessed(this.MockConsumerContext(3)); + this.target.MarkAsProcessed(this.MockConsumerContext(2)); + this.target.MarkAsProcessed(this.MockConsumerContext(1)); // Assert this.committerMock.Verify( @@ -56,9 +56,33 @@ public void MarkAsProcessed_WithGaps_ShouldStoreOffsetJustOnce() c.MarkAsProcessed( It.Is( p => - p.Partition.Equals(this.topicPartition.Partition) && - p.Offset.Value.Equals(4))), + p.Partition == this.topicPartition.Partition && + p.Offset == 3)), Times.Once); } + + private IConsumerContext MockConsumerContext(int offset) + { + var mock = new Mock(); + var tpo = new TopicPartitionOffset(this.topicPartition.Topic, this.topicPartition.Partition, offset); + + mock + .SetupGet(x => x.Offset) + .Returns(tpo.Offset); + + mock + .SetupGet(x => x.Partition) + .Returns(tpo.Partition); + + mock + .SetupGet(x => x.Topic) + .Returns(tpo.Topic); + + mock + .SetupGet(x => x.TopicPartitionOffset) + .Returns(tpo); + + return mock.Object; + } } } diff --git a/src/KafkaFlow.UnitTests/PartitionOffsetsTests.cs b/src/KafkaFlow.UnitTests/PartitionOffsetsTests.cs index fdd46c766..e3a4b168c 100644 --- a/src/KafkaFlow.UnitTests/PartitionOffsetsTests.cs +++ b/src/KafkaFlow.UnitTests/PartitionOffsetsTests.cs @@ -1,192 +1,169 @@ namespace KafkaFlow.UnitTests { using System; - using System.Collections.Concurrent; using System.Collections.Generic; - using System.Linq; - using System.Threading; using System.Threading.Tasks; using FluentAssertions; using KafkaFlow.Consumers; using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; [TestClass] public class PartitionOffsetsTests { [TestMethod] - public void ShouldUpdate_WithoutAddingOffsets_ThrowsException() + public void TryDequeue_WithoutEnqueuing_ThrowsException() { // Arrange var offsets = new PartitionOffsets(); // Act - Func act = () => offsets.ShouldCommit(1, out _); + Func act = () => offsets.TryDequeue(MockConsumerContext(1)); // Assert act.Should().Throw(); } [TestMethod] - public void ShouldUpdateOffset_NextOffset_ShouldUpdate() + public void TryDequeue_WithSequencedContext_SetDequeuedContext() { // Arrange var offsets = new PartitionOffsets(); - offsets.Enqueue(1); + + var context = MockConsumerContext(1); + + offsets.Enqueue(context); // Act - var shouldUpdate = offsets.ShouldCommit(1, out var offset); + var isCommitAllowed = offsets.TryDequeue(context); // Assert - Assert.IsTrue(shouldUpdate); - Assert.AreEqual(1, offset); + Assert.IsTrue(isCommitAllowed); + Assert.AreEqual(1, offsets.DequeuedContext.Offset); } [TestMethod] - public void ShouldUpdateOffset_WithOneGap_ShouldNotUpdate() + public void TryDequeue_WithNonSequencedContexts_UnsetDequeuedContext() { // Arrange var offsets = new PartitionOffsets(); - offsets.Enqueue(1); + offsets.Enqueue(MockConsumerContext(1)); // Act - var shouldUpdate = offsets.ShouldCommit(2, out var offset); + var isCommitAllowed = offsets.TryDequeue(MockConsumerContext(2)); // Assert - Assert.IsFalse(shouldUpdate); - Assert.AreEqual(-1, offset); + Assert.IsFalse(isCommitAllowed); + Assert.IsNull(offsets.DequeuedContext); } [TestMethod] - public void ShouldUpdateOffset_WithManyGaps_ShouldUpdate() + public void TryDequeue_WithUnorderedSequence_SetDequeuedContextWhenAllowed() { // Arrange var offsets = new PartitionOffsets(); - offsets.Enqueue(1); - offsets.Enqueue(2); - offsets.Enqueue(4); - offsets.Enqueue(5); - offsets.Enqueue(7); - offsets.Enqueue(8); - offsets.Enqueue(15); - offsets.Enqueue(20); - offsets.Enqueue(50); + + var context1 = MockConsumerContext(1); + var context2 = MockConsumerContext(2); + var context4 = MockConsumerContext(4); + var context5 = MockConsumerContext(5); + + offsets.Enqueue(context1); + offsets.Enqueue(context2); + offsets.Enqueue(context4); + offsets.Enqueue(context5); // Act var results = new[] { new { - ShouldUpdateResult = offsets.ShouldCommit(7, out long offset), - ShouldUpdateExpected = false, - LastOffsetResult = offset, - LastOffsetExpected = -1, - }, - new - { - ShouldUpdateResult = offsets.ShouldCommit(1, out offset), - ShouldUpdateExpected = true, - LastOffsetResult = offset, - LastOffsetExpected = 1, - }, - new - { - ShouldUpdateResult = offsets.ShouldCommit(2, out offset), - ShouldUpdateExpected = true, - LastOffsetResult = offset, - LastOffsetExpected = 2, - }, - new - { - ShouldUpdateResult = offsets.ShouldCommit(20, out offset), - ShouldUpdateExpected = false, - LastOffsetResult = offset, - LastOffsetExpected = -1, - }, - new - { - ShouldUpdateResult = offsets.ShouldCommit(5, out offset), - ShouldUpdateExpected = false, - LastOffsetResult = offset, - LastOffsetExpected = -1, - }, - new - { - ShouldUpdateResult = offsets.ShouldCommit(8, out offset), - ShouldUpdateExpected = false, - LastOffsetResult = offset, - LastOffsetExpected = -1, + Dequeued = offsets.TryDequeue(context5), + ExcpectedDequeuedResult = false, + DequeuedContextOffset = offsets.DequeuedContext?.Offset, + ExpectedDequeuedContextOffset = -1, }, new { - ShouldUpdateResult = offsets.ShouldCommit(4, out offset), - ShouldUpdateExpected = true, - LastOffsetResult = offset, - LastOffsetExpected = 8, + Dequeued = offsets.TryDequeue(context1), + ExcpectedDequeuedResult = true, + DequeuedContextOffset = offsets.DequeuedContext?.Offset, + ExpectedDequeuedContextOffset = 1, }, new { - ShouldUpdateResult = offsets.ShouldCommit(15, out offset), - ShouldUpdateExpected = true, - LastOffsetResult = offset, - LastOffsetExpected = 20, + Dequeued = offsets.TryDequeue(context2), + ExcpectedDequeuedResult = true, + DequeuedContextOffset = offsets.DequeuedContext?.Offset, + ExpectedDequeuedContextOffset = 2, }, new { - ShouldUpdateResult = offsets.ShouldCommit(50, out offset), - ShouldUpdateExpected = true, - LastOffsetResult = offset, - LastOffsetExpected = 50, + Dequeued = offsets.TryDequeue(context4), + ExcpectedDequeuedResult = true, + DequeuedContextOffset = offsets.DequeuedContext?.Offset, + ExpectedDequeuedContextOffset = 5, }, }; // Assert foreach (var result in results) { - Assert.AreEqual(result.ShouldUpdateExpected, result.ShouldUpdateResult); - Assert.AreEqual(result.LastOffsetExpected, result.LastOffsetResult); + Assert.AreEqual(result.ExcpectedDequeuedResult, result.Dequeued); + Assert.AreEqual(result.ExpectedDequeuedContextOffset, result.DequeuedContextOffset ?? -1); } } [TestMethod] - public void ShouldUpdateOffset_WithManyConcurrentOffsets_ShouldUpdate() + public void TryDequeue_WithConcurrentCalls_RemainTheLastDequeuedContext() { // Arrange - const int count = 1_000; + const int count = 100; + const int lastOffset = count - 1; var target = new PartitionOffsets(); - var offsetsCommitted = new ConcurrentBag(); + var contexts = new IConsumerContext[count]; - var waitHandle = new ManualResetEvent(false); + var taskCompletionSource = new TaskCompletionSource(); - for (var i = 0; i < count; i += 2) + for (var i = 0; i < count; i++) { - target.Enqueue(i); + contexts[i] = MockConsumerContext(i); + target.Enqueue(contexts[i]); } // Act var tasks = new List(); - for (var i = 0; i < count; i += 2) + for (var i = 0; i < count; i++) { - var offset = i; tasks.Add( - Task.Run( - () => + Task.Factory.StartNew( + async index => { - waitHandle.WaitOne(); + await taskCompletionSource.Task; - if (target.ShouldCommit(offset, out var lastProcessedOffset)) - { - offsetsCommitted.Add(lastProcessedOffset); - } - })); + target.TryDequeue(contexts[(int)index]); + }, + i)); } - waitHandle.Set(); + taskCompletionSource.SetResult(); Task.WaitAll(tasks.ToArray()); // Assert - Assert.AreEqual(count - 2, offsetsCommitted.Max()); + Assert.AreEqual(lastOffset, target.DequeuedContext.Offset); + } + + private static IConsumerContext MockConsumerContext(int offset) + { + var mock = new Mock(); + + mock + .SetupGet(x => x.Offset) + .Returns(offset); + + return mock.Object; } } } diff --git a/src/KafkaFlow.UnitTests/Serializers/SerializerConsumerMiddlewareTests.cs b/src/KafkaFlow.UnitTests/Serializers/SerializerConsumerMiddlewareTests.cs index 117cd9f50..cf0f1398b 100644 --- a/src/KafkaFlow.UnitTests/Serializers/SerializerConsumerMiddlewareTests.cs +++ b/src/KafkaFlow.UnitTests/Serializers/SerializerConsumerMiddlewareTests.cs @@ -39,8 +39,8 @@ public async Task Invoke_NullMessageType_ReturnWithoutCallingNext() .Returns(new Message(new byte[1], new byte[1])); this.typeResolverMock - .Setup(x => x.OnConsume(this.contextMock.Object)) - .Returns((Type)null); + .Setup(x => x.OnConsumeAsync(this.contextMock.Object)) + .ReturnsAsync((Type)null); // Act await this.target.Invoke(this.contextMock.Object, _ => this.SetNextCalled()); @@ -70,7 +70,7 @@ public async Task Invoke_NullMessage_CallNext() this.serializerMock.Verify( x => x.DeserializeAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); - this.typeResolverMock.Verify(x => x.OnConsume(It.IsAny()), Times.Never); + this.typeResolverMock.Verify(x => x.OnConsumeAsync(It.IsAny()), Times.Never); } [TestMethod] @@ -91,7 +91,7 @@ public void Invoke_NotByteArrayMessage_ThrowsInvalidOperationException() this.serializerMock.Verify( x => x.DeserializeAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); - this.typeResolverMock.Verify(x => x.OnConsume(It.IsAny()), Times.Never); + this.typeResolverMock.Verify(x => x.OnConsumeAsync(It.IsAny()), Times.Never); } [TestMethod] @@ -119,8 +119,8 @@ public async Task Invoke_ValidMessage_Deserialize() .Returns(transformedContextMock.Object); this.typeResolverMock - .Setup(x => x.OnConsume(this.contextMock.Object)) - .Returns(messageType); + .Setup(x => x.OnConsumeAsync(this.contextMock.Object)) + .ReturnsAsync(messageType); this.serializerMock .Setup(x => x.DeserializeAsync(It.IsAny(), messageType, It.IsAny())) diff --git a/src/KafkaFlow.UnitTests/Serializers/SerializerProducerMiddlewareTests.cs b/src/KafkaFlow.UnitTests/Serializers/SerializerProducerMiddlewareTests.cs index 0b45b7a1e..74030a595 100644 --- a/src/KafkaFlow.UnitTests/Serializers/SerializerProducerMiddlewareTests.cs +++ b/src/KafkaFlow.UnitTests/Serializers/SerializerProducerMiddlewareTests.cs @@ -48,7 +48,7 @@ public async Task Invoke_ValidMessage_Serialize() .SetupGet(x => x.Message) .Returns(deserializedMessage); - this.typeResolverMock.Setup(x => x.OnProduce(this.contextMock.Object)); + this.typeResolverMock.Setup(x => x.OnProduceAsync(this.contextMock.Object)); this.serializerMock .Setup( diff --git a/src/KafkaFlow.Unity/UnityDependencyResolver.cs b/src/KafkaFlow.Unity/UnityDependencyResolver.cs index ed3c8b3ad..35b06c43f 100644 --- a/src/KafkaFlow.Unity/UnityDependencyResolver.cs +++ b/src/KafkaFlow.Unity/UnityDependencyResolver.cs @@ -2,9 +2,7 @@ namespace KafkaFlow.Unity { using System; using System.Collections.Generic; - using System.Linq; using global::Unity; - using global::Unity.Resolution; /// /// Unity implementation of diff --git a/src/KafkaFlow/Clusters/ClusterManager.cs b/src/KafkaFlow/Clusters/ClusterManager.cs index 97893ca5c..aeca278af 100644 --- a/src/KafkaFlow/Clusters/ClusterManager.cs +++ b/src/KafkaFlow/Clusters/ClusterManager.cs @@ -1,30 +1,103 @@ namespace KafkaFlow.Clusters { using System; + using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Confluent.Kafka; using Confluent.Kafka.Admin; using KafkaFlow.Configuration; + using TopicMetadata = KafkaFlow.TopicMetadata; + using TopicPartitionOffset = KafkaFlow.TopicPartitionOffset; - internal class ClusterManager : IClusterManager + internal class ClusterManager : IClusterManager, IDisposable { private readonly ILogHandler logHandler; - private readonly Lazy lazyAdminClientBuilder; + private readonly Lazy lazyAdminClient; private readonly ClusterConfiguration configuration; + private readonly ConcurrentDictionary topicMetadataCache = new(); + public ClusterManager(ILogHandler logHandler, ClusterConfiguration configuration) { this.logHandler = logHandler; this.configuration = configuration; - this.lazyAdminClientBuilder = new Lazy( - () => new AdminClientBuilder(new AdminClientConfig - { BootstrapServers = string.Join(",", configuration.Brokers) })); + + this.lazyAdminClient = new Lazy( + () => + { + var config = new AdminClientConfig + { + BootstrapServers = string.Join(",", configuration.Brokers), + }; + + config.ReadSecurityInformationFrom(configuration); + + return new AdminClientBuilder(config) + .Build(); + }); } public string ClusterName => this.configuration.Name; + public ValueTask GetTopicMetadataAsync(string topicName) + { + return new ValueTask( + this.topicMetadataCache.GetOrAdd( + topicName, + _ => + { + var metadata = this.lazyAdminClient.Value.GetMetadata(topicName, TimeSpan.FromSeconds(30)); + + if (!metadata.Topics.Any()) + { + return new TopicMetadata(string.Empty, Array.Empty()); + } + + return new TopicMetadata( + metadata.Topics[0].Topic, + metadata.Topics[0] + .Partitions + .Select(p => new TopicPartitionMetadata(p.PartitionId)) + .ToList()); + })); + } + + public async Task> GetConsumerGroupOffsetsAsync( + string consumerGroup, + IEnumerable topicsName) + { + var topicsMetadata = new List<(string Name, TopicMetadata Metadata)>(); + + foreach (var name in topicsName) + { + topicsMetadata.Add((name, await this.GetTopicMetadataAsync(name))); + } + + var topics = + topicsMetadata + .SelectMany( + topic => topic.Metadata.Partitions.Select( + partition => new TopicPartition( + topic.Name, + new Partition(partition.Id)))) + .ToList(); + + var result = await this.lazyAdminClient.Value.ListConsumerGroupOffsetsAsync( + new[] { new ConsumerGroupTopicPartitions(consumerGroup, topics) }); + + if (!result.Any()) + { + return Enumerable.Empty(); + } + + return result[0] + .Partitions + .Select(p => new TopicPartitionOffset(p.Topic, p.Partition.Value, p.Offset.Value)) + .ToList(); + } + public async Task CreateIfNotExistsAsync(IEnumerable configurations) { try @@ -39,8 +112,7 @@ public async Task CreateIfNotExistsAsync(IEnumerable configu }) .ToArray(); - using var client = this.lazyAdminClientBuilder.Value.Build(); - await client.CreateTopicsAsync(topics); + await this.lazyAdminClient.Value.CreateTopicsAsync(topics); } catch (CreateTopicsException exception) { @@ -75,5 +147,13 @@ public async Task CreateIfNotExistsAsync(IEnumerable configu } } } + + public void Dispose() + { + if (this.lazyAdminClient.IsValueCreated) + { + this.lazyAdminClient.Value.Dispose(); + } + } } } diff --git a/src/KafkaFlow/Clusters/IClusterManager.cs b/src/KafkaFlow/Clusters/IClusterManager.cs index 52bb78e37..6d2f149b4 100644 --- a/src/KafkaFlow/Clusters/IClusterManager.cs +++ b/src/KafkaFlow/Clusters/IClusterManager.cs @@ -20,5 +20,25 @@ public interface IClusterManager /// Topics to create /// public Task CreateIfNotExistsAsync(IEnumerable configuration); + + /// + /// Retrieves the metadata for a specified topic. + /// This includes information about the topic as well as its partitions. + /// + /// The name of the topic for which to retrieve metadata. + /// A TopicMetadata object that contains information about the topic and its partitions. + ValueTask GetTopicMetadataAsync(string topicName); + + /// + /// Retrieves the offsets for a specified consumer group and a collection of topics. + /// The offsets indicate where the consumer group is in its consumption of the topics. + /// + /// The name of the consumer group for which to retrieve offsets. + /// A collection of topic names for which to retrieve offsets. + /// An enumerable collection of TopicPartitionOffset objects, + /// each of which contains offset information for a specific topic partition in the consumer group. + Task> GetConsumerGroupOffsetsAsync( + string consumerGroup, + IEnumerable topicsName); } } diff --git a/src/KafkaFlow/Configuration/ConsumerConfiguration.cs b/src/KafkaFlow/Configuration/ConsumerConfiguration.cs index 118873a71..a74de9d43 100644 --- a/src/KafkaFlow/Configuration/ConsumerConfiguration.cs +++ b/src/KafkaFlow/Configuration/ConsumerConfiguration.cs @@ -2,12 +2,12 @@ namespace KafkaFlow.Configuration { using System; using System.Collections.Generic; + using System.Threading.Tasks; using Confluent.Kafka; internal class ConsumerConfiguration : IConsumerConfiguration { private readonly ConsumerConfig consumerConfig; - private int workersCount; public ConsumerConfiguration( ConsumerConfig consumerConfig, @@ -16,20 +16,20 @@ public ConsumerConfiguration( string consumerName, ClusterConfiguration clusterConfiguration, bool managementDisabled, - int workersCount, + Func> workersCountCalculator, + TimeSpan workersCountEvaluationInterval, int bufferSize, TimeSpan workerStopTimeout, Factory distributionStrategyFactory, IReadOnlyList middlewaresConfigurations, - bool autoStoreOffsets, + bool autoMessageCompletion, bool noStoreOffsets, ConsumerInitialState initialState, TimeSpan autoCommitInterval, IReadOnlyList> statisticsHandlers, IReadOnlyList>> partitionsAssignedHandlers, IReadOnlyList>> partitionsRevokedHandlers, - IReadOnlyList<(Action> handler, TimeSpan interval)> - pendingOffsetsHandlers, + IReadOnlyList pendingOffsetsStatisticsHandlers, ConsumerCustomFactory customFactory) { this.consumerConfig = consumerConfig ?? throw new ArgumentNullException(nameof(consumerConfig)); @@ -43,7 +43,7 @@ public ConsumerConfiguration( distributionStrategyFactory ?? throw new ArgumentNullException(nameof(distributionStrategyFactory)); this.MiddlewaresConfigurations = middlewaresConfigurations ?? throw new ArgumentNullException(nameof(middlewaresConfigurations)); - this.AutoStoreOffsets = autoStoreOffsets; + this.AutoMessageCompletion = autoMessageCompletion; this.NoStoreOffsets = noStoreOffsets; this.InitialState = initialState; this.AutoCommitInterval = autoCommitInterval; @@ -52,12 +52,13 @@ public ConsumerConfiguration( this.ConsumerName = consumerName ?? Guid.NewGuid().ToString(); this.ClusterConfiguration = clusterConfiguration; this.ManagementDisabled = managementDisabled; - this.WorkersCount = workersCount; + this.WorkersCountCalculator = workersCountCalculator; + this.WorkersCountEvaluationInterval = workersCountEvaluationInterval; this.WorkerStopTimeout = workerStopTimeout; this.StatisticsHandlers = statisticsHandlers; this.PartitionsAssignedHandlers = partitionsAssignedHandlers; this.PartitionsRevokedHandlers = partitionsRevokedHandlers; - this.PendingOffsetsHandlers = pendingOffsetsHandlers; + this.PendingOffsetsStatisticsHandlers = pendingOffsetsStatisticsHandlers; this.CustomFactory = customFactory; this.BufferSize = bufferSize > 0 ? @@ -82,17 +83,9 @@ public ConsumerConfiguration( public bool ManagementDisabled { get; } - public int WorkersCount - { - get => this.workersCount; - set => - this.workersCount = value > 0 ? - value : - throw new ArgumentOutOfRangeException( - nameof(this.WorkersCount), - this.WorkersCount, - $"The {nameof(this.WorkersCount)} value must be greater than 0"); - } + public Func> WorkersCountCalculator { get; set; } + + public TimeSpan WorkersCountEvaluationInterval { get; } public string GroupId => this.consumerConfig.GroupId; @@ -100,7 +93,7 @@ public int WorkersCount public TimeSpan WorkerStopTimeout { get; } - public bool AutoStoreOffsets { get; } + public bool AutoMessageCompletion { get; } public bool NoStoreOffsets { get; } @@ -114,8 +107,7 @@ public int WorkersCount public IReadOnlyList>> PartitionsRevokedHandlers { get; } - public IReadOnlyList<(Action> handler, TimeSpan interval)> - PendingOffsetsHandlers { get; } + public IReadOnlyList PendingOffsetsStatisticsHandlers { get; } public ConsumerCustomFactory CustomFactory { get; } diff --git a/src/KafkaFlow/Configuration/ConsumerConfigurationBuilder.cs b/src/KafkaFlow/Configuration/ConsumerConfigurationBuilder.cs index f7e601ed0..e1c027151 100644 --- a/src/KafkaFlow/Configuration/ConsumerConfigurationBuilder.cs +++ b/src/KafkaFlow/Configuration/ConsumerConfigurationBuilder.cs @@ -4,6 +4,7 @@ namespace KafkaFlow.Configuration using System.Collections.Generic; using System.ComponentModel; using System.Linq; + using System.Threading.Tasks; using Confluent.Kafka; using KafkaFlow.Consumers.DistributionStrategies; @@ -13,8 +14,7 @@ internal sealed class ConsumerConfigurationBuilder : IConsumerConfigurationBuild private readonly List topicsPartitions = new(); private readonly List> statisticsHandlers = new(); - private readonly List<(Action>, TimeSpan interval)> - pendingOffsetsStatisticsHandlers = new(); + private readonly List pendingOffsetsStatisticsHandlers = new(); private readonly List>> partitionAssignedHandlers = new(); private readonly List>> partitionRevokedHandlers = new(); @@ -27,10 +27,11 @@ internal sealed class ConsumerConfigurationBuilder : IConsumerConfigurationBuild private string groupId = string.Empty; private AutoOffsetReset? autoOffsetReset; private int? maxPollIntervalMs; - private int workersCount; + private Func> workersCountCalculator; + private TimeSpan workersCountEvaluationInterval = TimeSpan.FromMinutes(5); private int bufferSize; private TimeSpan workerStopTimeout = TimeSpan.FromSeconds(30); - private bool autoStoreOffsets = true; + private bool autoMessageCompletion = true; private bool noStoreOffsets; private ConsumerInitialState initialState = ConsumerInitialState.Running; private int statisticsInterval; @@ -119,12 +120,25 @@ public IConsumerConfigurationBuilder WithMaxPollIntervalMs(int maxPollIntervalMs return this; } - public IConsumerConfigurationBuilder WithWorkersCount(int workersCount) + public IConsumerConfigurationBuilder WithWorkersCount( + Func> calculator, + TimeSpan evaluationInterval) { - this.workersCount = workersCount; + this.workersCountCalculator = calculator; + this.workersCountEvaluationInterval = evaluationInterval; return this; } + public IConsumerConfigurationBuilder WithWorkersCount(Func> calculator) + { + return this.WithWorkersCount(calculator, TimeSpan.FromMinutes(5)); + } + + public IConsumerConfigurationBuilder WithWorkersCount(int workersCount) + { + return this.WithWorkersCount((_, _) => Task.FromResult(workersCount)); + } + public IConsumerConfigurationBuilder WithBufferSize(int size) { this.bufferSize = size; @@ -159,15 +173,9 @@ public IConsumerConfigurationBuilder WithWorkDistributionStrategy() return this; } - public IConsumerConfigurationBuilder WithAutoStoreOffsets() - { - this.autoStoreOffsets = true; - return this; - } - - public IConsumerConfigurationBuilder WithManualStoreOffsets() + public IConsumerConfigurationBuilder WithManualMessageCompletion() { - this.autoStoreOffsets = false; + this.autoMessageCompletion = false; return this; } @@ -219,7 +227,7 @@ public IConsumerConfigurationBuilder WithPendingOffsetsStatisticsHandler( Action> pendingOffsetsHandler, TimeSpan interval) { - this.pendingOffsetsStatisticsHandlers.Add((pendingOffsetsHandler, interval)); + this.pendingOffsetsStatisticsHandlers.Add(new(pendingOffsetsHandler, interval)); return this; } @@ -255,12 +263,13 @@ public IConsumerConfiguration Build(ClusterConfiguration clusterConfiguration) this.name, clusterConfiguration, this.disableManagement, - this.workersCount, + this.workersCountCalculator, + this.workersCountEvaluationInterval, this.bufferSize, this.workerStopTimeout, this.distributionStrategyFactory, middlewareConfiguration, - this.autoStoreOffsets, + this.autoMessageCompletion, this.noStoreOffsets, this.initialState, this.autoCommitInterval, diff --git a/src/KafkaFlow/Configuration/IConsumerConfiguration.cs b/src/KafkaFlow/Configuration/IConsumerConfiguration.cs index 101b98059..4099867b9 100644 --- a/src/KafkaFlow/Configuration/IConsumerConfiguration.cs +++ b/src/KafkaFlow/Configuration/IConsumerConfiguration.cs @@ -2,6 +2,7 @@ namespace KafkaFlow.Configuration { using System; using System.Collections.Generic; + using System.Threading.Tasks; using Confluent.Kafka; /// @@ -45,9 +46,14 @@ public interface IConsumerConfiguration bool ManagementDisabled { get; } /// - /// Gets or sets the number of workers + /// Gets or sets the workers count calculator /// - int WorkersCount { get; set; } + Func> WorkersCountCalculator { get; set; } + + /// + /// Gets the time interval at which the workers count calculation is re-evaluated. + /// + TimeSpan WorkersCountEvaluationInterval { get; } /// /// Gets the consumer group @@ -66,9 +72,9 @@ public interface IConsumerConfiguration TimeSpan WorkerStopTimeout { get; } /// - /// Gets a value indicating whether if the application should store store at the end + /// Gets a value indicating whether if the application should manual complete the message at the end /// - bool AutoStoreOffsets { get; } + bool AutoMessageCompletion { get; } /// /// Gets a value indicating that no offsets will be stored on Kafka @@ -98,10 +104,7 @@ public interface IConsumerConfiguration /// /// Gets the handlers that will be called when there are pending offsets /// - IReadOnlyList<(Action> handler, TimeSpan interval)> PendingOffsetsHandlers - { - get; - } + IReadOnlyList PendingOffsetsStatisticsHandlers { get; } /// /// Gets the custom factory used to create a new diff --git a/src/KafkaFlow/Configuration/KafkaConfiguration.cs b/src/KafkaFlow/Configuration/KafkaConfiguration.cs index 3b7adf3d4..0d2a69c5a 100644 --- a/src/KafkaFlow/Configuration/KafkaConfiguration.cs +++ b/src/KafkaFlow/Configuration/KafkaConfiguration.cs @@ -1,24 +1,23 @@ -namespace KafkaFlow.Configuration +namespace KafkaFlow.Configuration; + +using System.Collections.Generic; + +/// +/// Represents the kafka configuration values +/// +public class KafkaConfiguration { - using System.Collections.Generic; + private readonly List clusters = new(); - /// - /// Represents the kafka configuration values - /// - public class KafkaConfiguration + internal KafkaConfiguration() { - private readonly List clusters = new(); + } - /// - /// Gets the cluster configuration list - /// - public IReadOnlyCollection Clusters => this.clusters; + /// + /// Gets the cluster configuration list + /// + public IReadOnlyCollection Clusters => this.clusters; - /// - /// Adds a list of cluster configurations - /// - /// A list of cluster configurations - public void AddClusters(IEnumerable configurations) => - this.clusters.AddRange(configurations); - } + internal void AddClusters(IEnumerable configurations) => + this.clusters.AddRange(configurations); } diff --git a/src/KafkaFlow/Configuration/KafkaConfigurationBuilder.cs b/src/KafkaFlow/Configuration/KafkaConfigurationBuilder.cs index 56e72d129..0a22fef6f 100644 --- a/src/KafkaFlow/Configuration/KafkaConfigurationBuilder.cs +++ b/src/KafkaFlow/Configuration/KafkaConfigurationBuilder.cs @@ -1,70 +1,93 @@ -namespace KafkaFlow.Configuration +namespace KafkaFlow.Configuration; + +using System; +using System.Collections.Generic; +using System.Linq; +using KafkaFlow.Clusters; +using KafkaFlow.Consumers; +using KafkaFlow.Producers; + +internal class KafkaConfigurationBuilder : IKafkaConfigurationBuilder { - using System; - using System.Collections.Generic; - using System.Linq; - using KafkaFlow.Clusters; - using KafkaFlow.Consumers; - using KafkaFlow.Producers; - - internal class KafkaConfigurationBuilder : IKafkaConfigurationBuilder + private readonly IDependencyConfigurator dependencyConfigurator; + private readonly List clusters = new(); + private readonly IList> globalEventsConfigurators = new List>(); + private Type logHandlerType = typeof(NullLogHandler); + + public KafkaConfigurationBuilder(IDependencyConfigurator dependencyConfigurator) { - private readonly IDependencyConfigurator dependencyConfigurator; - private readonly List clusters = new(); - private Type logHandlerType = typeof(NullLogHandler); + this.dependencyConfigurator = dependencyConfigurator; + } + + public KafkaConfiguration Build() + { + var configuration = new KafkaConfiguration(); + + configuration.AddClusters(this.clusters.Select(x => x.Build(configuration))); - public KafkaConfigurationBuilder(IDependencyConfigurator dependencyConfigurator) + this.dependencyConfigurator.AddSingleton( + resolver => new ProducerAccessor( + configuration.Clusters + .SelectMany(x => x.Producers) + .Select( + producer => new MessageProducer( + resolver, + producer)))); + + foreach (var cluster in configuration.Clusters) { - this.dependencyConfigurator = dependencyConfigurator; + this.dependencyConfigurator.AddSingleton( + resolver => + new ClusterManager(resolver.Resolve(), cluster)); } - public KafkaConfiguration Build() - { - var configuration = new KafkaConfiguration(); + this.dependencyConfigurator + .AddTransient(typeof(ILogHandler), this.logHandlerType) + .AddSingleton() + .AddSingleton(new ConsumerAccessor()) + .AddSingleton(new ConsumerManagerFactory()) + .AddSingleton() + .AddSingleton(r => + { + var logHandler = r.Resolve(); - configuration.AddClusters(this.clusters.Select(x => x.Build(configuration))); + var hub = new GlobalEvents(logHandler); - this.dependencyConfigurator.AddSingleton( - resolver => new ProducerAccessor( - configuration.Clusters - .SelectMany(x => x.Producers) - .Select( - producer => new MessageProducer( - resolver, - producer)))); + foreach(var del in this.globalEventsConfigurators) + { + del.Invoke(hub); + } - foreach (var cluster in configuration.Clusters) - { - this.dependencyConfigurator.AddSingleton(resolver => - new ClusterManager(resolver.Resolve(), cluster)); - } - - this.dependencyConfigurator - .AddTransient(typeof(ILogHandler), this.logHandlerType) - .AddSingleton() - .AddSingleton(new ConsumerAccessor()) - .AddSingleton(new ConsumerManagerFactory()) - .AddSingleton(); - - return configuration; - } + return hub; + }) + .AddScoped() + .AddScoped(r => r.Resolve()); - public IKafkaConfigurationBuilder AddCluster(Action cluster) - { - var builder = new ClusterConfigurationBuilder(this.dependencyConfigurator); + return configuration; + } - cluster(builder); + public IKafkaConfigurationBuilder AddCluster(Action cluster) + { + var builder = new ClusterConfigurationBuilder(this.dependencyConfigurator); - this.clusters.Add(builder); + cluster(builder); - return this; - } + this.clusters.Add(builder); - public IKafkaConfigurationBuilder UseLogHandler() - where TLogHandler : ILogHandler - { - this.logHandlerType = typeof(TLogHandler); - return this; - } + return this; + } + + public IKafkaConfigurationBuilder UseLogHandler() + where TLogHandler : ILogHandler + { + this.logHandlerType = typeof(TLogHandler); + return this; + } + + public IKafkaConfigurationBuilder SubscribeGlobalEvents(Action builder) + { + this.globalEventsConfigurators.Add(builder); + + return this; } } diff --git a/src/KafkaFlow/Configuration/MiddlewareConfigurationBuilder.cs b/src/KafkaFlow/Configuration/MiddlewareConfigurationBuilder.cs index 642f3641d..95cf0a893 100644 --- a/src/KafkaFlow/Configuration/MiddlewareConfigurationBuilder.cs +++ b/src/KafkaFlow/Configuration/MiddlewareConfigurationBuilder.cs @@ -50,7 +50,7 @@ private static InstanceLifetime ParseLifetime(MiddlewareLifetime lifetime) { return lifetime switch { - MiddlewareLifetime.Scoped => InstanceLifetime.Scoped, + MiddlewareLifetime.Message => InstanceLifetime.Scoped, MiddlewareLifetime.Singleton => InstanceLifetime.Singleton, MiddlewareLifetime.Transient or MiddlewareLifetime.Worker or diff --git a/src/KafkaFlow/Configuration/PendingOffsetsStatisticsHandler.cs b/src/KafkaFlow/Configuration/PendingOffsetsStatisticsHandler.cs new file mode 100644 index 000000000..6df2d96dc --- /dev/null +++ b/src/KafkaFlow/Configuration/PendingOffsetsStatisticsHandler.cs @@ -0,0 +1,33 @@ +namespace KafkaFlow.Configuration +{ + using System; + using System.Collections.Generic; + using Confluent.Kafka; + + /// + /// Represents a handler for pending offsets statistics. + /// + public class PendingOffsetsStatisticsHandler + { + /// + /// Initializes a new instance of the class with the specified handler and interval. + /// + /// The action to handle pending offsets statistics. + /// The interval at which the handler should be executed. + public PendingOffsetsStatisticsHandler(Action> handler, TimeSpan interval) + { + this.Handler = handler; + this.Interval = interval; + } + + /// + /// Gets the action that handles pending offsets statistics. + /// + public Action> Handler { get; } + + /// + /// Gets the interval at which the handler should be executed. + /// + public TimeSpan Interval { get; } + } +} diff --git a/src/KafkaFlow/ConsumerManagerFactory.cs b/src/KafkaFlow/ConsumerManagerFactory.cs index c7d56d60b..33bce7adb 100644 --- a/src/KafkaFlow/ConsumerManagerFactory.cs +++ b/src/KafkaFlow/ConsumerManagerFactory.cs @@ -1,24 +1,29 @@ namespace KafkaFlow { - using System.Linq; using KafkaFlow.Configuration; using KafkaFlow.Consumers; internal class ConsumerManagerFactory : IConsumerManagerFactory { - public IConsumerManager Create(IConsumerConfiguration configuration, IDependencyResolver resolver) + public IConsumerManager Create(IConsumerConfiguration configuration, IDependencyResolver consumerDependencyResolver) { - var logHandler = resolver.Resolve(); + var logHandler = consumerDependencyResolver.Resolve(); - var consumer = configuration.CustomFactory(new Consumer(configuration, resolver, logHandler), resolver); + var consumer = configuration.CustomFactory( + new Consumer(configuration, consumerDependencyResolver, logHandler), + consumerDependencyResolver); + + var middlewareExecutor = new MiddlewareExecutor(configuration.MiddlewaresConfigurations); var consumerWorkerPool = new ConsumerWorkerPool( consumer, - resolver, - new MiddlewareExecutor(configuration.MiddlewaresConfigurations), + consumerDependencyResolver, + middlewareExecutor, configuration, logHandler); + consumerWorkerPool.WorkerPoolStopped.Subscribe(() => middlewareExecutor.OnWorkerPoolStopped()); + var feeder = new WorkerPoolFeeder( consumer, consumerWorkerPool, @@ -28,6 +33,7 @@ public IConsumerManager Create(IConsumerConfiguration configuration, IDependency consumer, consumerWorkerPool, feeder, + consumerDependencyResolver, logHandler); return consumerManager; diff --git a/src/KafkaFlow/Consumers/Consumer.cs b/src/KafkaFlow/Consumers/Consumer.cs index 2f9831a3b..e19583156 100644 --- a/src/KafkaFlow/Consumers/Consumer.cs +++ b/src/KafkaFlow/Consumers/Consumer.cs @@ -1,6 +1,7 @@ namespace KafkaFlow.Consumers { using System; + using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -21,7 +22,7 @@ private readonly List, Lis private readonly List, Error>> errorsHandlers = new(); private readonly List, string>> statisticsHandlers = new(); - private readonly Dictionary committedOffsets = new(); + private readonly ConcurrentDictionary currentPartitionsOffsets = new(); private readonly ConsumerFlowManager flowManager; private IConsumer consumer; @@ -53,6 +54,11 @@ public Consumer( this.OnPartitionsRevoked((resolver, _, topicPartitions) => handler(resolver, topicPartitions)); } + var middlewareContext = this.dependencyResolver.Resolve(); + + middlewareContext.Worker = null; + middlewareContext.Consumer = this; + this.RegisterLogErrorHandler(); } @@ -91,8 +97,7 @@ public ConsumerStatus Status public void OnPartitionsAssigned(Action, List> handler) => this.partitionsAssignedHandlers.Add(handler); - public void OnPartitionsRevoked( - Action, List> handler) => + public void OnPartitionsRevoked(Action, List> handler) => this.partitionsRevokedHandlers.Add(handler); public void OnError(Action, Error> handler) => @@ -120,24 +125,29 @@ public IEnumerable GetTopicPartitionsLag() return this.Assignment.Select( tp => { - if (!this.committedOffsets.TryGetValue(tp, out var offset)) - { - return new TopicPartitionLag(tp.Topic, tp.Partition.Value, 0); - } - - var offsetEnd = this.GetWatermarkOffsets(tp).High.Value; + var offset = Math.Max(0, this.currentPartitionsOffsets.GetOrAdd(tp, _ => this.GetPosition(tp))); + var offsetEnd = Math.Max(0, this.GetWatermarkOffsets(tp).High.Value); - return new TopicPartitionLag(tp.Topic, tp.Partition.Value, offsetEnd - offset); + return new TopicPartitionLag(tp.Topic, tp.Partition.Value, offset == 0 ? 0 : offsetEnd - offset); }); } - public void Commit(IEnumerable offsetsValues) + public void Commit(IReadOnlyCollection offsets) { - this.consumer.Commit(offsetsValues); + var validOffsets = offsets + .Where(x => x.Offset.Value >= 0) + .ToList(); + + if (!validOffsets.Any()) + { + return; + } + + this.consumer.Commit(validOffsets); - foreach (var offset in offsetsValues) + foreach (var offset in validOffsets) { - this.committedOffsets[offset.TopicPartition] = offset.Offset.Value; + this.currentPartitionsOffsets[offset.TopicPartition] = offset.Offset.Value; } } @@ -224,7 +234,7 @@ private void EnsureConsumer() { this.Assignment = new List(); this.Subscription = new List(); - this.committedOffsets.Clear(); + this.currentPartitionsOffsets.Clear(); this.flowManager.Stop(); this.partitionsRevokedHandlers.ForEach(handler => handler(this.dependencyResolver, consumer, partitions)); diff --git a/src/KafkaFlow/Consumers/ConsumerContext.cs b/src/KafkaFlow/Consumers/ConsumerContext.cs index 282ee2eb5..dc1c38ef6 100644 --- a/src/KafkaFlow/Consumers/ConsumerContext.cs +++ b/src/KafkaFlow/Consumers/ConsumerContext.cs @@ -2,50 +2,90 @@ namespace KafkaFlow.Consumers { using System; using System.Threading; + using System.Threading.Tasks; using Confluent.Kafka; + using TopicPartitionOffset = KafkaFlow.TopicPartitionOffset; internal class ConsumerContext : IConsumerContext { + private readonly TaskCompletionSource completionSource = new(); private readonly IConsumer consumer; private readonly IOffsetManager offsetManager; - private readonly ConsumeResult kafkaResult; + private readonly IConsumerWorker worker; + private readonly IDependencyResolverScope messageDependencyScope; + private readonly GlobalEvents globalEvents; public ConsumerContext( IConsumer consumer, IOffsetManager offsetManager, ConsumeResult kafkaResult, - CancellationToken workerStopped, - int workerId) + IConsumerWorker worker, + IDependencyResolverScope messageDependencyScope, + IDependencyResolver consumerDependencyResolver, + GlobalEvents globalEvents) { - this.WorkerStopped = workerStopped; - this.WorkerId = workerId; + this.ConsumerDependencyResolver = consumerDependencyResolver; this.consumer = consumer; this.offsetManager = offsetManager; - this.kafkaResult = kafkaResult; + this.worker = worker; + this.messageDependencyScope = messageDependencyScope; + this.AutoMessageCompletion = this.consumer.Configuration.AutoMessageCompletion; + this.TopicPartitionOffset = new TopicPartitionOffset( + kafkaResult.Topic, + kafkaResult.Partition.Value, + kafkaResult.Offset.Value); + this.MessageTimestamp = kafkaResult.Message.Timestamp.UtcDateTime; + this.globalEvents = globalEvents; } public string ConsumerName => this.consumer.Configuration.ConsumerName; - public CancellationToken WorkerStopped { get; } + public CancellationToken WorkerStopped => this.worker.StopCancellationToken; - public int WorkerId { get; } + public int WorkerId => this.worker.Id; - public string Topic => this.kafkaResult.Topic; + public IDependencyResolver WorkerDependencyResolver => this.worker.WorkerDependencyResolver; - public int Partition => this.kafkaResult.Partition.Value; + public IDependencyResolver ConsumerDependencyResolver { get; } - public long Offset => this.kafkaResult.Offset.Value; + public string Topic => this.TopicPartitionOffset.Topic; + + public int Partition => this.TopicPartitionOffset.Partition; + + public long Offset => this.TopicPartitionOffset.Offset; + + public TopicPartitionOffset TopicPartitionOffset { get; } public string GroupId => this.consumer.Configuration.GroupId; + public bool AutoMessageCompletion { get; set; } + public bool ShouldStoreOffset { get; set; } = true; - public DateTime MessageTimestamp => this.kafkaResult.Message.Timestamp.UtcDateTime; + public DateTime MessageTimestamp { get; } + + public Task Completion => this.completionSource.Task; - public void StoreOffset() => this.offsetManager.MarkAsProcessed(this.kafkaResult.TopicPartitionOffset); + public void Complete(IMessageContext context) + { + this.globalEvents.FireMessageConsumeCompletedAsync( + new MessageEventContext(context)); + + if (this.ShouldStoreOffset) + { + this.offsetManager.MarkAsProcessed(this); + } + + this.messageDependencyScope.Dispose(); + this.completionSource.TrySetResult(this.TopicPartitionOffset); + } public IOffsetsWatermark GetOffsetsWatermark() => - new OffsetsWatermark(this.consumer.GetWatermarkOffsets(this.kafkaResult.TopicPartition)); + new OffsetsWatermark( + this.consumer.GetWatermarkOffsets( + new TopicPartition( + this.TopicPartitionOffset.Topic, + this.TopicPartitionOffset.Partition))); public void Pause() => this.consumer.FlowManager.Pause(this.consumer.Assignment); diff --git a/src/KafkaFlow/Consumers/ConsumerManager.cs b/src/KafkaFlow/Consumers/ConsumerManager.cs index 6bd6c7629..a8c34bea3 100644 --- a/src/KafkaFlow/Consumers/ConsumerManager.cs +++ b/src/KafkaFlow/Consumers/ConsumerManager.cs @@ -1,20 +1,28 @@ namespace KafkaFlow.Consumers { + using System; using System.Collections.Generic; using System.Linq; + using System.Threading; using System.Threading.Tasks; using Confluent.Kafka; + using KafkaFlow.Configuration; internal class ConsumerManager : IConsumerManager { + private readonly IDependencyResolver dependencyResolver; private readonly ILogHandler logHandler; + private Timer evaluateWorkersCountTimer; + public ConsumerManager( IConsumer consumer, IConsumerWorkerPool consumerWorkerPool, IWorkerPoolFeeder feeder, + IDependencyResolver dependencyResolver, ILogHandler logHandler) { + this.dependencyResolver = dependencyResolver; this.logHandler = logHandler; this.Consumer = consumer; this.WorkerPool = consumerWorkerPool; @@ -34,17 +42,65 @@ public Task StartAsync() { this.Feeder.Start(); + this.evaluateWorkersCountTimer = new Timer( + state => _ = this.EvaluateWorkersCountAsync(), + null, + this.Consumer.Configuration.WorkersCountEvaluationInterval, + this.Consumer.Configuration.WorkersCountEvaluationInterval); + return Task.CompletedTask; } public async Task StopAsync() { + this.StopEvaluateWorkerCountTimer(); + await this.Feeder.StopAsync().ConfigureAwait(false); await this.WorkerPool.StopAsync().ConfigureAwait(false); + this.evaluateWorkersCountTimer?.Dispose(); + this.evaluateWorkersCountTimer = null; this.Consumer.Dispose(); } + private void StopEvaluateWorkerCountTimer() => this.evaluateWorkersCountTimer?.Change(Timeout.Infinite, Timeout.Infinite); + + private void StartEvaluateWorkerCountTimer() => this.evaluateWorkersCountTimer?.Change( + this.Consumer.Configuration.WorkersCountEvaluationInterval, + this.Consumer.Configuration.WorkersCountEvaluationInterval); + + private async Task EvaluateWorkersCountAsync() + { + var newWorkersCount = await this.CalculateWorkersCount(this.Consumer.Assignment); + + if (newWorkersCount == this.WorkerPool.CurrentWorkersCount) + { + return; + } + + await this.ChangeWorkersCountAsync(newWorkersCount); + } + + private async Task ChangeWorkersCountAsync(int workersCount) + { + try + { + this.StopEvaluateWorkerCountTimer(); + + await this.Feeder.StopAsync(); + await this.WorkerPool.StopAsync(); + + await this.WorkerPool.StartAsync(this.Consumer.Assignment, workersCount); + this.Feeder.Start(); + + this.StartEvaluateWorkerCountTimer(); + } + catch (Exception e) + { + this.logHandler.Error("Error changing workers count", e, null); + } + } + private void OnPartitionRevoked(IEnumerable topicPartitions) { this.logHandler.Warning( @@ -60,8 +116,10 @@ private void OnPartitionAssigned(IReadOnlyCollection partitions) "Partitions assigned", this.GetConsumerLogInfo(partitions)); + var workersCount = this.CalculateWorkersCount(partitions).GetAwaiter().GetResult(); + this.WorkerPool - .StartAsync(partitions) + .StartAsync(partitions, workersCount) .GetAwaiter() .GetResult(); } @@ -80,5 +138,32 @@ private void OnPartitionAssigned(IReadOnlyCollection partitions) Partitions = x.Select(y => y.Partition.Value), }), }; + + private async Task CalculateWorkersCount(IEnumerable partitions) + { + try + { + return await this.Consumer.Configuration.WorkersCountCalculator( + new WorkersCountContext( + this.Consumer.Configuration.ConsumerName, + this.Consumer.Configuration.GroupId, + partitions + .GroupBy( + x => x.Topic, + (topic, grouped) => new TopicPartitions( + topic, + grouped + .Select(x => x.Partition.Value) + .ToList())) + .ToList()), + this.dependencyResolver); + } + catch (Exception e) + { + this.logHandler.Error("Error calculating new workers count, using one worker as fallback", e, null); + + return 1; + } + } } } diff --git a/src/KafkaFlow/Consumers/ConsumerMiddlewareContext.cs b/src/KafkaFlow/Consumers/ConsumerMiddlewareContext.cs new file mode 100644 index 000000000..82faf1e34 --- /dev/null +++ b/src/KafkaFlow/Consumers/ConsumerMiddlewareContext.cs @@ -0,0 +1,9 @@ +namespace KafkaFlow.Consumers +{ + internal class ConsumerMiddlewareContext : IConsumerMiddlewareContext + { + public IWorker Worker { get; set; } + + public IConsumer Consumer { get; set; } + } +} diff --git a/src/KafkaFlow/Consumers/ConsumerWorker.cs b/src/KafkaFlow/Consumers/ConsumerWorker.cs index bb789af1e..c8f315827 100644 --- a/src/KafkaFlow/Consumers/ConsumerWorker.cs +++ b/src/KafkaFlow/Consumers/ConsumerWorker.cs @@ -4,46 +4,65 @@ namespace KafkaFlow.Consumers using System.Threading; using System.Threading.Channels; using System.Threading.Tasks; - using Confluent.Kafka; + using KafkaFlow.Configuration; internal class ConsumerWorker : IConsumerWorker { private readonly IConsumer consumer; - private readonly IDependencyResolver dependencyResolver; - private readonly IOffsetManager offsetManager; + private readonly IDependencyResolverScope workerDependencyResolverScope; private readonly IMiddlewareExecutor middlewareExecutor; private readonly ILogHandler logHandler; + private readonly GlobalEvents globalEvents; + private readonly Channel messagesBuffer; - private readonly Channel> messagesBuffer; + private readonly Event workerStoppingEvent; + private readonly Event workerStoppedEvent; + private readonly Event workerProcessingEnded; private CancellationTokenSource stopCancellationTokenSource; private Task backgroundTask; - private Action onMessageFinishedHandler; public ConsumerWorker( IConsumer consumer, - IDependencyResolver dependencyResolver, + IDependencyResolver consumerDependencyResolver, int workerId, - IOffsetManager offsetManager, IMiddlewareExecutor middlewareExecutor, ILogHandler logHandler) { this.Id = workerId; this.consumer = consumer; - this.dependencyResolver = dependencyResolver; - this.offsetManager = offsetManager; + this.workerDependencyResolverScope = consumerDependencyResolver.CreateScope(); this.middlewareExecutor = middlewareExecutor; this.logHandler = logHandler; - this.messagesBuffer = Channel.CreateBounded>(consumer.Configuration.BufferSize); + this.messagesBuffer = Channel.CreateBounded(consumer.Configuration.BufferSize); + + var middlewareContext = this.workerDependencyResolverScope.Resolver.Resolve(); + this.globalEvents = this.workerDependencyResolverScope.Resolver.Resolve(); + + middlewareContext.Worker = this; + middlewareContext.Consumer = consumer; + this.workerStoppingEvent = new Event(logHandler); + this.workerStoppedEvent = new Event(logHandler); + this.workerProcessingEnded = new Event(logHandler); } public int Id { get; } + public CancellationToken StopCancellationToken => this.stopCancellationTokenSource?.Token ?? default; + + public IDependencyResolver WorkerDependencyResolver => this.workerDependencyResolverScope.Resolver; + + public IEvent WorkerStopping => this.workerStoppingEvent; + + public IEvent WorkerStopped => this.workerStoppedEvent; + + public IEvent WorkerProcessingEnded => this.workerProcessingEnded; + public ValueTask EnqueueAsync( - ConsumeResult message, - CancellationToken stopCancellationToken = default) + IMessageContext context, + CancellationToken stopCancellationToken) { - return this.messagesBuffer.Writer.WriteAsync(message, stopCancellationToken); + return this.messagesBuffer.Writer.WriteAsync(context, stopCancellationToken); } public Task StartAsync() @@ -55,18 +74,13 @@ public Task StartAsync() { try { - var cancellationTokenSource = new CancellationTokenSource(); - - this.stopCancellationTokenSource.Token.Register( - () => cancellationTokenSource.CancelAfter(this.consumer.Configuration.WorkerStopTimeout)); - try { while (await this.messagesBuffer.Reader.WaitToReadAsync(CancellationToken.None).ConfigureAwait(false)) { while (this.messagesBuffer.Reader.TryRead(out var message)) { - await this.ProcessMessageAsync(message, cancellationTokenSource.Token).ConfigureAwait(false); + await this.ProcessMessageAsync(message, this.stopCancellationTokenSource.Token).ConfigureAwait(false); } } } @@ -79,59 +93,51 @@ public Task StartAsync() { this.logHandler.Error("KafkaFlow consumer worker fatal error", ex, null); } - }); + }, + CancellationToken.None); return Task.CompletedTask; } public async Task StopAsync() { + await this.workerStoppingEvent.FireAsync(); + this.messagesBuffer.Writer.TryComplete(); if (this.stopCancellationTokenSource.Token.CanBeCanceled) { - this.stopCancellationTokenSource.Cancel(); + this.stopCancellationTokenSource.CancelAfter(this.consumer.Configuration.WorkerStopTimeout); } await this.backgroundTask.ConfigureAwait(false); - this.backgroundTask.Dispose(); + + await this.workerStoppedEvent.FireAsync(); } - public void OnTaskCompleted(Action handler) + public void Dispose() { - this.onMessageFinishedHandler = handler; + this.backgroundTask.Dispose(); + this.workerDependencyResolverScope.Dispose(); + this.stopCancellationTokenSource.Dispose(); } - private async Task ProcessMessageAsync(ConsumeResult message, CancellationToken cancellationToken) + private async Task ProcessMessageAsync(IMessageContext context, CancellationToken cancellationToken) { try { - var context = new MessageContext( - new Message(message.Message.Key, message.Message.Value), - new MessageHeaders(message.Message.Headers), - new ConsumerContext( - this.consumer, - this.offsetManager, - message, - cancellationToken, - this.Id), - null); + await this.globalEvents.FireMessageConsumeStartedAsync( + new MessageEventContext(context)); try { - var scope = this.dependencyResolver.CreateScope(); - - this.offsetManager.OnOffsetProcessed( - message.TopicPartitionOffset, - () => scope.Dispose()); - await this.middlewareExecutor - .Execute(scope.Resolver, context, _ => Task.CompletedTask) + .Execute(context, _ => Task.CompletedTask) .ConfigureAwait(false); } catch (OperationCanceledException) when (cancellationToken.IsCancellationRequested) { - return; + context.ConsumerContext.ShouldStoreOffset = false; } catch (Exception ex) { @@ -146,13 +152,15 @@ await this.middlewareExecutor context.ConsumerContext.ConsumerName, }); } - - if (this.consumer.Configuration.AutoStoreOffsets && context.ConsumerContext.ShouldStoreOffset) + finally { - this.offsetManager.MarkAsProcessed(message.TopicPartitionOffset); - } + if (context.ConsumerContext.AutoMessageCompletion) + { + context.ConsumerContext.Complete(context); + } - this.onMessageFinishedHandler?.Invoke(); + await this.workerProcessingEnded.FireAsync(context); + } } catch (Exception ex) { diff --git a/src/KafkaFlow/Consumers/ConsumerWorkerPool.cs b/src/KafkaFlow/Consumers/ConsumerWorkerPool.cs index d953c4836..970acfc79 100644 --- a/src/KafkaFlow/Consumers/ConsumerWorkerPool.cs +++ b/src/KafkaFlow/Consumers/ConsumerWorkerPool.cs @@ -11,86 +11,121 @@ namespace KafkaFlow.Consumers internal class ConsumerWorkerPool : IConsumerWorkerPool { private readonly IConsumer consumer; - private readonly IDependencyResolver dependencyResolver; + private readonly IDependencyResolver consumerDependencyResolver; private readonly IMiddlewareExecutor middlewareExecutor; private readonly ILogHandler logHandler; private readonly Factory distributionStrategyFactory; + private readonly IOffsetCommitter offsetCommitter; + private readonly GlobalEvents globalEvents; - private readonly IReadOnlyList<(Action> handler, TimeSpan interval)> - pendingOffsetsHandlers; + private readonly Event workerPoolStoppedSubject; private TaskCompletionSource startedTaskSource = new(); private List workers = new(); private IDistributionStrategy distributionStrategy; - private OffsetManager offsetManager; + private IOffsetManager offsetManager; public ConsumerWorkerPool( IConsumer consumer, - IDependencyResolver dependencyResolver, + IDependencyResolver consumerDependencyResolver, IMiddlewareExecutor middlewareExecutor, IConsumerConfiguration consumerConfiguration, ILogHandler logHandler) { this.consumer = consumer; - this.dependencyResolver = dependencyResolver; + this.consumerDependencyResolver = consumerDependencyResolver; this.middlewareExecutor = middlewareExecutor; this.logHandler = logHandler; - this.pendingOffsetsHandlers = consumerConfiguration.PendingOffsetsHandlers; this.distributionStrategyFactory = consumerConfiguration.DistributionStrategyFactory; + this.workerPoolStoppedSubject = new Event(logHandler); + + this.offsetCommitter = consumer.Configuration.NoStoreOffsets ? + new NullOffsetCommitter() : + new OffsetCommitter( + consumer, + consumerDependencyResolver, + logHandler); + + this.offsetCommitter.PendingOffsetsStatisticsHandlers.AddRange(consumer.Configuration.PendingOffsetsStatisticsHandlers); + + this.globalEvents = this.consumerDependencyResolver.Resolve(); } - public async Task StartAsync(IEnumerable partitions) + public int CurrentWorkersCount { get; private set; } + + public IEvent WorkerPoolStopped => this.workerPoolStoppedSubject; + + public async Task StartAsync(IReadOnlyCollection partitions, int workersCount) { - IOffsetCommitter offsetCommitter = - this.consumer.Configuration.NoStoreOffsets ? - new NullOffsetCommitter() : - new OffsetCommitter( - this.consumer, - this.dependencyResolver, - this.pendingOffsetsHandlers, - this.logHandler); - - this.offsetManager = new OffsetManager( - offsetCommitter, - partitions); - - await Task.WhenAll( - Enumerable - .Range(0, this.consumer.Configuration.WorkersCount) - .Select( - workerId => - { - var worker = new ConsumerWorker( - this.consumer, - this.dependencyResolver, - workerId, - this.offsetManager, - this.middlewareExecutor, - this.logHandler); - - this.workers.Add(worker); - - return worker.StartAsync(); - })) - .ConfigureAwait(false); + try + { + this.offsetManager = this.consumer.Configuration.NoStoreOffsets ? + new NullOffsetManager() : + new OffsetManager(this.offsetCommitter, partitions); - this.distributionStrategy = this.distributionStrategyFactory(this.dependencyResolver); - this.distributionStrategy.Init(this.workers.AsReadOnly()); + await this.offsetCommitter.StartAsync(); - this.startedTaskSource.TrySetResult(null); + this.CurrentWorkersCount = workersCount; + + await Task.WhenAll( + Enumerable + .Range(0, this.CurrentWorkersCount) + .Select( + workerId => + { + var worker = new ConsumerWorker( + this.consumer, + this.consumerDependencyResolver, + workerId, + this.middlewareExecutor, + this.logHandler); + + this.workers.Add(worker); + + return worker.StartAsync(); + })) + .ConfigureAwait(false); + + this.distributionStrategy = this.distributionStrategyFactory(this.consumerDependencyResolver); + this.distributionStrategy.Init(this.workers.AsReadOnly()); + + this.startedTaskSource.TrySetResult(null); + } + catch (Exception e) + { + this.logHandler.Error( + "Error starting WorkerPool", + e, + new + { + this.consumer.Configuration.ConsumerName, + }); + } } public async Task StopAsync() { + if (this.workers.Count == 0) + { + return; + } + var currentWorkers = this.workers; this.workers = new List(); this.startedTaskSource = new(); await Task.WhenAll(currentWorkers.Select(x => x.StopAsync())).ConfigureAwait(false); - this.offsetManager?.Dispose(); + await this.offsetManager.WaitContextsCompletionAsync(); + + currentWorkers.ForEach(worker => worker.Dispose()); + this.offsetManager = null; + + await this.workerPoolStoppedSubject.FireAsync(); + + await this.offsetCommitter.StopAsync(); } public async Task EnqueueAsync(ConsumeResult message, CancellationToken stopCancellationToken) @@ -106,11 +141,33 @@ public async Task EnqueueAsync(ConsumeResult message, Cancellati return; } - this.offsetManager?.Enqueue(message.TopicPartitionOffset); + var context = this.CreateMessageContext(message, worker); await worker - .EnqueueAsync(message, stopCancellationToken) + .EnqueueAsync(context, stopCancellationToken) .ConfigureAwait(false); + + this.offsetManager.Enqueue(context.ConsumerContext); + } + + private MessageContext CreateMessageContext(ConsumeResult message, IConsumerWorker worker) + { + var messageDependencyScope = this.consumerDependencyResolver.CreateScope(); + + var context = new MessageContext( + new Message(message.Message.Key, message.Message.Value), + new MessageHeaders(message.Message.Headers), + messageDependencyScope.Resolver, + new ConsumerContext( + this.consumer, + this.offsetManager, + message, + worker, + messageDependencyScope, + this.consumerDependencyResolver, + this.globalEvents), + null); + return context; } } } diff --git a/src/KafkaFlow/Consumers/DistributionStrategies/BytesSumDistributionStrategy.cs b/src/KafkaFlow/Consumers/DistributionStrategies/BytesSumDistributionStrategy.cs index b68f9c5f6..5c5409839 100644 --- a/src/KafkaFlow/Consumers/DistributionStrategies/BytesSumDistributionStrategy.cs +++ b/src/KafkaFlow/Consumers/DistributionStrategies/BytesSumDistributionStrategy.cs @@ -23,15 +23,22 @@ public void Init(IReadOnlyList workers) /// public Task GetWorkerAsync(byte[] partitionKey, CancellationToken cancellationToken) { - if (partitionKey is null) + if (partitionKey is null || this.workers.Count == 1) { return Task.FromResult(this.workers[0]); } + var bytesSum = 0; + + for (int i = 0; i < partitionKey.Length; i++) + { + bytesSum += partitionKey[i]; + } + return Task.FromResult( cancellationToken.IsCancellationRequested ? null - : this.workers.ElementAtOrDefault(partitionKey.Sum(x => x) % this.workers.Count)); + : this.workers.ElementAtOrDefault(bytesSum % this.workers.Count)); } } } diff --git a/src/KafkaFlow/Consumers/DistributionStrategies/FreeWorkerDistributionStrategy.cs b/src/KafkaFlow/Consumers/DistributionStrategies/FreeWorkerDistributionStrategy.cs index 4db57f195..e9761ae90 100644 --- a/src/KafkaFlow/Consumers/DistributionStrategies/FreeWorkerDistributionStrategy.cs +++ b/src/KafkaFlow/Consumers/DistributionStrategies/FreeWorkerDistributionStrategy.cs @@ -18,7 +18,7 @@ public void Init(IReadOnlyList workers) { foreach (var worker in workers) { - worker.OnTaskCompleted(() => this.freeWorkers.Writer.WriteAsync(worker)); + worker.WorkerProcessingEnded.Subscribe(_ => Task.FromResult(this.freeWorkers.Writer.WriteAsync(worker))); this.freeWorkers.Writer.TryWrite(worker); } } diff --git a/src/KafkaFlow/Consumers/IConsumer.cs b/src/KafkaFlow/Consumers/IConsumer.cs index 9d06fb9a0..4774289c7 100644 --- a/src/KafkaFlow/Consumers/IConsumer.cs +++ b/src/KafkaFlow/Consumers/IConsumer.cs @@ -84,7 +84,7 @@ List OffsetsForTimes( TimeSpan timeout); /// - void Commit(IEnumerable offsetsValues); + void Commit(IReadOnlyCollection offsetsValues); /// ValueTask> ConsumeAsync(CancellationToken cancellationToken); diff --git a/src/KafkaFlow/Consumers/IConsumerFlowManager.cs b/src/KafkaFlow/Consumers/IConsumerFlowManager.cs index 9d84316ce..3102da03a 100644 --- a/src/KafkaFlow/Consumers/IConsumerFlowManager.cs +++ b/src/KafkaFlow/Consumers/IConsumerFlowManager.cs @@ -1,6 +1,5 @@ namespace KafkaFlow.Consumers { - using System; using System.Collections.Generic; using Confluent.Kafka; diff --git a/src/KafkaFlow/Consumers/IConsumerMiddlewareContext.cs b/src/KafkaFlow/Consumers/IConsumerMiddlewareContext.cs new file mode 100644 index 000000000..cdb5f40aa --- /dev/null +++ b/src/KafkaFlow/Consumers/IConsumerMiddlewareContext.cs @@ -0,0 +1,19 @@ +namespace KafkaFlow.Consumers +{ + /// + /// Provides access to the current consumer's middleware context. + /// + public interface IConsumerMiddlewareContext + { + /// + /// Gets the current worker in the context. + /// This property only returns values when inside a middleware with Worker lifetime; otherwise, it will return null. + /// + IWorker Worker { get; } + + /// + /// Gets the current consumer in the context. + /// + IConsumer Consumer { get; } + } +} diff --git a/src/KafkaFlow/Consumers/IConsumerWorker.cs b/src/KafkaFlow/Consumers/IConsumerWorker.cs index 7186b940b..bf997816a 100644 --- a/src/KafkaFlow/Consumers/IConsumerWorker.cs +++ b/src/KafkaFlow/Consumers/IConsumerWorker.cs @@ -1,12 +1,16 @@ namespace KafkaFlow.Consumers { + using System; using System.Threading; using System.Threading.Tasks; - using Confluent.Kafka; - internal interface IConsumerWorker : IWorker + internal interface IConsumerWorker : IWorker, IDisposable { - ValueTask EnqueueAsync(ConsumeResult message, CancellationToken stopCancellationToken = default); + CancellationToken StopCancellationToken { get; } + + IDependencyResolver WorkerDependencyResolver { get; } + + ValueTask EnqueueAsync(IMessageContext context, CancellationToken stopCancellationToken); Task StartAsync(); diff --git a/src/KafkaFlow/Consumers/IConsumerWorkerPool.cs b/src/KafkaFlow/Consumers/IConsumerWorkerPool.cs index 4c1b4626e..32f0c51f1 100644 --- a/src/KafkaFlow/Consumers/IConsumerWorkerPool.cs +++ b/src/KafkaFlow/Consumers/IConsumerWorkerPool.cs @@ -7,7 +7,9 @@ namespace KafkaFlow.Consumers internal interface IConsumerWorkerPool { - Task StartAsync(IEnumerable partitions); + int CurrentWorkersCount { get; } + + Task StartAsync(IReadOnlyCollection partitions, int workersCount); Task StopAsync(); diff --git a/src/KafkaFlow/Consumers/IOffsetCommitter.cs b/src/KafkaFlow/Consumers/IOffsetCommitter.cs index ae94f1ee5..2986b610e 100644 --- a/src/KafkaFlow/Consumers/IOffsetCommitter.cs +++ b/src/KafkaFlow/Consumers/IOffsetCommitter.cs @@ -1,10 +1,17 @@ namespace KafkaFlow.Consumers { - using System; - using Confluent.Kafka; + using System.Collections.Generic; + using System.Threading.Tasks; + using KafkaFlow.Configuration; - internal interface IOffsetCommitter : IDisposable + internal interface IOffsetCommitter { + List PendingOffsetsStatisticsHandlers { get; } + void MarkAsProcessed(TopicPartitionOffset tpo); + + Task StartAsync(); + + Task StopAsync(); } } diff --git a/src/KafkaFlow/Consumers/IOffsetManager.cs b/src/KafkaFlow/Consumers/IOffsetManager.cs index ce98f834e..aff5e27ab 100644 --- a/src/KafkaFlow/Consumers/IOffsetManager.cs +++ b/src/KafkaFlow/Consumers/IOffsetManager.cs @@ -1,12 +1,13 @@ namespace KafkaFlow.Consumers { - using System; - using Confluent.Kafka; + using System.Threading.Tasks; internal interface IOffsetManager { - void MarkAsProcessed(TopicPartitionOffset offset); + void Enqueue(IConsumerContext context); - void OnOffsetProcessed(TopicPartitionOffset offset, Action action); + void MarkAsProcessed(IConsumerContext offset); + + Task WaitContextsCompletionAsync(); } } diff --git a/src/KafkaFlow/Consumers/MessageConsumer.cs b/src/KafkaFlow/Consumers/MessageConsumer.cs index e1ee59098..262854764 100644 --- a/src/KafkaFlow/Consumers/MessageConsumer.cs +++ b/src/KafkaFlow/Consumers/MessageConsumer.cs @@ -41,7 +41,7 @@ public MessageConsumer( public string ClientInstanceName => this.consumerManager.Consumer.ClientInstanceName; - public int WorkersCount => this.consumerManager.Consumer.Configuration.WorkersCount; + public int WorkersCount => this.consumerManager.WorkerPool.CurrentWorkersCount; public IReadOnlyList PausedPartitions => this.consumerManager.Consumer.FlowManager?.PausedPartitions ?? @@ -121,12 +121,12 @@ public async Task OverrideOffsetsAndRestartAsync(IReadOnlyCollection Task.FromResult(workersCount); await this.InternalRestart().ConfigureAwait(false); this.logHandler.Info( - $"Total of workers in Kafkaflow consumer '{this.ConsumerName}' were updated", + $"Total of workers in KafkaFlow consumer '{this.ConsumerName}' were updated", new { workersCount }); } diff --git a/src/KafkaFlow/Consumers/NullOffsetCommitter.cs b/src/KafkaFlow/Consumers/NullOffsetCommitter.cs index 1184f812e..27228989c 100644 --- a/src/KafkaFlow/Consumers/NullOffsetCommitter.cs +++ b/src/KafkaFlow/Consumers/NullOffsetCommitter.cs @@ -1,9 +1,14 @@ namespace KafkaFlow.Consumers { - using Confluent.Kafka; + using System.Collections.Generic; + using System.Threading.Tasks; + using KafkaFlow; + using KafkaFlow.Configuration; internal class NullOffsetCommitter : IOffsetCommitter { + public List PendingOffsetsStatisticsHandlers { get; } = new(); + public void Dispose() { // Do nothing @@ -13,5 +18,9 @@ public void MarkAsProcessed(TopicPartitionOffset tpo) { // Do nothing } + + public Task StartAsync() => Task.CompletedTask; + + public Task StopAsync() => Task.CompletedTask; } } diff --git a/src/KafkaFlow/Consumers/NullOffsetManager.cs b/src/KafkaFlow/Consumers/NullOffsetManager.cs new file mode 100644 index 000000000..a9c4df3d3 --- /dev/null +++ b/src/KafkaFlow/Consumers/NullOffsetManager.cs @@ -0,0 +1,19 @@ +namespace KafkaFlow.Consumers +{ + using System.Threading.Tasks; + + internal class NullOffsetManager : IOffsetManager + { + public void Enqueue(IConsumerContext context) + { + // Do nothing + } + + public void MarkAsProcessed(IConsumerContext offset) + { + // Do nothing + } + + public Task WaitContextsCompletionAsync() => Task.CompletedTask; + } +} diff --git a/src/KafkaFlow/Consumers/OffsetCommitter.cs b/src/KafkaFlow/Consumers/OffsetCommitter.cs index 95c4bc5fc..f93e6ac99 100644 --- a/src/KafkaFlow/Consumers/OffsetCommitter.cs +++ b/src/KafkaFlow/Consumers/OffsetCommitter.cs @@ -5,45 +5,64 @@ namespace KafkaFlow.Consumers using System.Collections.Generic; using System.Linq; using System.Threading; - using Confluent.Kafka; + using System.Threading.Tasks; + using KafkaFlow.Configuration; internal class OffsetCommitter : IOffsetCommitter { private readonly IConsumer consumer; + private readonly IDependencyResolver resolver; + private readonly ILogHandler logHandler; - private readonly Timer commitTimer; - private readonly IReadOnlyList statisticsTimers; + private readonly object commitSyncRoot = new(); + + private Timer commitTimer; + private IReadOnlyList statisticsTimers; private ConcurrentDictionary<(string, int), TopicPartitionOffset> offsetsToCommit = new(); public OffsetCommitter( IConsumer consumer, IDependencyResolver resolver, - IReadOnlyList<(Action> handler, TimeSpan interval)> - pendingOffsetsHandlers, ILogHandler logHandler) { this.consumer = consumer; + this.resolver = resolver; this.logHandler = logHandler; + } + + public List PendingOffsetsStatisticsHandlers { get; } = new(); + + public void MarkAsProcessed(TopicPartitionOffset tpo) + { + this.offsetsToCommit.AddOrUpdate( + (tpo.Topic, tpo.Partition), + tpo, + (_, _) => tpo); + } + public Task StartAsync() + { this.commitTimer = new Timer( _ => this.CommitHandler(), null, - consumer.Configuration.AutoCommitInterval, - consumer.Configuration.AutoCommitInterval); + this.consumer.Configuration.AutoCommitInterval, + this.consumer.Configuration.AutoCommitInterval); - this.statisticsTimers = pendingOffsetsHandlers + this.statisticsTimers = this.PendingOffsetsStatisticsHandlers .Select( - s => new Timer( - _ => this.PendingOffsetsHandler(resolver, s.handler), + handler => new Timer( + _ => this.PendingOffsetsHandler(handler), null, - TimeSpan.Zero, - s.interval)) + handler.Interval, + handler.Interval)) .ToList(); + + return Task.CompletedTask; } - public void Dispose() + public Task StopAsync() { this.commitTimer.Dispose(); this.CommitHandler(); @@ -52,82 +71,89 @@ public void Dispose() { timer.Dispose(); } - } - public void MarkAsProcessed(TopicPartitionOffset tpo) - { - this.offsetsToCommit.AddOrUpdate( - (tpo.Topic, tpo.Partition.Value), - tpo, - (_, _) => tpo); + return Task.CompletedTask; } - private void PendingOffsetsHandler( - IDependencyResolver resolver, - Action> handler) + private void PendingOffsetsHandler(PendingOffsetsStatisticsHandler handler) { if (!this.offsetsToCommit.IsEmpty) { - handler(resolver, this.offsetsToCommit.Values); + handler.Handler( + this.resolver, + this.offsetsToCommit.Values.Select( + x => + new Confluent.Kafka.TopicPartitionOffset(x.Topic, x.Partition, x.Offset))); } } private void CommitHandler() { - ConcurrentDictionary<(string, int), TopicPartitionOffset> offsets = null; - - try + lock (this.commitSyncRoot) { - if (!this.offsetsToCommit.Any()) + ConcurrentDictionary<(string, int), TopicPartitionOffset> offsets = null; + + try { - return; + if (!this.offsetsToCommit.Any()) + { + return; + } + + offsets = Interlocked.Exchange( + ref this.offsetsToCommit, + new ConcurrentDictionary<(string, int), TopicPartitionOffset>()); + + this.consumer.Commit( + offsets.Values + .Select(x => new Confluent.Kafka.TopicPartitionOffset(x.Topic, x.Partition, x.Offset + 1)) + .ToList()); + + if (!this.consumer.Configuration.ManagementDisabled) + { + this.LogOffsetsCommitted(offsets.Values); + } } - - offsets = Interlocked.Exchange( - ref this.offsetsToCommit, - new ConcurrentDictionary<(string, int), TopicPartitionOffset>()); - - this.consumer.Commit(offsets.Values); - - if (!this.consumer.Configuration.ManagementDisabled) + catch (Exception e) { - this.logHandler.Verbose( - "Offsets committed", - new - { - Offsets = offsets.GroupBy( - x => x.Key.Item1, - (topic, groupedOffsets) => new - { - Topic = topic, - Partitions = groupedOffsets.Select( - offset => new - { - Partition = offset.Value.Partition.Value, - Offset = offset.Value.Offset.Value, - }), - }), - }); + this.logHandler.Warning( + "Error Commiting Offsets", + new { ErrorMessage = e.Message }); + + if (offsets is not null) + { + this.RequeueFailedOffsets(offsets.Values); + } } } - catch (Exception e) - { - this.logHandler.Warning( - "Error Commiting Offsets", - new { ErrorMessage = e.Message }); + } - if (offsets is not null) + private void LogOffsetsCommitted(IEnumerable offsets) + { + this.logHandler.Verbose( + "Offsets committed", + new { - this.RequeueFailedOffsets(offsets.Values); - } - } + Offsets = offsets.GroupBy( + x => x.Topic, + (topic, groupedOffsets) => new + { + Topic = topic, + Partitions = groupedOffsets.Select( + offset => new + { + offset.Partition, + offset.Offset, + }), + }), + }); } private void RequeueFailedOffsets(IEnumerable offsets) { foreach (var tpo in offsets) { - this.offsetsToCommit.TryAdd((tpo.Topic, tpo.Partition.Value), tpo); + this.offsetsToCommit.TryAdd((tpo.Topic, tpo.Partition), tpo); } } } diff --git a/src/KafkaFlow/Consumers/OffsetManager.cs b/src/KafkaFlow/Consumers/OffsetManager.cs index 67676b388..657091486 100644 --- a/src/KafkaFlow/Consumers/OffsetManager.cs +++ b/src/KafkaFlow/Consumers/OffsetManager.cs @@ -1,15 +1,12 @@ namespace KafkaFlow.Consumers { - using System; - using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; + using System.Threading.Tasks; using Confluent.Kafka; - internal class OffsetManager : IOffsetManager, IDisposable + internal class OffsetManager : IOffsetManager { - private readonly ConcurrentDictionary> onProcessedActions = new(); - private readonly IOffsetCommitter committer; private readonly Dictionary<(string, int), PartitionOffsets> partitionsOffsets; @@ -23,62 +20,36 @@ public OffsetManager( _ => new PartitionOffsets()); } - public void MarkAsProcessed(TopicPartitionOffset offset) + public void MarkAsProcessed(IConsumerContext context) { - if (!this.partitionsOffsets.TryGetValue((offset.Topic, offset.Partition.Value), out var offsets)) + if (!this.partitionsOffsets.TryGetValue((context.Topic, context.Partition), out var offsets)) { return; } lock (offsets) { - if (offsets.ShouldCommit(offset.Offset.Value, out var lastProcessedOffset)) + if (offsets.TryDequeue(context)) { - this.committer.MarkAsProcessed( - new TopicPartitionOffset( - offset.TopicPartition, - new Offset(lastProcessedOffset + 1))); + this.committer.MarkAsProcessed(offsets.DequeuedContext.TopicPartitionOffset); } } - - this.ExecuteOffsetActions(offset); - } - - public void OnOffsetProcessed(TopicPartitionOffset offset, Action action) - { - this.onProcessedActions - .SafeGetOrAdd(offset, _ => new()) - .Add(action); } - public void Enqueue(TopicPartitionOffset offset) + public void Enqueue(IConsumerContext context) { if (this.partitionsOffsets.TryGetValue( - (offset.Topic, offset.Partition.Value), - out var offsets)) + (context.Topic, context.Partition), + out var offsets)) { - offsets.Enqueue(offset.Offset.Value); + offsets.Enqueue(context); } } - public void Dispose() - { - this.committer.Dispose(); - } - - private void ExecuteOffsetActions(TopicPartitionOffset offset) - { - if (!this.onProcessedActions.TryGetValue(offset, out var actions)) - { - return; - } - - this.onProcessedActions.TryRemove(offset, out _); - - foreach (var action in actions) - { - action(); - } - } + public Task WaitContextsCompletionAsync() => + Task.WhenAll( + this.partitionsOffsets + .Select(x => x.Value.WaitContextsCompletionAsync()) + .ToList()); } } diff --git a/src/KafkaFlow/Consumers/PartitionOffsets.cs b/src/KafkaFlow/Consumers/PartitionOffsets.cs index c2d031d87..36fa60314 100644 --- a/src/KafkaFlow/Consumers/PartitionOffsets.cs +++ b/src/KafkaFlow/Consumers/PartitionOffsets.cs @@ -3,47 +3,54 @@ namespace KafkaFlow.Consumers using System; using System.Collections.Generic; using System.Linq; - using System.Runtime.CompilerServices; + using System.Threading.Tasks; internal class PartitionOffsets { - private readonly SortedSet processedOffsets = new(); - private readonly LinkedList receivedOffsets = new(); + private readonly SortedDictionary processedContexts = new(); + private readonly LinkedList receivedContexts = new(); - public void Enqueue(long offset) + public IConsumerContext DequeuedContext { get; private set; } + + public void Enqueue(IConsumerContext context) { - lock (this.receivedOffsets) + lock (this.receivedContexts) { - this.receivedOffsets.AddLast(offset); + this.receivedContexts.AddLast(context); } } - public bool ShouldCommit(long offset, out long lastProcessedOffset) + public bool TryDequeue(IConsumerContext context) { - lastProcessedOffset = -1; - lock (this.receivedOffsets) + this.DequeuedContext = null; + + lock (this.receivedContexts) { - if (!this.receivedOffsets.Any()) + if (!this.receivedContexts.Any()) { throw new InvalidOperationException( $"There is no offsets in the received queue. Call {nameof(this.Enqueue)} first"); } - if (offset != this.receivedOffsets.First.Value) + if (context.Offset != this.receivedContexts.First.Value.Offset) { - this.processedOffsets.Add(offset); + this.processedContexts.Add(context.Offset, context); return false; } do { - lastProcessedOffset = this.receivedOffsets.First.Value; - this.receivedOffsets.RemoveFirst(); - } - while (this.receivedOffsets.Count > 0 && this.processedOffsets.Remove(this.receivedOffsets.First.Value)); + this.DequeuedContext = this.receivedContexts.First.Value; + this.receivedContexts.RemoveFirst(); + } while (this.receivedContexts.Count > 0 && this.processedContexts.Remove(this.receivedContexts.First.Value.Offset)); } return true; } + + public Task WaitContextsCompletionAsync() => Task.WhenAll( + this.receivedContexts + .Select(x => x.Completion) + .ToList()); } } diff --git a/src/KafkaFlow/Consumers/WorkersBalancers/ConsumerLagWorkerBalancer.cs b/src/KafkaFlow/Consumers/WorkersBalancers/ConsumerLagWorkerBalancer.cs new file mode 100644 index 000000000..911d4fb7a --- /dev/null +++ b/src/KafkaFlow/Consumers/WorkersBalancers/ConsumerLagWorkerBalancer.cs @@ -0,0 +1,165 @@ +namespace KafkaFlow.Consumers.WorkersBalancers +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + using KafkaFlow.Clusters; + using KafkaFlow.Configuration; + + /// + /// Represents a balancer that dynamically calculates the number of workers for a consumer based on the current lag. + /// The calculation employs a simple rule of three considering the total lag across all application instances, + /// the lag specific to the current instance, and a predetermined total number of consumer workers. + /// + internal class ConsumerLagWorkerBalancer + { + private const int DefaultWorkersCount = 1; + + private readonly IClusterManager clusterManager; + private readonly IConsumerAccessor consumerAccessor; + private readonly ILogHandler logHandler; + private readonly int totalConsumerWorkers; + private readonly int minInstanceWorkers; + private readonly int maxInstanceWorkers; + + public ConsumerLagWorkerBalancer( + IClusterManager clusterManager, + IConsumerAccessor consumerAccessor, + ILogHandler logHandler, + int totalConsumerWorkers, + int minInstanceWorkers, + int maxInstanceWorkers) + { + this.clusterManager = clusterManager; + this.consumerAccessor = consumerAccessor; + this.logHandler = logHandler; + this.totalConsumerWorkers = totalConsumerWorkers; + this.minInstanceWorkers = minInstanceWorkers; + this.maxInstanceWorkers = maxInstanceWorkers; + } + + public async Task GetWorkersCountAsync(WorkersCountContext context) + { + var workers = await this.CalculateAsync(context); + + this.logHandler.Info( + "New workers count calculated", + new + { + Workers = workers, + Consumer = context.ConsumerName, + }); + + return workers; + } + + private static long CalculateMyPartitionsLag( + WorkersCountContext context, + IEnumerable<(string Topic, int Partition, long Lag)> partitionsLag) + { + return partitionsLag + .Where( + partitionLag => context.AssignedTopicsPartitions + .Any( + topic => topic.Name == partitionLag.Topic && + topic.Partitions.Any(p => p == partitionLag.Partition))) + .Sum(partitionLag => partitionLag.Lag); + } + + private static IReadOnlyList<(string Topic, int Partition, long Lag)> CalculatePartitionsLag( + IEnumerable<(string Topic, int Partition, long Offset)> lastOffsets, + IEnumerable currentPartitionsOffset) + { + return lastOffsets + .Select( + last => + { + var currentOffset = currentPartitionsOffset + .Where(current => current.Topic == last.Topic && current.Partition == last.Partition) + .Select(current => current.Offset) + .FirstOrDefault(); + + var lastOffset = Math.Max(0, last.Offset); + currentOffset = Math.Max(0, currentOffset); + + return (last.Topic, last.Partition, lastOffset - currentOffset); + }) + .ToList(); + } + + private async Task CalculateAsync(WorkersCountContext context) + { + try + { + if (!context.AssignedTopicsPartitions.Any()) + { + return DefaultWorkersCount; + } + + var topicsMetadata = await this.GetTopicsMetadataAsync(context); + + var lastOffsets = this.GetPartitionsLastOffset(context.ConsumerName, topicsMetadata); + + var partitionsOffset = await this.clusterManager.GetConsumerGroupOffsetsAsync( + context.ConsumerGroupId, + context.AssignedTopicsPartitions.Select(t => t.Name)); + + var partitionsLag = CalculatePartitionsLag(lastOffsets, partitionsOffset); + var instanceLag = CalculateMyPartitionsLag(context, partitionsLag); + + decimal totalConsumerLag = partitionsLag.Sum(p => p.Lag); + + var ratio = instanceLag / Math.Max(1, totalConsumerLag); + + var workers = (int)Math.Round(this.totalConsumerWorkers * ratio); + + workers = Math.Min(workers, this.maxInstanceWorkers); + workers = Math.Max(workers, this.minInstanceWorkers); + + return workers; + } + catch (Exception e) + { + this.logHandler.Error( + "Error calculating new workers count, using 1 as fallback", + e, + new + { + context.ConsumerName, + }); + + return DefaultWorkersCount; + } + } + + private IEnumerable<(string TopicName, int Partition, long Offset)> GetPartitionsLastOffset( + string consumerName, + IEnumerable<(string Name, TopicMetadata Metadata)> topicsMetadata) + { + var consumer = this.consumerAccessor[consumerName]; + + return topicsMetadata.SelectMany( + topic => topic.Metadata.Partitions.Select( + partition => ( + topic.Name, + partition.Id, + consumer + .QueryWatermarkOffsets(new(topic.Name, new(partition.Id)), TimeSpan.FromSeconds(30)) + .High + .Value))); + } + + private async Task> GetTopicsMetadataAsync(WorkersCountContext context) + { + var topicsMetadata = new List<(string Name, TopicMetadata Metadata)>(context.AssignedTopicsPartitions.Count); + + foreach (var topic in context.AssignedTopicsPartitions) + { + topicsMetadata.Add((topic.Name, await this.clusterManager.GetTopicMetadataAsync(topic.Name))); + } + + return topicsMetadata; + } + } +} diff --git a/src/KafkaFlow/DateTimeProvider.cs b/src/KafkaFlow/DateTimeProvider.cs index adeb55036..a5570242b 100644 --- a/src/KafkaFlow/DateTimeProvider.cs +++ b/src/KafkaFlow/DateTimeProvider.cs @@ -4,7 +4,7 @@ namespace KafkaFlow internal class DateTimeProvider : IDateTimeProvider { - public DateTime Now => DateTime.Now; + public DateTime UtcNow => DateTime.UtcNow; public DateTime MinValue => DateTime.MinValue; } diff --git a/src/KafkaFlow/Event.cs b/src/KafkaFlow/Event.cs new file mode 100644 index 000000000..44d73ad48 --- /dev/null +++ b/src/KafkaFlow/Event.cs @@ -0,0 +1,62 @@ +namespace KafkaFlow +{ + using System; + using System.Collections.Generic; + using System.Threading.Tasks; + + internal class Event : IEvent + { + private readonly ILogHandler logHandler; + + private readonly List> handlers = new(); + + public Event(ILogHandler logHandler) + { + this.logHandler = logHandler; + } + + public IEventSubscription Subscribe(Func handler) + { + if (!this.handlers.Contains(handler)) + { + this.handlers.Add(handler); + } + + return new EventSubscription(() => this.handlers.Remove(handler)); + } + + internal async Task FireAsync(TArg arg) + { + foreach (var handler in this.handlers) + { + try + { + if (handler is null) + { + continue; + } + + await handler.Invoke(arg); + } + catch (Exception e) + { + this.logHandler.Error("Error firing event", e, new { Event = this.GetType().Name }); + } + } + } + } + + internal class Event : IEvent + { + private readonly Event evt; + + public Event(ILogHandler logHandler) + { + this.evt = new Event(logHandler); + } + + public IEventSubscription Subscribe(Func handler) => this.evt.Subscribe(_ => handler.Invoke()); + + internal Task FireAsync() => this.evt.FireAsync(null); + } +} \ No newline at end of file diff --git a/src/KafkaFlow/EventSubscription.cs b/src/KafkaFlow/EventSubscription.cs new file mode 100644 index 000000000..36d725083 --- /dev/null +++ b/src/KafkaFlow/EventSubscription.cs @@ -0,0 +1,19 @@ +namespace KafkaFlow +{ + using System; + + internal class EventSubscription : IEventSubscription + { + private readonly Action cancelDelegate; + + public EventSubscription(Action cancelDelegate) + { + this.cancelDelegate = cancelDelegate; + } + + public void Cancel() + { + this.cancelDelegate.Invoke(); + } + } +} diff --git a/src/KafkaFlow/Extensions/ConfigurationBuilderExtensions.cs b/src/KafkaFlow/Extensions/ConfigurationBuilderExtensions.cs index 1d8841142..a5af5c77a 100644 --- a/src/KafkaFlow/Extensions/ConfigurationBuilderExtensions.cs +++ b/src/KafkaFlow/Extensions/ConfigurationBuilderExtensions.cs @@ -3,7 +3,10 @@ namespace KafkaFlow using System; using System.Collections.Generic; using Confluent.Kafka; + using KafkaFlow.Clusters; using KafkaFlow.Configuration; + using KafkaFlow.Consumers; + using KafkaFlow.Consumers.WorkersBalancers; /// /// Provides extension methods over and @@ -18,7 +21,7 @@ public static class ConfigurationBuilderExtensions /// public static IProducerConfigurationBuilder WithProducerConfig(this IProducerConfigurationBuilder builder, ProducerConfig config) { - return ((ProducerConfigurationBuilder) builder).WithProducerConfig(config); + return ((ProducerConfigurationBuilder)builder).WithProducerConfig(config); } /// @@ -40,7 +43,7 @@ public static IProducerConfigurationBuilder WithCompression( CompressionType compressionType, int? compressionLevel = -1) { - return ((ProducerConfigurationBuilder) builder).WithCompression(compressionType, compressionLevel); + return ((ProducerConfigurationBuilder)builder).WithCompression(compressionType, compressionLevel); } /// @@ -51,7 +54,7 @@ public static IProducerConfigurationBuilder WithCompression( /// public static IConsumerConfigurationBuilder WithConsumerConfig(this IConsumerConfigurationBuilder builder, ConsumerConfig config) { - return ((ConsumerConfigurationBuilder) builder).WithConsumerConfig(config); + return ((ConsumerConfigurationBuilder)builder).WithConsumerConfig(config); } /// @@ -75,7 +78,7 @@ public static IConsumerConfigurationBuilder WithPartitionsAssignedHandler( /// public static IConsumerConfigurationBuilder WithPartitionsRevokedHandler( this IConsumerConfigurationBuilder builder, - Action> partitionsRevokedHandler) + Action> partitionsRevokedHandler) { return ((ConsumerConfigurationBuilder)builder).WithPartitionsRevokedHandler(partitionsRevokedHandler); } @@ -89,7 +92,7 @@ public static IConsumerConfigurationBuilder WithPartitionsRevokedHandler( /// public static IConsumerConfigurationBuilder WithPendingOffsetsStatisticsHandler( this IConsumerConfigurationBuilder builder, - Action> pendingOffsetsHandler, + Action> pendingOffsetsHandler, TimeSpan interval) { return ((ConsumerConfigurationBuilder)builder).WithPendingOffsetsStatisticsHandler(pendingOffsetsHandler, interval); @@ -105,7 +108,7 @@ public static IConsumerConfigurationBuilder WithCustomFactory( this IConsumerConfigurationBuilder builder, ConsumerCustomFactory decoratorFactory) { - return ((ConsumerConfigurationBuilder) builder).WithCustomFactory(decoratorFactory); + return ((ConsumerConfigurationBuilder)builder).WithCustomFactory(decoratorFactory); } /// @@ -118,7 +121,58 @@ public static IProducerConfigurationBuilder WithCustomFactory( this IProducerConfigurationBuilder builder, ProducerCustomFactory decoratorFactory) { - return ((ProducerConfigurationBuilder) builder).WithCustomFactory(decoratorFactory); + return ((ProducerConfigurationBuilder)builder).WithCustomFactory(decoratorFactory); + } + + /// + /// Configures the consumer to use the consumer's lag as a metric for dynamically calculating the number of workers for each application instance. + /// + /// The consumer's configuration builder. + /// The total number of workers to be distributed across all application instances. The sum of workers across all instances will approximate this number. + /// The minimum number of workers for each application instance. + /// The maximum number of workers for each application instance. + /// The interval at which the number of workers will be recalculated based on consumer's lag. + /// + public static IConsumerConfigurationBuilder WithConsumerLagWorkerBalancer( + this IConsumerConfigurationBuilder builder, + int totalWorkers, + int minInstanceWorkers, + int maxInstanceWorkers, + TimeSpan evaluationInterval) + { + return builder.WithWorkersCount( + (context, resolver) => + new ConsumerLagWorkerBalancer( + resolver.Resolve(), + resolver.Resolve(), + resolver.Resolve(), + totalWorkers, + minInstanceWorkers, + maxInstanceWorkers) + .GetWorkersCountAsync(context), + evaluationInterval); + } + + /// + /// Configures the consumer to use the consumer's lag as a metric for dynamically calculating the number of workers for each application instance. + /// The number of workers will be re-evaluated every 5 minutes. + /// + /// The consumer's configuration builder. + /// The total number of workers to be distributed across all application instances. The sum of workers across all instances will approximate this number. + /// The minimum number of workers for each application instance. + /// The maximum number of workers for each application instance. + /// + public static IConsumerConfigurationBuilder WithConsumerLagWorkerBalancer( + this IConsumerConfigurationBuilder builder, + int totalWorkers, + int minInstanceWorkers, + int maxInstanceWorkers) + { + return builder.WithConsumerLagWorkerBalancer( + totalWorkers, + minInstanceWorkers, + maxInstanceWorkers, + TimeSpan.FromMinutes(5)); } } } diff --git a/src/KafkaFlow/GlobalEvents.cs b/src/KafkaFlow/GlobalEvents.cs new file mode 100644 index 000000000..5f26d2bb7 --- /dev/null +++ b/src/KafkaFlow/GlobalEvents.cs @@ -0,0 +1,36 @@ +namespace KafkaFlow +{ + using System.Threading.Tasks; + using KafkaFlow.Configuration; + + internal class GlobalEvents : IGlobalEvents + { + private readonly Event messageConsumeStarted; + + private readonly Event messageConsumeStopped; + + private readonly Event messageProduceStarted; + + public GlobalEvents(ILogHandler log) + { + this.messageConsumeStarted = new (log); + this.messageConsumeStopped = new (log); + this.messageProduceStarted = new (log); + } + + public IEvent MessageConsumeStarted => this.messageConsumeStarted; + + public IEvent MessageConsumeEnded => this.messageConsumeStopped; + + public IEvent MessageProduceStarted => this.messageProduceStarted; + + public Task FireMessageConsumeStartedAsync(MessageEventContext context) + => this.messageConsumeStarted.FireAsync(context); + + public Task FireMessageConsumeCompletedAsync(MessageEventContext context) + => this.messageConsumeStopped.FireAsync(context); + + public Task FireMessageProduceStartedAsync(MessageEventContext context) + => this.messageProduceStarted.FireAsync(context); + } +} diff --git a/src/KafkaFlow/IMiddlewareExecutor.cs b/src/KafkaFlow/IMiddlewareExecutor.cs index 44c25c9d7..7f7580c04 100644 --- a/src/KafkaFlow/IMiddlewareExecutor.cs +++ b/src/KafkaFlow/IMiddlewareExecutor.cs @@ -5,9 +5,6 @@ namespace KafkaFlow internal interface IMiddlewareExecutor { - Task Execute( - IDependencyResolver dependencyResolver, - IMessageContext context, - Func nextOperation); + Task Execute(IMessageContext context, Func nextOperation); } } diff --git a/src/KafkaFlow/KafkaBus.cs b/src/KafkaFlow/KafkaBus.cs index bc0f128b7..8ac7a699c 100644 --- a/src/KafkaFlow/KafkaBus.cs +++ b/src/KafkaFlow/KafkaBus.cs @@ -50,16 +50,16 @@ public async Task StartAsync(CancellationToken stopCancellationToken = default) foreach (var consumerConfiguration in cluster.Consumers) { - var dependencyScope = this.dependencyResolver.CreateScope(); + var consumerDependencyScope = this.dependencyResolver.CreateScope(); var consumerManager = - this.consumerManagerFactory.Create(consumerConfiguration, dependencyScope.Resolver); + this.consumerManagerFactory.Create(consumerConfiguration, consumerDependencyScope.Resolver); this.consumerManagers.Add(consumerManager); this.Consumers.Add( new MessageConsumer( consumerManager, - dependencyScope.Resolver.Resolve())); + consumerDependencyScope.Resolver.Resolve())); if (consumerConfiguration.InitialState == ConsumerInitialState.Running) { diff --git a/src/KafkaFlow/KafkaFlow.csproj b/src/KafkaFlow/KafkaFlow.csproj index 1aa6b346b..ddf21310f 100644 --- a/src/KafkaFlow/KafkaFlow.csproj +++ b/src/KafkaFlow/KafkaFlow.csproj @@ -8,7 +8,7 @@ - + diff --git a/src/KafkaFlow/MessageContext.cs b/src/KafkaFlow/MessageContext.cs index c37d72230..55ea1de16 100644 --- a/src/KafkaFlow/MessageContext.cs +++ b/src/KafkaFlow/MessageContext.cs @@ -5,10 +5,12 @@ internal class MessageContext : IMessageContext public MessageContext( Message message, IMessageHeaders headers, + IDependencyResolver dependencyResolver, IConsumerContext consumer, IProducerContext producer) { this.Message = message; + this.DependencyResolver = dependencyResolver; this.Headers = headers ?? new MessageHeaders(); this.ConsumerContext = consumer; this.ProducerContext = producer; @@ -16,6 +18,8 @@ public MessageContext( public Message Message { get; } + public IDependencyResolver DependencyResolver { get; } + public IConsumerContext ConsumerContext { get; } public IProducerContext ProducerContext { get; } @@ -25,9 +29,8 @@ public MessageContext( public IMessageContext SetMessage(object key, object value) => new MessageContext( new Message(key, value), this.Headers, + this.DependencyResolver, this.ConsumerContext, this.ProducerContext); - - public IMessageContext TransformMessage(object message) => throw new System.NotImplementedException(); } } diff --git a/src/KafkaFlow/MiddlewareExecutor.cs b/src/KafkaFlow/MiddlewareExecutor.cs index a9fa3bc43..b2710ff9d 100644 --- a/src/KafkaFlow/MiddlewareExecutor.cs +++ b/src/KafkaFlow/MiddlewareExecutor.cs @@ -18,16 +18,15 @@ public MiddlewareExecutor(IReadOnlyList configurations) this.configurations = configurations; } - public Task Execute( - IDependencyResolver dependencyResolver, - IMessageContext context, - Func nextOperation) + public Task Execute(IMessageContext context, Func nextOperation) + { + return this.ExecuteDefinition(0, context, nextOperation); + } + + internal Task OnWorkerPoolStopped() { - return this.ExecuteDefinition( - 0, - dependencyResolver, - context, - nextOperation); + this.workersMiddlewares.Clear(); + return Task.CompletedTask; } private static IMessageMiddleware CreateInstance( @@ -36,7 +35,7 @@ private static IMessageMiddleware CreateInstance( { if (configuration.InstanceContainerId is null) { - return (IMessageMiddleware) dependencyResolver.Resolve(configuration.Type); + return (IMessageMiddleware)dependencyResolver.Resolve(configuration.Type); } var instanceContainer = dependencyResolver @@ -55,11 +54,7 @@ private static IMessageMiddleware CreateInstance( return instanceContainer.GetInstance(dependencyResolver); } - private Task ExecuteDefinition( - int index, - IDependencyResolver dependencyResolver, - IMessageContext context, - Func nextOperation) + private Task ExecuteDefinition(int index, IMessageContext context, Func nextOperation) { if (this.configurations.Count == index) { @@ -69,27 +64,25 @@ private Task ExecuteDefinition( var configuration = this.configurations[index]; return this - .ResolveInstance(dependencyResolver, index, context, configuration) + .ResolveInstance(index, context, configuration) .Invoke( context, - nextContext => this.ExecuteDefinition( - index + 1, - dependencyResolver, - nextContext, - nextOperation)); + nextContext => this.ExecuteDefinition(index + 1, nextContext, nextOperation)); } - private IMessageMiddleware ResolveInstance( - IDependencyResolver dependencyResolver, - int index, - IMessageContext context, - MiddlewareConfiguration configuration) + private IMessageMiddleware ResolveInstance(int index, IMessageContext context, MiddlewareConfiguration configuration) { return configuration.Lifetime switch { - MiddlewareLifetime.Worker => this.GetWorkerInstance(dependencyResolver, index, context, configuration), - MiddlewareLifetime.ConsumerOrProducer => this.GetConsumerOrProducerInstance(dependencyResolver, index, configuration), - _ => CreateInstance(dependencyResolver, configuration) + MiddlewareLifetime.Worker => this.GetWorkerInstance( + index, + context, + configuration), + MiddlewareLifetime.ConsumerOrProducer => this.GetConsumerOrProducerInstance( + context.ConsumerContext?.ConsumerDependencyResolver ?? context.ProducerContext?.DependencyResolver, + index, + configuration), + _ => CreateInstance(context.DependencyResolver, configuration) }; } @@ -104,14 +97,13 @@ private IMessageMiddleware GetConsumerOrProducerInstance( } private IMessageMiddleware GetWorkerInstance( - IDependencyResolver dependencyResolver, int index, IMessageContext context, MiddlewareConfiguration configuration) { return this.workersMiddlewares.SafeGetOrAdd( (index, context.ConsumerContext?.WorkerId ?? 0), - _ => CreateInstance(dependencyResolver, configuration)); + _ => CreateInstance(context.ConsumerContext.WorkerDependencyResolver, configuration)); } } } diff --git a/src/KafkaFlow/Producers/MessageProducer.cs b/src/KafkaFlow/Producers/MessageProducer.cs index b5d0c8059..8675fce29 100644 --- a/src/KafkaFlow/Producers/MessageProducer.cs +++ b/src/KafkaFlow/Producers/MessageProducer.cs @@ -8,9 +8,11 @@ namespace KafkaFlow.Producers internal class MessageProducer : IMessageProducer, IDisposable { - private readonly IDependencyResolver dependencyResolver; + private readonly IDependencyResolverScope producerDependencyScope; + private readonly ILogHandler logHandler; private readonly IProducerConfiguration configuration; private readonly MiddlewareExecutor middlewareExecutor; + private readonly GlobalEvents globalEvents; private readonly object producerCreationSync = new(); @@ -20,9 +22,11 @@ public MessageProducer( IDependencyResolver dependencyResolver, IProducerConfiguration configuration) { - this.dependencyResolver = dependencyResolver; + this.producerDependencyScope = dependencyResolver.CreateScope(); + this.logHandler = dependencyResolver.Resolve(); this.configuration = configuration; this.middlewareExecutor = new MiddlewareExecutor(configuration.MiddlewaresConfigurations); + this.globalEvents = this.producerDependencyScope.Resolver.Resolve(); } public string ProducerName => this.configuration.Name; @@ -36,16 +40,16 @@ public async Task> ProduceAsync( { DeliveryResult report = null; - using var scope = this.dependencyResolver.CreateScope(); + using var messageScope = this.producerDependencyScope.Resolver.CreateScope(); await this.middlewareExecutor .Execute( - scope.Resolver, new MessageContext( new Message(messageKey, messageValue), headers, + messageScope.Resolver, null, - new ProducerContext(topic)), + new ProducerContext(topic, this.producerDependencyScope.Resolver)), async context => { report = await this @@ -85,16 +89,16 @@ public void Produce( Action> deliveryHandler = null, int? partition = null) { - var scope = this.dependencyResolver.CreateScope(); + var messageScope = this.producerDependencyScope.Resolver.CreateScope(); this.middlewareExecutor .Execute( - scope.Resolver, new MessageContext( new Message(messageKey, messageValue), headers, + messageScope.Resolver, null, - new ProducerContext(topic)), + new ProducerContext(topic, this.producerDependencyScope.Resolver)), context => { var completionSource = new TaskCompletionSource(); @@ -132,7 +136,7 @@ public void Produce( }); } - scope.Dispose(); + messageScope.Dispose(); }); } @@ -225,9 +229,7 @@ private IProducer EnsureProducer() } else { - this.dependencyResolver - .Resolve() - .Warning("Kafka Producer Error", new { Error = error }); + this.logHandler.Warning("Kafka Producer Error", new { Error = error }); } }) .SetStatisticsHandler( @@ -241,7 +243,7 @@ private IProducer EnsureProducer() return this.producer = this.configuration.CustomFactory( producerBuilder.Build(), - this.dependencyResolver); + this.producerDependencyScope.Resolver); } } @@ -252,12 +254,10 @@ private void InvalidateProducer(Error error, DeliveryResult resu this.producer = null; } - this.dependencyResolver - .Resolve() - .Error( - "Kafka produce fatal error occurred. The producer will be recreated", - result is null ? new KafkaException(error) : new ProduceException(error, result), - new { Error = error }); + this.logHandler.Error( + "Kafka produce fatal error occurred. The producer will be recreated", + result is null ? new KafkaException(error) : new ProduceException(error, result), + new { Error = error }); } private async Task> InternalProduceAsync(IMessageContext context, int? partition) @@ -267,6 +267,9 @@ private async Task> InternalProduceAsync(IMessage var localProducer = this.EnsureProducer(); var message = CreateMessage(context); + await this.globalEvents.FireMessageProduceStartedAsync( + new MessageEventContext(context, this.producerDependencyScope.Resolver)); + try { var produceTask = partition.HasValue ? @@ -298,6 +301,9 @@ private void InternalProduce( var localProducer = this.EnsureProducer(); var message = CreateMessage(context); + this.globalEvents.FireMessageProduceStartedAsync( + new MessageEventContext(context, this.producerDependencyScope.Resolver)); + if (partition.HasValue) { localProducer.Produce( diff --git a/src/KafkaFlow/Producers/ProducerContext.cs b/src/KafkaFlow/Producers/ProducerContext.cs index b42ffceea..98e8d17fc 100644 --- a/src/KafkaFlow/Producers/ProducerContext.cs +++ b/src/KafkaFlow/Producers/ProducerContext.cs @@ -2,9 +2,10 @@ namespace KafkaFlow.Producers { internal class ProducerContext : IProducerContext { - public ProducerContext(string topic) + public ProducerContext(string topic, IDependencyResolver producerDependencyResolver) { this.Topic = topic; + this.DependencyResolver = producerDependencyResolver; } public string Topic { get; } @@ -12,5 +13,7 @@ public ProducerContext(string topic) public int? Partition { get; set; } public long? Offset { get; set; } + + public IDependencyResolver DependencyResolver { get; } } } diff --git a/src/KafkaFlow/TopicMetadata.cs b/src/KafkaFlow/TopicMetadata.cs new file mode 100644 index 000000000..cf3397cdf --- /dev/null +++ b/src/KafkaFlow/TopicMetadata.cs @@ -0,0 +1,17 @@ +namespace KafkaFlow +{ + using System.Collections.Generic; + + public record TopicMetadata + { + public TopicMetadata(string name, IReadOnlyCollection partitions) + { + this.Name = name; + this.Partitions = partitions; + } + + public string Name { get; } + + public IReadOnlyCollection Partitions { get; } + } +} diff --git a/src/KafkaFlow/TopicPartitionMetadata.cs b/src/KafkaFlow/TopicPartitionMetadata.cs new file mode 100644 index 000000000..37ecd4a8e --- /dev/null +++ b/src/KafkaFlow/TopicPartitionMetadata.cs @@ -0,0 +1,12 @@ +namespace KafkaFlow +{ + public class TopicPartitionMetadata + { + public TopicPartitionMetadata(int Id) + { + this.Id = Id; + } + + public int Id { get; } + } +} diff --git a/website/docs/guides/consumers/built-in-workers-algorithms/_category_.json b/website/docs/guides/consumers/built-in-workers-algorithms/_category_.json new file mode 100644 index 000000000..c43922f18 --- /dev/null +++ b/website/docs/guides/consumers/built-in-workers-algorithms/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Built-in Dynamic Workers Algorithms", + "position": 4, + "link": { + "type": "generated-index" + } + } + \ No newline at end of file diff --git a/website/docs/guides/consumers/built-in-workers-algorithms/consumer-lag-based-worker-balancer.md b/website/docs/guides/consumers/built-in-workers-algorithms/consumer-lag-based-worker-balancer.md new file mode 100644 index 000000000..d41b32073 --- /dev/null +++ b/website/docs/guides/consumers/built-in-workers-algorithms/consumer-lag-based-worker-balancer.md @@ -0,0 +1,52 @@ +--- +sidebar_position: 1 +--- + +# Consumer Lag-Based Worker Balancer + +The `WithConsumerLagWorkerBalancer` method in KafkaFlow is a powerful feature that allows you to dynamically calculate the number of workers for each application instance based on the consumer's lag. This feature is designed to optimize message processing, especially in scenarios where some application instances have more partitions and naturally need to deal with higher message throughput. By adjusting the number of workers based on message lag, this feature helps ensure efficient message processing and load balancing across all application instances. + +In this documentation, you'll find an overview of how this feature works, a use case example, and step-by-step instructions on how to configure it. + +:::info +This method replaces the call of `WithWorkersCount` in the consumer's setup. +::: + +## Use Case Example + +### Balancing Message Lag Across Application Instances + +Consider a scenario where you have a Kafka consumer application deployed in a distributed environment. In this environment, some application instances may have more partitions assigned to them, resulting in a higher message throughput potential. However, variations in message lag across partitions can lead to uneven workloads. + +Here's how the `WithConsumerLagWorkerBalancer` feature can help: + +- **Total Workers**: You specify the `totalWorkers`, which represents the total number of workers to be distributed across all application instances. + +- **Minimum and Maximum Instance Workers**: You set the `minInstanceWorkers` and `maxInstanceWorkers` parameters, defining the minimum and maximum number of workers allowed for each application instance. + +- **Evaluation Interval**: You define an `evaluationInterval` that determines how often the number of workers should be recalculated based on the consumer's lag. + +With this configuration, the `WithConsumerLagWorkerBalancer` feature dynamically adjusts the number of worker threads for each application instance based on the lag in the Kafka topic. Application instances with partitions experiencing higher lag will have more workers allocated to help balance the message lag across all instances. + +### Benefits in Elastic Infrastructure + +This feature is particularly valuable in elastic infrastructure environments like Kubernetes, where you need to manage the total number of workers across all application instances to prevent overloading dependencies. By dynamically adjusting worker counts, the feature ensures that each instance scales its resources efficiently, improving overall application performance and resource utilization. + +## How to Configure + +Configuring Consumer Lag-Based Worker Balancer is straightforward with the fluent interface provided by KafkaFlow. Here's a simple example: + +```csharp +.AddConsumer( + consumer => consumer + ... + .WithConsumerLagWorkerBalancer( + 50, // The total number of workers to be distributed across all application instances. + 3, // The minimum number of workers for each application instance. + 20) // The maximum number of workers for each application instance. + ... + ) +) +``` + +With this configuration, KafkaFlow will dynamically adjust the number of worker threads for each application instance, ensuring efficient message processing while considering the lag in the Kafka topic. This feature provides a powerful way to optimize resource allocation in your Kafka-based applications, making them more adaptive to varying message loads and distribution across partitions. diff --git a/website/docs/guides/consumers/dynamic-workers-configuration.md b/website/docs/guides/consumers/dynamic-workers-configuration.md new file mode 100644 index 000000000..3941d13bb --- /dev/null +++ b/website/docs/guides/consumers/dynamic-workers-configuration.md @@ -0,0 +1,46 @@ +--- +sidebar_position: 3 +--- + +# Dynamic Worker Configuration + +In this section, we will learn how Dynamic Worker Configuration works and how to configure it. In version 3 of KafkaFlow, we have introduced a new feature that allows you to dynamically configure the number of workers for a specific consumer based on a custom algorithm. This feature enables greater flexibility in managing worker threads, as each application instance can have a different number of workers, depending on the algorithm you define. + +This documentation page explains how to use and configure this feature effectively. + +## Use Case Example + +Imagine a scenario where your application's message load varies throughout the day. During peak hours, you want to allocate more worker threads to process messages quickly, and during off-peak hours, you want to reduce the number of worker threads to save resources. This dynamic adjustment can be achieved using the custom dynamic worker configuration feature. + +## How to Configure + +Configuring Dynamic Worker Configuration is straightforward with the fluent interface provided by KafkaFlow. Here's a simple example: + +```csharp +.AddConsumer( + consumer => consumer + ... + .WithWorkersCount( + (context, resolver) => + { + // Implement a custom logic to calculate the number of workers + if (IsPeakHour(DateTime.UtcNow)) + { + return Task.FromResult(10); // High worker count during peak hours + } + else + { + return Task.FromResult(2); // Lower worker count during off-peak hours + } + }, + TimeSpan.FromMinutes(15)); // Evaluate the worker count every 15 minutes + ... + ) +) +``` + +In this example, the number of worker threads is adjusted dynamically based on whether it's a peak hour or off-peak hour. You can implement your custom logic in the `WithWorkersCount`` method to suit your application's specific requirements. + +That's it! Your KafkaFlow consumer will now dynamically adjust the number of worker threads based on your custom logic and the specified evaluation interval. + +This feature provides a powerful way to optimize resource utilization and throughput in your Kafka-based applications.